虽然现在64位操作系统越来越流行,但是为了研究方便,我们还是选取32位内核研究。
而linux操作系统就多种,比较流行的有centos ubuntu等,这里选用centos6.5-i386系统。
安装系统时配置为软件开发站,方便内核编译。文件系统部分可以不使用LVM。
而内核源码采用2.6.32.26内核。
在使用linux过程中,我们很可能要安装一些软件,比如centos用yum。这需要配置好软件源。一般可以把光盘配置成软件源就可以安装大部分软件包了。也可以配置本地软件源,如本学校,或者中国的软件源。使用本地软件源下载软件包速度更快。
在调试内核的过程使用虚拟机比较方便,虚拟机用qemu vmware virtualbox bochs等等。
1.使用KDB+两个Vmware+管道调试内核
这是网上介绍的一种方法,原理是在内核启动时,加上gdb参数,使内核暂停
再用另一台虚拟机上运行gdbvmlinux。
两台虚拟机再通过虚拟串口连接。
2.使用qemu -kernel bzImage -hda rootfs.img -append "xxxx"-S -s来启动内核
需要用busybox制作根文件系统rootfs.img。
3.使用qemu启动系统
首先在vmware上安装一个操作系统(centos6.5-i386),并 在这个操作系统上编译安装内核。
然后复制这个虚拟机的硬盘。
然后在另一个虚拟机上加载这个硬盘,这时会有/dev/sdb1。
最后用qemu -kernel bzImage -hda /dev/sdb -append"xxxx"-S -s
再开一个终端运行gdb vmlinux
(gdb)target remote 127.0.0.1:1234就可以了。
这个方法的好处是在一个虚拟机中调试内核了,而且是比较完整的内核。从开机到内核加载,运行init进程,加载用户程序,到图形界面,用户登录,都有。
4.可以把一个装好的系统复制到虚拟机中去当前硬盘,或者在虚拟机中再装虚拟机,然而发现qemu可以加载vmware的磁盘之后,这些都不用了,直接像第3中方法中那样,指定/dev/sdb就能正常工作。