现在的位置: 首页 > 综合 > 正文

根文件系统的制作(YAFFS2)

2018年02月07日 ⁄ 综合 ⁄ 共 2952字 ⁄ 字号 评论关闭


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

抱歉!评论已关闭.