一、建立根文件系目录
包括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 usr
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---------"
二、建立动态链接库
动态链接库直接用arm-linux-gcc4.3.3 .../arm-none-linux-gnueabi/libc/armv4t/lib *.so.*
复制到根文件目录lib 内。
三、交叉编译Bosybox
Bosybox 是一个遵循GPL v2 协议的开源项目,它在编写过程总对文件大小进行优化,
并考虑了系统资源有限(比如内存等)的情况,使用Busybox 可以自动生成根文件系统所需的
bin、sbin、usr 目录和linuxrc 文件。
1、解压busybox
tar –zxvf busybox-1.13.3.tar.tgz –C Downloads/
2、进入源码,修改Makefile 文件:
cd /Downloads/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 到指定目录:
make CONFIG_PREFIX=/Downloads/rootfs install
在rootfs 目录下会生成目录bin、sbin、usr 和文件linuxrc 的内容。
四、建立etc 目录下的配置文件
1、etc/mdev.conf 文件,内容为空。
2、拷贝主机etc 目录下的passwd、group、shadow 文件到rootfs/etc 目录下。
3、etc/sysconfig 目录下新建文件HOSTNAME,内容为”nyist”。
4、etc/inittab 文件:(这个文件编辑好后最好备份起来备以后用,因为编译之后会消失)
#etc/inittab
::sysinit:/etc/init.d/rcS
console::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 "Kernel version:linux-2.6.32.2"
echo "nyist"
echo "Date:2013.04.18"
echo "***********************************************"
/bin/hostname -F /etc/sysconfig/HOSTNAME
(或者直接 /bin/hostname nyist)
使用以下命令改变 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\$' #ubuntu style
PATH=$PATH
HOSTNAME='/bin/hostname'
export USER LOGNAME PS1 PATH
五、制作根文件系统映像文件
使用以下命令安装好 yaffs 文件系统制作工具:
tar –zxvf mkyaffs2image.tgz –C / (注意 —C 和解压到根目录,之间有空格)
在Downloads目录下,使用命令mkyaffs2image rootfs rootfs.bin生成根文件系统映像文件。