根文件系統的製作(YAFFS2)


製作根文件系統(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 生成根文件系統映像文件。

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