爲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 如圖所示:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章