ROOTFS(根文件系统)是一种特殊的文件系统,根文件系统是内核启动时挂载的第一个文件系统,因此根文件系统包括了SylixOS启动时所必须的目录和关键性的文件,例如内核启动时所必需的etc目录,以及系统命令bin目录等,任何包括这些SylixOS启动所必须的文件都可以成为根文件系统。
SylixOS的ROOTFS属于虚拟类型的根文件系统,因为此文件系统并不存在于具体的物理磁盘中,而是系统启动后动态创建的,并将此系统保存于内存中。
系统内核启动参数函数API_KernelStartParam中提供根文件系统映射关系选项rfsmap,参数用逗号隔开,其中"/boot"、"/etc"、"/tmp"、"/apps"等为可选映射,"/"为必须映射。
例如"/boot:/media/hdd0"表示将"/boot"目录映射到"/media/hdd0";"/apps:/media/hdd2"表示将"/apps"目录映射到"/media/hdd2";"/:/media/hdd1"表示将根目录整体映射到"/media/hdd1";"/:/dev/ram"表示将根目录整体映射到ramfs中。注意"/dev/ram"类型只能使用在"/:"映射中。
根据根文件系统映射关系选项rfsmap传入的配置参数,调用API_RootFsMapInit函数进行初始化操作,保存配置参数到全局变量_G_rfsmapRoot和_G_rfsmapSubp中。
SylixOS中ROOTFS相关API接口代码位于/libsylixos/SylixOS/fs/rootfs目录下。
3.1 rootFsDrv函数安装驱动
宏rootFsDrv所定义的函数API_RootFsDrvInstall实现安装ROOTFS文件系统驱动。此函数创建字符设备驱动,提供创建、释放、打开、关闭、读、写、状态获取、ioctl、符号链接等函数接口。
- __rootFsOpen函数
ROOTFS文件节点打开或创建函数。根据不同输入的标志参数,新建文件或者增加文件的引用计数,同时支持符号链接。 - __rootFsRemove函数
ROOTFS文件节点删除函数。 - __rootFsClose函数
ROOTFS文件节点关闭函数。 - __rootFsRead函数
ROOTFS不支持读操作。 - __rootFsWrite函数
ROOTFS不支持写操作。 - __rootFsLStatGet函数
ROOTFS文件状态及属性获得函数。 - __rootFsIoctl函数
ROOTFS文件节点ioctl操作函数。包括获取文件状态、获取文件系统状态、获取一个目录信息、将文件缓存回写、改变文件访问权限、获取文件系统类型等功能。 - __rootFsSymlink函数
ROOTFS符号链接创建函数。 - __rootFsReadlink函数
ROOTFS链接文件读取函数。
3.2 rootFsDevCreate函数创建设备
宏rootFsDevCreate所定义的函数API_RootFsDevCreate实现创建ROOTFS文件系统设备。ROOTFS文件系统设备挂载目录地址为根目录"/"。
根设备创建完成之后,SylixOS内核会创建"/dev"、"/dev/pty"、"/dev/pipe"、"/dev/input"、"/dev/blk"、"/mnt"、"/media"等目录。
根目录文件系统映射函数API_RootFsMap实现其他目录结构的映射操作。根据全局变量_G_rfsmapSubp中保存的根目录文件系统映射配置参数,调用symlink函数分别对"/var"、"/usr"、"/tmp"、"/sbin"、"/root"、"/qt"、"/lib"、"/home"、"/etc"、"/boot"、"/bin"、"/apps"目录创建符号链接。
原文地址:http://blog.51cto.com/12833848/2164707
时间: 2024-10-09 18:05:01