elvalad

修仙
使用busybox构建根文件系统

当我们在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调试了。

posted on 2015-02-02 20:18  elvalad  阅读(1061)  评论(0编辑  收藏  举报