SylixOS中ROOTFS介绍

  • ROOTFS简介
    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中。
  • 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"等目录。

  • 根目录文件系统映射实现
    根目录文件系统映射函数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

    SylixOS中ROOTFS介绍的相关文章

    SylixOS中PPC架构系列介绍-Cache篇

    1. Cache简介 Cache:高速缓冲存储器,是位于CPU和主存储器DRAM(DynamicRandomAccessMemory)之间,规模较小,但速度很高的存储器,通常由SRAM(StaticRandomAccessMemory静态存储器)组成.它是位于CPU与内存间的一种容量较小但速度很高的存储器. 2. SylixOS中Cache架构 SylixOS中为了对Cache进行有效的管理,提供了API层的系统接口,隐藏硬件架构之间的差异.在不同的CPU架构下,又各自封装了Arch层的Cach

    SylixOS中pthread_cancel函数浅析

    1 知识简介 1.1 概述 取消一个线程要确保该线程能够释放其所持有的任何锁.分配的内存,使整个系统保持一致性.在很多复杂情况下要保证这种正确性是有一定困难的. 一种简单的线程取消:取消线程调用一个取消线程的函数,被取消线程死亡.在这种情况下,被取消线程所持有的的资源得不到释放.取消线程负责保证被取消者处于可安全取消状态,在一个要求可靠性高的系统中,这种保证非常困难或者无法实现.这种取消称为不受限制的异步取消. 还存在另外一种更安全的线程取消机制.一个线程可以以可靠的受控制的方式向进程的其他线程

    SylixOS中RTC设备驱动

    1.概述 本文档基于SylixOS-EVB-i.MX6Q验证平台,介绍SylixOS中RTC设备驱动实现过程,可作为在SylixOS集成开发环境下进行字符设备驱动开发的参考. 2.RTC设备驱动 2.1硬件原理 实时时钟(RTC)的主要功能是在系统掉电的情况下,利用备用电源使时钟继续运行,保证不会丢失时间信息. i.MX6Q验证平台上使用的是外置实时时钟集成电路ISL1208.硬件接线如图 2.1所示. 图 2.1 RTC硬件接线 图中,X1和X2为内部反向放大器的输入和输出引脚,要求外置一个3

    SylixOS中SD驱动实现流程

    1.概述 本文档以imx6实验平台为例,介绍SD设备驱动实现流程. 2.SylixOS中SD系统框架 SylixOS中SD协议栈(以下称作SD Stack)结构如图 2.1所示. 图 2.1 SD 协议栈结构 1)Host层:硬件控制器抽象层,SD控制器在不同的硬件平台上可能有不同的实现,因此需要实现具体的传输处理操作.所有的控制器驱动都向上(Core层)提供统一的操作接口.SD Stack已经提供了符合SD规范的标准控制器SDHCI驱动,在此情况下,控制器驱动的编写将更加简单.当然也可使用SP

    SylixOS中CPU性能计算

    1.概述 本篇主要介绍SylixOS中CPU性能计算方法. 2.简介 BogoMips是SylixOS中衡量CPU运行速度的一种标准,但只能用来粗略计算CPU的性能,并不十分精确. SylixOS中关于CPU性能计算的方法位于内核文件"libsylixos/SylixOS/kernel/interface/CpuPerf.c"中. 3.接口及具体实现 SylixOS内核中定义了用于计算CPU运算速度的相关接口. 3.1 接口介绍 #include <SylixOS.h> U

    SylixOS时间变换介绍

    [TOC] 1.概述 SylixOS中提供了时间变换相关接口,主要用于计算两个时间点之差以及根据入参时间timespec计算超时时间. 2.接口介绍 2.1 计算两个时间点之差 SylixOS中用于计算两个时间点之差的接口函数原型如下: ULONG __timespecToTickDiff (const struct timespec *ptvS, const struct timespec *ptvE); INT64 __timespecToTickDiff64 (const struct t

    SylixOS中DNS静态映射简介

    1. DNS功能简介 DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,用户能够通过域名访问互联网,而不用去记住IP地址.通过域名得到其对应的IP地址的过程叫做域名解析.每个域名都对应一个IP地址,但一个IP地址可以对应多个域名. 2. SylixOS中DNS静态映射 主机名到IP地址的映射有两种方式: 1) 静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用: 2) 动态映射,建立一套域名

    [转]C# 互操作性入门系列(一):C#中互操作性介绍

    传送门 C#互操作系列文章: C# 互操作性入门系列(一):C#中互操作性介绍 C# 互操作性入门系列(二):使用平台调用调用Win32 函数 C# 互操作性入门系列(三):平台调用中的数据封送处理 C# 互操作性入门系列(四):在C#中调用COM组件 本专题概要: 引言 平台调用 C++ Interop(互操作) COM Interop(互操作) 一.引言   这个系列是在C#基础知识中遗留下来的一个系列的,因为在C# 4.0中的一个新特性就是对COM互操作改进,然而COM互操作性却是.NET

    C#中的委托介绍

    什么是委托? 之前写了事件的介绍: 这里也把委托相关知识也总结一下. 委托是c#中类型安全的,可以订阅一个或多个具有相同签名方法的函数指针 声明委托的方式:delegate 返回值类型 委托类型名(参数) 比如: 代码如下: delegate void StringProcess(string s); 注意:这里的除了前面的delegate,剩下部分和声明一个函数一样,但是StringProcess不是函数名,而是委托类型名 声明的委托是一种类型,就像int.Person一样,如果要用的话还要声