Chinaunix首页 | 论坛 | 博客
  • 博客访问: 58470
  • 博文数量: 9
  • 博客积分: 226
  • 博客等级: 二等列兵
  • 技术积分: 131
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-22 22:43
文章分类

全部博文(9)

文章存档

2013年(2)

2012年(7)

我的朋友

分类: LINUX

2013-06-03 17:04:13

                                                                                  qemu debug linux kernel
1:  下载,编译,配置内核;
      注意:kernel默认的优化等级是-O2,强制修改kernel的Makefile到O0会编译错误,因此只能修改你需要调试的module的Makefile为-O0,只用在Makefile中加入EXTRA_CFLAGS +="-g"
       
EXTRA_CFLAGS +="-O0"
  
2:  编译,安装qemu,不要用ubuntu的apt-get 命令,ubuntu抓下来的qemu有问题;
3:  制作rootfs 

#make rootfs cd /usr/src/work
dd if=/dev/zero of=./busybox.img bs=1M count=100
mkfs.ext3 busybox.img

#mount disk

sudo mkdir /mnt/disk
sudo mount -o loop /usr/src/work/busybox.img /mnt/disk
sudo cp -rf /usr/src/work/busybox-1.17.0/_install/* /mnt/disk

#创建必须的文件系统目录

cd /mnt/disk/
sudo mkdir dev sys proc etc lib mnt

cd dev/ mknod -m 666 console c 5 1 mknod -m 666 null c 1 3 
#使用busybox默认的设置文件
sudo cp -a /usr/src/work/busybox-1.17.0/examples/bootfloppy/etc/* /mnt/disk/etc
sudo vi /mnt/disk/etc/init.d/rcS
 
#将下面内容拷贝到rcS里:
 
#! /bin/sh
/bin/mount -a
/bin/mount -t  sysfs sysfs /sys
/bin/mount -t tmpfs tmpfs /dev
#动态添加虚拟机环境中的设备
/sbin/mdev -s
#unmount disk

cd /usr/src/work
sudo umount /mnt/disk
4: 在qemu安装目录执行:
qemu-system-x86_64 -S -kernel ~/kernel/working/bzImage -hda ~/kernel/working/busybox.img -append "root=/dev/sda"
如果你的硬盘不是sata需要把"root=/dev/sda"改为"root=/dev/hda"

5: 点击qemu主界面按下Ctrl+Alt+2,在黑乎乎的窗口输入:gdbserver tcp::4321 (4321可以是任意的数字,最好不要用1234,貌似1234被系统留用了)

6: 在eclipse中新建一个c工程,然后把vmlinux作为debug的目标文件,配置好eclipse就可以debug kernel;

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