根文件系统(root filesystem)是存放运行、维护系统所必须的各种工具软件、库文件、脚本、配置文件和其他特殊文件的地方,也可以安装各种软件包。
一般根文件系统主要目录结构:
创建根文件系统步骤
1、采用Busybox创建基本命令
2、创建基本的目录 /lib /etc /var /tmp /dev /sys /proc等
3、添加glibc基本动态库
4、创建基本的设备节点
5、添加启动配置和脚本程序 /etc/inittab /etc/fstab /etc/init.d/rcS
6、测试根文件系统
7、制作根文件系统镜像
BusyBox init 执行的几个阶段:
1. 设置 init 信号句柄
2. 初始化 console(s)
3. 解析 inittab 文件, /etc/inittab
如果 /etc/inittab 不存在, BusyBox 使用缺省值:
详细内容参考 BusyBox 相关文档
4. 运行系统初始化脚本 (BusyBox use /etc/init.d/rcS作为缺省)
在这里你可以做的工作:
重新以 rw 模式挂载根文件系统
挂载附加的文件系统
初始化并启动网络接口
启动系统守护进程
5. 运行 inittab中所有action 为 wait 的命令
6. 运行 inittab 中所有action 为 once的命令
7. 循环运行:
1)运行 inittab中所有action 为 respawn 的命令
2)运行 inittab中所有action 为 askfirst的命令
嵌入式系统中常用文件系统包括有:cramfs、 squashfs、JFFS2、yaffs2、UBIFS、ext4。
它们的特点如下:
1、cramfs和 JFFS2具有好的空间特性,生成的镜像小,占用的Flash空间小,很适合
小型嵌入式产品应用;
2、cramfs和 squashfs为只读压缩文件系统,squashfs相比于 cramfs,能提供更大的压
缩比,支持更大的镜像和文件;
3、JFFS2为可读写的压缩文件系统,其挂载时间与Flash容量有关,越大的 Flash,
挂载时间越长,而且每次加载都需要将Flash 上的所有节点(JFFS2的存储单位)加
载到内存,因此内存消耗较大。由于JFFS2 是按字节访问 Flash,因此,只能用于
SPI NOR Flash,不能用于NAND Flash;
4、yaffs2文件系统是 NAND Flash 上使用较为成熟的文件系统,并且只能用于NAND
Flash,相比于JFFS2,其内存消耗较小,但挂载时间仍然与Flash容量相关,越大
的Flash,挂载时间越长;
5、UBIFS一种用在大容量 Flash 上的可读写文件系统,对 Flash 的容量依赖较小,相
比于yaffs2和 JFFS2,其挂载时间和内存消耗都小很多,可以很好的适应GB以上
大小的大容量Flash;
6、ext4是 Linux系统下的日志文件系统,适用于eMMC这类块设备存储器件。