环境:
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)系统安装好了,先去www.kernel.org上面下载一份内核源码,在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
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
Linux 3.17五大新特征
Linus Torvalds近日正式发布了Linux内核3.17版本。这意味着Linux 3.17开始接受大家的考验了。新版本带来了很多改进功能。
-
Linux Kernel 3.15加速挂起/恢复性能
继Linux 3.14在3月末正式发布以后,2014年Linux内核的第三个里程碑版本也已发布,Linux 3.15内核为用户提供了新的以及改进功能。
-
2014年关于Linux的三大预测
之前我们回顾了Linux在2013年的发展情况。相信读者一定会对Linux在2014年的发展情况比较关心。Linux.com网站近日对2014年的Linux做出了三大预测。
-
Linux基金会报告:三星和谷歌进入Linux开发贡献公司排名榜前十
谷歌与三星在贡献Linux开发方面的动作越来越频繁,这两家企业目前都是贡献该开源内核的前10大企业,Linux是从移动设备至台式机乃至服务器操作系统的基础动力源。