构建一个最基本的嵌入式根文件系统,只是为了让Linux能够正常启动,根文件系统是yaffs2的根文件系统
1.创建根文件系统的目录结构
mkdir rootfs
cd rootfs
mkdir bin dev etc lib mnt proc sbin sys tmp usr var
mkdir usr/bin usr/sbin
2.创建设备文件
cd dev/
mknod -m 666 console c 5 1
mknod -m 666 null c 1 3
3.编写etc目录下的配置文件
cd etc
touch fstab
fstab文件内容
proc /proc proc defaults 0 0
none /tmp ramfs defaults 0 0
mdev /dev ramfs defaults 0 0
sysfs /sys sysfs defaults 0 0
touch inittab
inittab文件内容
console::sysinit:/etc/init.d/rcS
::respawn:-bin/sh
::restart:/sbin/init
::ctrlaltdel:/bin/umount -a -r
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff –a
mkdir init.d
cd init.d
touch rcS
rcS文件内容
#!/bin/sh
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
/bin/mount -a
echo /sbin/mdev > proc/sys/kernel/hotplug
mdev –s
4.配置编译busybox
(1)修改busybox根目录下的Makefile
CROSS_COMPILE ?=arm-linux- //164行
ARCH ?= arm // 189行
(2)使用make menuconfig配置busybox,这只是一个简单的配置,还可裁减,去掉不用的命令
Busybox Settings --->
Build Options --->
[*] Build BusyBox as a static binary (no shared libs)
(arm-linux-) Cross Compiler prefix
Installation Options --->
[*] Don't use /usr
(/arm/linux/rootfs) BusyBox installation prefix
Linux System Utilities --->
[*] mdev
[*] Support /etc/mdev.conf
其它的暂时采用默认的配置
5.编译安装busybox
make
make install
这样在rootfs目录下会生成bin、sbin、usr和文件linuxrc的内容
6.制作yaffs2根文件系统映像文件
采用的是国嵌的制作yaffs2文件系统映像工具
./mkyaffs2image rootfs rootfs.img
最基本的yaffs2根文件系统制作完毕
将rootfs.img烧写到nand flash中,系统就可以启动起来
注意:1.要u-boot支持yaffs2根文件系统烧写,即采用nand write.yaffs2命令来烧写yaffs2根文件系统,不能直接采用nand write来烧写,不然系统读不出来yaffs2根文件系统内容
2.nand flash最小写入单位是按页写,所以烧写的时候注意地址必须是页的整数倍