Chinaunix首页 | 论坛 | 博客
  • 博客访问: 236800
  • 博文数量: 21
  • 博客积分: 796
  • 博客等级: 军士长
  • 技术积分: 305
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-16 01:03
文章分类
文章存档

2020年(1)

2017年(1)

2016年(1)

2015年(2)

2012年(9)

2011年(7)

我的朋友

分类: LINUX

2012-05-01 22:43:20

《Unstanding The Linux Kernel, 3rd Edition》是研究内核必读的书,在阅读时如果有一个有效的内核调试环境就可以随时观察内核运行状态,对理解书中的内容有一定帮助。但是,由于内核以及各种发行版本发展很快,搭建这样一个调试环境并不容易。

首先,ULK3分析的主要对象是2.6.11内核,而现在的各种发行版本采用高版本的GCC,GCC似乎不太愿意向后兼容,所以在现在这些发行版本中基本不能正常编译2.6.11内核。在网上搜索之后,发现 Fedora4 跑的是2.6.11内核、GCC 4.0.0和glibc 2.3.5,所以在搭建内核调试环境时就采用 Fedora4 作为开发机系统。

其次,搭建内核调试环境的思路和方法与《利用Qemu搭建内核调试环境》一文中的讨论基本一致,但有些细节方面还是有所区别的。

  1. QEMU的运行依赖zlib和SDL两个库,在Fedora4的安装光盘中有zlib的RPM包,直接安装即可;而为了安装SDL,可以将整个图形开发环境一并安装,这样可以避免寻找软件包依赖关系的繁琐工作。
            Desktop --> System Settings --> Add/Remove Applications
    然后选择“X Software Development” 和“GNOME Software Development”两项。
  2. 高版本的QEMU和Busybox建立在一些新的系统调用和库特性基础之上,这些系统调用在2.6.11版本的内核中并不存在;它们引用的一些库特性在glibc 2.3.5中也没有定义。所以,需要选择适当版本的QEMU和Busybox。经过一些尝试,最后选择了QEMU0.10.0和Busybox 1.15.0。
  3. 尽管Busybox的大多数工具可以在Fedora4中编译,但还是存在个别不能编译的工具。这几个工具与搭建内核调试环境并没有什么关系,可以将其剔除。

        Miscellaneous Utilities
            --> ionice
            --> watchdog

        Networking Utilities
            --> ifenslave

  4. 在目标机启动并挂载开发机根文件系统后,不能正常执行chroot命令,屏幕上不停出现:

        nfs:server is not responding,still trying

    错误信息。参考《nfs:server is not responding,still trying的解决方法》一文获知问题的原因可能在于NFS默认采用的UDP协议,尝试执行:

         mount -t nfs -o tcp,nolock 192.168.0.24:/ /mnt

    然后再执行:

         chroot /mnt /bin/bash --login

    就顺利切换了根文件系统。
阅读(2773) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~