qemu debug linux内核,用qemu调试linux内核

1)dd if=/dev/zero of=./busybox.img bs=1M count=64

2)mkfs.ext3 busybox.img

3)下载busybox,http://www.busybox.net/downloads/

#tar jxvf busybox-1.18.0.tar.bz2 (解压busybox压缩包)

#cd busybox-1.18.0 (进入到解压后的busybox源码目录)

#make menuconfig (配置busybox)

注意配置时,一定要选择静态链接选项,该选项位于:

Busybox Settings –> Build Options –> Build Busybox as a static binary

#yum install libselinux-static libsepol-static glibc-static(具体根据系统可能还需要其它的包,这是我的系统中需要安装的几个包,是链接busybox所需要的)

接下来,我们安装busybox

#make install (busybox默认安装到了其源码树目录的名字为_install的目录中)

4)制作启动img

在busybox源码目录

cp -a ./_install/*  /mnt/disk/

sudo cp -a ./examples/bootfloppy/etc /mnt/disk

sudo mkdir /mnt/disk/dev

sudo mkdir /mnt/disk/proc

sudo mkdir /mnt/disk/etc

sudo cp -ar ./examples/bootfloppy/etc /mnt/disk/etc

sudo cp -a /dev/zero /mnt/disk/dev/

sudo cp -a /dev/console /mnt/disk/dev/

sudo cp -a /dev/null /mnt/disk/dev/

sudo cp -a /dev/tty* /mnt/disk/dev/

sudo cp -a /dev/ttyS0 /mnt/disk/dev/

5)下载linux内核源码

在linux内核源码目录

make defconfig

make menuconfig

make bzImage

6)安装qemu,yum install qemu

7)启动linux

qemu-system-x86_64 -s -kernel arch/x86_64/boot/bzImage -append "root=/dev/sda" -hda busybox.img

gdb问题:

1)下载gdb7.7,http://ftp.gnu.org/gnu/gdb/

2)到gdb源码目录,vim gdb/remote.c

if (buf_len > 2 * rsa->sizeof_g_packet)

error (_("Remote 'g' packet reply is too long: %s"), rs->buf);

改成:

if (buf_len > 2 * rsa->sizeof_g_packet) {

rsa->sizeof_g_packet = buf_len ;

for (i = 0; i < gdbarch_num_regs (gdbarch); i++) {

if (rsa->regs[i].pnum == -1)

continue;

if (rsa->regs[i].offset >= rsa->sizeof_g_packet)

rsa->regs[i].in_g_packet = 0;

else

rsa->regs[i].in_g_packet = 1;

}

}

3)重新编译安装gdb:

./configure --prefix=/usr/local/mygdb

make && make install

4)使用新gdb:

/usr/local/mygdb/bin/gdb vmlinux

说明:以上只是个人的笔记,没有详细说明每个过程,如果跟着做没成功请谅解,本人也是网上找了很多资料参考才成功的,尤其是不同环境不同linux内核版本问题就不一样了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值