当我们在Qemu上运行起来自己编译的内核之后,需要使用busybox构建一个文件系统,将此文件系统挂载上去就可以使用busybox提供的各种命令了。
1.编译安装busybox
源码下载地址:http://www.busybox.net/downloads/
编译安装过程:
tar jxvf busybox-1.23.1.tar.bz2 cd busybox-1.23.1 make menuconfig 选择静态编译 BusyboxSettings->Build options->Build Busybox as a static binary make
编译完成之后先不要直接make install,我们先构建一个ext4的文件系统
dd if=/dev/zero of=rootfs.img bs=1M count=32 mkfs.ext4 rootfs.img 创建一个rootfs的目录 mkdir rootfs 将rootfs.img挂载到此目录上 sudo mount -t ext4 -o loop rootfs.img rootfs 切换到rootfs目录 sudo cd rootfs sudo mkdir dev proc sys
再回到编译busybox的目录,将busybox安装到此目录下
make install CONFIG_PREFIX=~/Qemu/rootfs cd ~/Qemu/rootfs sudo umount rootfs
2.以rootfs为根文件系统在Qemu下运行编译处的内核
在一个终端下执行
qemu-system-i386 -S -kernel bzImage -hda rootfs.img -append "root=/dev/sda init=/bin/ash rw" -monitor stdio 在qemu命令下打开gdbserver gdbserver tcp::1234
在编译处内核的目录下用gdb打开vmlinux
gdb vmlinux 在gdb命令下执行 target remote localhost:1234 continue
这样我们自己编译的内核以及文件系统就可以用gdb+qemu调试了。