cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
阅读:6154回复:12

[原创]如何在vmware上搭建环境调试内核

楼主#
更多 发布于:2007-04-26 18:36
如何在vmware上搭建环境调试内核
author: cyliu

一 安装linux虚拟机

1 在vmware上安装新的linux虚拟机.创建一个新的虚拟机,并一定要用IDE硬盘

2 从Internet下载源代码
   1、linux-2.6.18(www.kernel.org -ftp站点)
   2、kgdb-2.6.18 patch
   3、gdbmod-2.4(可选):调试module使用此gdb
  
3 编译内核
   a、将kgdb-2.6.18补丁打到Linux内核源码里。注意按照顺序打patch,因为此版本的patch是散的,需要手动一个一个添加,共12个文件。
  
   b、编译内核(make clean , make mrproper, make menuconfig, make, make modules , make modules_install, make install)
  
       在内核配置菜单的Kernel hacking选项中选择kgdb调试项,例如:
       [*] KGDB: kernel debugging with remote gdb                              
       [*]   KGDB: Console messages through gdb                                
            Method for KGDB communication (KGDB: On generic serial port (8250)) --->    
       < >   KGDB: On ethernet                                          
         [*] Simple selection of KGDB serial port                            
         (115200) Debug serial port baud rate                                  
         (0) Serial port number for KGDB  
        
       在device drivers选择项中选择kgdb相关项,例如
        Character devices-->
          KGDB: On generic serial port(8250)
          
    c、安装gdbmod-2.4
          
4 修改grub.conf
       例如:
title Fedora Core (2.6.16)
         root (hd0,0)
         kernel /vmlinuz-2.6.16 ro root=/dev/VolGroup00/LogVol00
         initrd /initrd-2.6.16.img
                      
       改为:
title Fedora Core (2.6.18)
         root (hd0,0)
         kernel /vmlinuz-2.6.18 ro root=/dev/VolGroup00/LogVol00 kgdb8250=0,115200 (kgdbwait)
         initrd /initrd-2.6.18.img
        
5 请检验新编译的内核是否可用。如果不能启动,可能是编译选项没有选好。如果没有问题,关闭这个linux虚拟机,进入下一步。

二 Clone linux虚拟机(请参考vmware手册)

1 Clone linux.在vmware上选择刚安装的linux虚拟机,然后vmware的clone方式。建议选择链接copy.
    
2 两台虚拟机:一台作target机,一台作develop机。

3 配置两台虚拟机串行通信
        a、在每个虚拟机中分别添加一个串口设备,并配置成命名管道 \\.\pipe\com_1
        
        b、指定target虚拟机的串口为server端,并选择"The other end is a virtual machine"属性,对于IO mode属性,选中"Yield CPU on poll"复选择框;
        
        c、指定develop虚拟机的串口为client端,并选择"The other end is a virtual machine"属性。
        
4 注意:这里的delelop的Linux虚拟机不要使用打了kgdb patch的linux系统,否则无法配置串行口。因为kgdb占用了ttyS0口,禁止使用。我这里使用的是2.6.16内核的系统。
  
三 调试内核(以调试网络功能为例)
1、启动target虚拟机

2、在develop虚拟机的linux-2.6.18源代码目录下,执行下面的命令:
       gdb ./vmlinux
       (gdb)    set remotebaud 115200
       (gdb)    target remote /dev/ttyS0
       (gdb)    break ip_rcv
       (gdb)    c
3、给target 虚拟机发数据包(如ping)
  
4、现在就像调试应用程序那样调试内核了。
走走看看开源好 Solaris vs Linux
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
沙发#
发布于:2007-05-29 16:51
作了一些修改,主要是调试内核变为2.6.18,同时给出一些注意事项.
走走看看开源好 Solaris vs Linux
边城浪子
驱动牛犊
驱动牛犊
  • 注册日期2006-05-16
  • 最后登录2010-08-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望59点
  • 贡献值0点
  • 好评度58点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-06-08 15:10
版主可否贴一份好用的2.6.18在vmware上的配置出来.
honghui8704
驱动牛犊
驱动牛犊
  • 注册日期2006-11-11
  • 最后登录2007-07-04
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-06-25 22:07
我用的是debian etch 有点不明白的是:

kernel /vmlinuz-2.6.18 ro root=/dev/VolGroup00/LogVol00
kernel /vmlinuz-2.6.18 ro root=/dev/VolGroup00/LogVol00 kgdb8250=0,115200 (kgdbwait)
这两个是什么意思?
驱网无线,快乐无限
ldljlzw
驱动中牛
驱动中牛
  • 注册日期2002-03-16
  • 最后登录2014-01-02
  • 粉丝1
  • 关注0
  • 积分1021分
  • 威望372点
  • 贡献值0点
  • 好评度187点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-06-26 09:56
我认为最好把映像文件放上来,这样就省了很多事!
honghui8704
驱动牛犊
驱动牛犊
  • 注册日期2006-11-11
  • 最后登录2007-07-04
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-06-27 11:00
那个kgdb-2.6.18的补丁哪来的 好像最新的也就是2.6.16.5的
驱网无线,快乐无限
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
6楼#
发布于:2007-06-27 17:02
kgdb-2.6.18网站上有,但不是打包的,分散的。需要一个个按照顺序Pack,顺序不能错,否则内核编译不过。
走走看看开源好 Solaris vs Linux
soonjust
驱动牛犊
驱动牛犊
  • 注册日期2007-02-03
  • 最后登录2011-08-17
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-06-29 00:46
呵呵,正合我意,感谢ing
honghui8704
驱动牛犊
驱动牛犊
  • 注册日期2006-11-11
  • 最后登录2007-07-04
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-07-04 19:50
kgdb-2.6.18网站上有,但不是打包的,分散的。需要一个个按照顺序Pack,顺序不能错,否则内核编译不过。
=========================================
哪个网址 麻烦说下 kgdb.linsyssoft.com上面我找不到 谢谢
驱网无线,快乐无限
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
9楼#
发布于:2007-07-04 22:36
走走看看开源好 Solaris vs Linux
hxp2003
驱动牛犊
驱动牛犊
  • 注册日期2007-08-29
  • 最后登录2008-05-06
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2008-01-14 11:26
cyliu你好

我急需一份2.6.18.1的补丁,网上说好像没有2.6.18.1的补丁,其他的版本,比如2.6.18.2 .3 。。的也可以,但是你说的网站我上不去,能不能麻烦你发一份给我?我的邮箱:hxp2003@163.com

谢谢
xiaopengyp
驱动牛犊
驱动牛犊
  • 注册日期2005-08-30
  • 最后登录2008-03-10
  • 粉丝0
  • 关注0
  • 积分520分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2008-02-15 12:06
好帖!
hotcancer
驱动牛犊
驱动牛犊
  • 注册日期2009-03-28
  • 最后登录2009-04-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望71点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2009-03-28 15:18
我不明白的是 两台PC或者两个linux都要安装到2.6.18吗?
游客

返回顶部