製作根文件系統(Yaffs2)
製作工具:busy_box (從 http://www.busybox.net/downloads/ 下 載 busybox)
材料:root_qtopia-20100108.tar.gz (或者其它庫文件 如glibc)
一、建立根文件系目錄
包括root dev etc boot tmp var sys proc lib mnt home usr 及一些下層子目錄
可創建一個shell腳本creat_rootfs_bash完成:
#!/bin/sh
echo "------Create rootfs directons start...--------"
mkdir rootfs
cd rootfs
echo "--------Create root,dev....----------"
mkdir root dev etc boot tmp var sys proc lib mnt home
mkdir etc/init.d etc/rc.d etc/sysconfig
mkdir usr/sbin usr/bin usr/lib usr/modules
echo "make node in dev/console dev/null"
mknod -m 600 dev/console c 5 1
mknod -m 600 dev/null c 1 3
mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp
mkdir var/lib var/lock var/run var/tmp
chmod 1777 tmp
chmod 1777 var/tmp
echo "-------make direction done---------"
二、建立動態鏈接庫
動態鏈接庫直接用友善之臂的,先解壓友善之臂的根文件包,拷貝 lib 的內容到新建的
根文件目錄lib 內。
tar –zxvf root_qtopia.tgz –C /opt/st yarm
cp –rfd /opt/st yarm/root_qtopia/lib/* /opt/st yarm/rootfs/lib/
三、交叉編譯Bosybox
Bosybox 是一個遵循GPL v2 協議的開源項目,它在編寫過程總對文件大小進行優化,
並考慮了系統資源有限(比如內存等)的情況,使用Busybox 可以自動生成根文件系統所需的
bin、sbin、usr 目錄和linuxrc 文件。
1、解壓busybox
tar –zxvf busybox-1.13.3.tar.tgz –C /opt/st yarm
2、進入源碼,修改Makefile 文件:
cd /opt/st yarm/busybox-1.13.3
修改:
CROSS_COMPILE ?=arm-linux- //第164 行
ARCH ?=arm //第189 行
3、配置busybox
友善之臂提供的缺省配置文件:fa_config(輸入命令“cp fa.config .config”可以調用該配置),一般用戶直接使用缺省文件就可以了,這樣生成的busybox 和root_qtopia 中的是完全一致的。但爲了對它的配置瞭解更多一些,可以參考原文作者的如下步驟:
輸入 make men onfig 進行配置
(1)、Busybox Settings--->
(2)、Linux Module Utilities--->
(3)、在busybox 中配置對dev 下設備類型的支持
Linux System Utilities --->
[*]Support /etc/mdev.conf
[*]Support command execution at device addition/removal
4、編譯busybox
編譯busybox 到指定目錄:
cd /opt/st yarm/busybox-1.13.3
make CONFIG_PREFIX=/opt/st yarm/rootfs install
在rootfs 目錄下會生成目錄bin、sbin、usr 和文件linuxrc 的內容。
四、建立etc 目錄下的配置文件
1、etc/mdev.conf 文件,內容爲空。
2、拷貝主機etc 目錄下的passwd、group、shadow 文件到rootfs/etc 目錄下。
3、etc/sysconfig 目錄下新建文件HOSTNAME,內容爲”H3-St io”。
4、etc/inittab 文件:(這個文件編輯好後最好備份起來備以後用,因爲編譯之後會消失)
#etc/inittab
::sysinit:/etc/init.d/rcS
s3c2410_serial0::askfirst:-/bin/sh #注意這一行不能寫成s3c2440_serial0 否則內核在啓動出錯
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a –r
5、etc/init.d/rcS 文件:
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
echo "----------munt all----------------"
mount –a
echo /sbin/mdev>/proc/sys/kernel/hotplug
mdev -s
echo "***********************************************"
echo "****************St ying ARM*********************"
echo "Kernel version:linux-2.6.29.1"
echo "St ent:H ng h hai"
echo "Date:2009.10.1"
echo "***********************************************"
/bin/hostname -F /etc/sysconfig/HOSTNAME
(或者直接 /bin/hostname H3-St io )
使用以下命令改變 rcS 的執行權限:
Chmod +x rcS
6、etc/fstab 文件:
#device mount-point type option dump fsck order
proc /proc proc defaults 0 0
none /tmp ramfs defaults 0 0
sysfs /sys sysfs defaults 0 0
mdev /dev ramfs defaults 0 0
7、 etc/profile 文件:
#Ash profile
#vim:syntax=sh
#No core file by defaults
#ulimit -S -c 0>/dev/null 2>&1
USER="id -un"
LOGNAME=$USER
PS1='[\u@\h=W]#'
PATH=$PATH
HOSTNAME='/bin/hostname'
export USER LOGNAME PS1 PATH
五、製作根文件系統映像文件
使用以下命令安裝好 yaffs 文件系統製作工具:
tar –zxvf mkyaffs2image.tgz –C / (注意 —C 和解壓到根目錄,之間有空格)
在/opt/st yarm 目錄下,使用命令mkyaffs2image-128M rootfs rootfs.img 生成根文件系統映像文件。