SylixOS中ROOTFS介绍

  1. ROOTFS简介
    ROOTFS(根文件系统)是一种特殊的文件系统,根文件系统是内核启动时挂载的第一个文件系统,因此根文件系统包括了SylixOS启动时所必须的目录和关键性的文件,例如内核启动时所必需的etc目录,以及系统命令bin目录等,任何包括这些SylixOS启动所必须的文件都可以成为根文件系统。
    SylixOS的ROOTFS属于虚拟类型的根文件系统,因为此文件系统并不存在于具体的物理磁盘中,而是系统启动后动态创建的,并将此系统保存于内存中。

  2. 根目录文件系统映射配置参数
    系统内核启动参数函数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中。

  3. ROOTFS驱动实现分析
    SylixOS中ROOTFS相关API接口代码位于/libsylixos/SylixOS/fs/rootfs目录下。
    3.1 rootFsDrv函数安装驱动
    宏rootFsDrv所定义的函数API_RootFsDrvInstall实现安装ROOTFS文件系统驱动。此函数创建字符设备驱动,提供创建、释放、打开、关闭、读、写、状态获取、ioctl、符号链接等函数接口。

    1. __rootFsOpen函数
      ROOTFS文件节点打开或创建函数。根据不同输入的标志参数,新建文件或者增加文件的引用计数,同时支持符号链接。
    2. __rootFsRemove函数
      ROOTFS文件节点删除函数。
    3. __rootFsClose函数
      ROOTFS文件节点关闭函数。
    4. __rootFsRead函数
      ROOTFS不支持读操作。
    5. __rootFsWrite函数
      ROOTFS不支持写操作。
    6. __rootFsLStatGet函数
      ROOTFS文件状态及属性获得函数。
    7. __rootFsIoctl函数
      ROOTFS文件节点ioctl操作函数。包括获取文件状态、获取文件系统状态、获取一个目录信息、将文件缓存回写、改变文件访问权限、获取文件系统类型等功能。
    8. __rootFsSymlink函数
      ROOTFS符号链接创建函数。
    9. __rootFsReadlink函数
      ROOTFS链接文件读取函数。

    3.2 rootFsDevCreate函数创建设备
    宏rootFsDevCreate所定义的函数API_RootFsDevCreate实现创建ROOTFS文件系统设备。ROOTFS文件系统设备挂载目录地址为根目录"/"。
    根设备创建完成之后,SylixOS内核会创建"/dev"、"/dev/pty"、"/dev/pipe"、"/dev/input"、"/dev/blk"、"/mnt"、"/media"等目录。

  4. 根目录文件系统映射实现
    根目录文件系统映射函数API_RootFsMap实现其他目录结构的映射操作。根据全局变量_G_rfsmapSubp中保存的根目录文件系统映射配置参数,调用symlink函数分别对"/var"、"/usr"、"/tmp"、"/sbin"、"/root"、"/qt"、"/lib"、"/home"、"/etc"、"/boot"、"/bin"、"/apps"目录创建符号链接。

猜你喜欢

转载自blog.51cto.com/12833848/2164707