在上一篇文章中,搭建的arm平台只有一个最小化的initramfs,只是可以验证可以启动,但没有实用性,busybox是嵌入式环境中的杀手级应用,将busybox集成进initramfs变得非常实用。
首先要安装qemu, arm toolchain,还要下载busybox源码。我下载的是busybox-1.18.5.tar.bz2
选择将busybox编译成静态文件, “Busybox Settings –> Build Options”
编译安装完成后,会在当前目录下生成_install目录,此为默认的安装目录,也可以在Busybox Settings中设置为别的目录。现在制作initramfs。
现在用qemu模拟。
这里如果不加rdinit=/bin/sh,那么/linuxrc将会试图挂载根文件系统,并且运行新根文件系统中的init,由于我们没有另外的真正的根文件系统,所以使用rdinit=/bin/sh,启动到sh中,敲入回车,将会出现shell命令提示符。在当前root中,没有/proc,/sys存在,所以例如mount等这些以来/proc, /sys的命令不能正常工作。在虚拟机中执行
也可以将其加入到启动脚本中,关闭虚拟机,然后修改versatile-busybox
现在用qemu模拟
注意这里的rdinit=/sbin/init,前面之所以是rdinit=/bin/sh,是因为/sbin/init会执行/etc/init.d/rcS,而前面并没有创建这个文件,所以会打印很多错误!特别是由于没有启动mdev。
详细请参考 http://balau82.wordpress.com/2010/03/27/busybox-for-arm-on-qemu/