本文的操作指导主要源于以下链接中,兄的经验总结。
%3D2%26filter%3Ddigest%26digest%3D1&page=1
以下是我个人的一些总结,主要就是关于环境搭建的小小总结体会,欢迎挑刺。
环境:
Host机:CentOS 6.2
虚拟机:VMware 9.0版本
Guest环境:CentOS 6.2
调试内核版本:linux 2.6.34.14
环境准备:
1)在安装好linux的机器上,安装VMware虚拟机软件,然后往虚拟机中安装linux系统(Guest机务必选择development环境,免得还得自己安装编译器等一堆东西),关于linux系统我这里都使用了CentOS。
2)系统安装好了,先去上面下载一份内核源码,在VMware内的Guest机编译该内核,然后替换上去,具体VMware上面编译内核的一些总结,可以参照我前面写的一篇博文,关于在VMware上面编译内核的。
3)内核编译好了,然后把整套编译结果连同源码一起拷贝出来到host机上面来,存放路径和guest机保持一致,比如我的是:/usr/src/linux-2.6.34.14(要拷贝的东西有点多,或许可以稍微清掉一些垃圾,不过我这里偷懒了,完全拷贝)。至于如何拷贝这个可以使用vmware的文件夹共享来实现,或者自己搭建ftp都可以。
4)关于设置,在host机中,往guest的vmware配置文件(即后缀名为.vmx的文件)追加一个字符串。 通常vmx存放的目录为/root/vmware/***/**.vmx,很容易找到的,可以用vim打开编辑,加入:debugStub.listen.guest32="1",注意:如果你的GUEST是在x86-64上运行的, 那么把上面这行的就是debugStub.listen.guest64="1"。
调试操作:
1)在host机上面先行启动VMware,然后在命令行里面cd到/usr/src/linux-2.6.34.14目录下面,gdb进入调试环境;
2)gdb调试环境中,加载内核映像文件;
命令:file vmlinux
3)连接VMware挑测环境;
命令:target remote localhost:8832
PS:如果guest机系统是64位的,这里的localhost:8832就改成localhost:8864
4)现在可以在VMware里面启动系统了,为了方便挑测,可以把grub改了,只引导进入到编译的内核中,避免在VMware里面来回切换。
如果现在在VMware启动系统,系统会在进入VMware的虚拟BIOS前停住,就这样,可以开始打断点做各种操作了。
说明:
我这里只是搭建了一个学习linux的内核环境,没有添加其他的自己的代码,以后学习有了心得再写点东西了。
自己的一些操作截图:
现在是刚刚启动VMware里面的guest机时的情况。
尝试打了个断点,断在系统初始化的地方start_kernel。
好了,不早了,先睡了,改天有了其他的内核研究心得再与各位交流了。
阅读(3322) | 评论(0) | 转发(0) |