Chinaunix首页 | 论坛 | 博客
  • 博客访问: 955605
  • 博文数量: 376
  • 博客积分: 154
  • 博客等级: 入伍新兵
  • 技术积分: 1558
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-13 08:42
文章分类

全部博文(376)

文章存档

2014年(11)

2013年(88)

2012年(260)

2011年(17)

分类: LINUX

2013-04-16 15:15:00

原文地址:基于VMware调试linux内核 作者:jean_leo

本文的操作指导主要源于以下链接中,兄的经验总结。
%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。

好了,不早了,先睡了,改天有了其他的内核研究心得再与各位交流了。


    
阅读(716) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~