环境搭建:基于VMware调试linux内核

日期: 2013-04-17 来源:TechTarget中国

  环境:

  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机时的情况
刚刚启动VMware里面的guest机时的情况

打了个断点,断在系统初始化的地方start_kernel
打了个断点,断在系统初始化的地方start_kernel

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐