在QEMU上用Busybox模拟ARM文件系统的步骤

电子说

1.3w人已加入

描述

1.下载最新的 busybox代码,解压。

2. 编译busybox

cd busybox-1.21.1/

export ARCH=arm

export CROSS_COMPILE=arm-linux-gnueabi-

make defconfig

make install

之后,会生成一个 _install 目录,里面是一个root file system.

默认情况下,生成的busybox二进制文件是动态链接的。所以,需要拷贝用到的动态库到根文件系统里面。

可以用如下的命令查看用到了哪些动态库:

qemu

然后,把相应的库从arm-linux-gnueabi/libc/lib/拷到 busybox-1.21.1/_install/lib里面。

另外,在 _install下,执行下面的命令:

$ cd _install

$ mkdir proc sys dev etc etc/init.d

$ cd 。。

然后,创建一个新文件 _install/etc/init.d/rcS:

#!/bin/sh

mount -t proc none /proc

mount -t sysfs none /sys

/sbin/mdev -s

$ chmod +x _install/etc/init.d/rcS

/sbin/init会执行/etc/init.d/rcS.

最终的部分 RFS如下:

qemu

3. 生成 ramdisk文件:

find 。 | cpio -o --format=newc 》 。。/。。/。。/initramfs

4.测试。执行

$ qemu-system-arm -M vexpress-a9 -kernel 。/linux-3.2/arch/arm/boot/zImage -initrd 。。/initramfs -append “root=/dev/ram rdinit=/sbin/init”

可以进入到arm 系统

qemu

如果想让log到主机终端里,可以使用下面的命令:

$ qemu-system-arm -M vexpress-a9 -kernel 。/linux-3.2/arch/arm/boot/zImage -initrd 。。/initramfs -serial stdio -append “cons

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分