为vexpress制作根文件系统

qemu的vexpress支持SD卡,准备以SD卡做为根文件系统启动vexpress。

1,准备SD的映像文件

使用dd命令制作一个128M的空文件

2,将映像文件格式化成ext2文件系统格式

3,将格式化好后的映像文件挂载到制定目录下,查看是否格式化成功

如果能挂载成功,并且挂载的目录下有lost+found目录,说明文件系统格式化成功。

4,下载编译busybox

首先在www.busybox.net上下载最新稳定的源代码。

与内核一样,执行配置编译选项命令:

make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig

配置成编译独立运行的程序,就是选择静态链接:

Busybox Setting---->

Build Options---->

配置安装目录,如安装在上述制作的空文件系统里面:

Busybox Setting---->

Installation Options---->

保存后退出,先后执行make ARCH=arm CROSS_COMPILE=arm-linux-

编译完成后执行make ARCH=arm CROSS_COMPILE=arm-linux- install,查看文件系统的内容如下:

 

5,配置根文件系统

busybox生成了bin,sbin与usr目录,但对于根文件系统来说,这些目录还不够。

5.1 手动完善根文件系统目录

5.2 配置启动脚本

拷贝busybox源代码目录中的examples/inittab文件,或者手动建立该文件,添加如下内容:

       ::sysinit:/etc/init.d/rcS
       ::askfirst:/bin/sh
       ::ctrlaltdel:/sbin/reboot
       ::shutdown:/sbin/swapoff -a
       ::shutdown:/bin/umount -a -r
       ::restart:/sbin/init

新建目录/etc/init.d,并在该目录下新建rcS文件,加入如下内容:

#! /bin/sh

mount -a

mount -o remount,rw /
mdev -s

mdev根据内核的uevent事件,创建/dev目录下的设备节点。 mdev依赖于sysfs文件系统,所以先用mount -a挂载文件系统。

使用sd卡作为根文件系统,要求根文件系统可以读写,内核在启动过程中是以只读方式挂载根文件系统的,所以这里需要把根文件系统重新挂载成可读写的。

因为etc/init.d/rcS是脚本文件,需要可执行权限:

chmod a+x ./etc/init.d/rcS


mount命令需要/etc/fstab文件,新建该文件并加入如下内容:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
sysfs        /sys        sysfs    nodev            0        0   

最后,因为是准备根文件系统,修改所有文件的所有者为root:

sudo chown root:root * -R


完成修改,卸载掉挂载:

sudo umount ./rootfs


6,测试根文件系统

使用命令测试根文件系统的运行:

qemu-system-armw.exe -M vexpress-a9 -kernel e:\SourceCode\zImage -m 512M -append "root=/dev/mmcblk0" -sd e:\SourceCode\ext2.img

 

运行后查看由busybox动态创建的文件 /dev  /sys /proc 如图所示:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值