一:什么是文件系统
文件系统作用:管理磁盘上的文件
nfs文件系统: 在不同机器、不同操作系统之间通过网络共享文件的技术
应用: 在嵌入式Linux系统的开发调试阶段,可利用该技术在主机上建立基于nfs的根文件系统,挂载到嵌入式设备,可以很方便地修改根文件系统的内容
虚拟文件系统(VFS) 为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统——VFS(Virtual File System),为各类文件系统提供统一的操作界面和应用编程接口
VFS只存在于内存中,不存在于任何外存空间
VFS在系统启动时建立,在系统关闭时消亡
二:根文件系统
【1】根文件系统特点:
Linux系统启动后,首先由内核挂载的文件系统称为根文件系统,其中包括系统启动所必需的文件
在根文件系统的最顶层目录中,每个目录都有其具体的目的和用途
根文件系统的类型没有限制,可以是Linux系统所支持的任意稳定可靠的文件系统类型
在Linux下所有磁盘被挂载后才能使用,这个挂载的目录被称为挂载点或安装点,然后通过此目录来访问这个分区上的文件或其它目录
Windows操作系统:分区和目录的关系 --->>> 目录属于分区 linux操作系统:分区和目录的关系 --->>> 分区属于目录
【2】linux操作系统目录结构
【3】总结
制作根文件系统的过程,其实就是构造以上目录及系统启动所必需文件的过程 构建嵌入式根文件系统的工作,也就从构建这几个文件夹开始
三:根文件系统制作
【1】根文件系统构建介绍
挂载根文件系统时,传递给内核的参数:
bootargs = root=/dev/mmcblk0p8 rw rootfstype=ext4 init=/linuxrc lcd=wy070ml tp=gslx680
各参数含义: root:指定根文件系统在磁盘分区中的位置 init:指定Linux内核启动完毕后调用的第一个用户态程序 console:指定内核启动后首选的控制台设备(非必须)
/etc/inittab决定了接下来将要启动的脚本、shell和应用程序
/etc/inittab配置文件结构
每一行都指定一个子进程,并确定了进程运行方式
用冒号来分隔各字段的属性。
具体格式: : : :
id:表示这个子进程使用的控制台,如果省略,则使用与linuxrc进程一样的控制台
runlevels: 该字段主要用于PC机,对于嵌入式系统暂时没有处理,可以省略
action: 表示linuxrc进程将如何控制这个子进程,具体取值见后面的表格
process: 表示要启动的可执行程序或脚本,如果process字段前面有“-”字符,说明这个应用支持“交互”
【2】构建根文件系统工具——busybox
获取busybox:http://www.busybox.net
1.创建根目录结构——符合文件层次结构标准
2.使用busybox构建/bin、/sbin的命令和init进程linuxrc
配置:make defconfig特殊选项配置:make menuconfig
3.进入到交叉编译工具中,将相关动态库拷贝到rootfs/lib目录中。
4.完成etc目录下配置文件的编写:
inittab:用来作为 linuxrc 的配置脚本
init.d/rcS: inittab 启动的第一个脚本一般用来挂载系统必需的文件系统、必要的设备连接、设置 IP 地址、启动其他脚本等默认仅有
mount –afstab: 执行 mount –a 时,按照此文件挂载文件系统
profile:登陆完 shell 后自动执行此脚本,一般用来配置用户的登录环境
5.用户管理相关配置文件编写