鸿蒙内核源码分析(根文件系统) | 先挂到/上的文件系统

FHS | 文件系统层次结构标准

  • 在 [挂载目录篇] 中提到内核为了兼容文件系统的差异性,引出了目录树的概念,目录树是由各个文件系统像搭积木一样拼接起来的,任何文件系统只需要挂载到一个目录上就能对接进来,内核抽象出统一的挂载接口,各文件系统自己实现这些接口就行. 既然目录如此重要, 就需要规范管理, 类Unix都遵循 FHS 规范,鸿蒙同样遵循.

  • 文件系统层次结构标准(英语:Filesystem Hierarchy Standard,FHS)定义了Linux操作系统中的主要目录及目录内容。FHS由Linux基金会维护。 当前版本为3.0版,于2015年发布。基本目录如下:

    /       根目录
    /home   用户主文件夹
    /etc    系统主要的配置文件几乎都放置在这个目录内
    /root   系统管理员(root)的主文件夹
    /bin    可以被 root 与一般账号所使用
    /sbin   这些命令只有 root 才能够利用来“设置”系统
    /lib    放置的则是在开机时会用到的函数库
    /opt    用于安装第三方应用程序的
    /dev    任何设备与接口设备都是以文件的形式存在于这个目录当中
    /proc   一个虚拟的文件系统, 它放置的数据都是在内存当中
    /sys    也是一个虚拟的文件系统,主要也是记录与内核相关的信息
    /media  放置的就是可删除的设备
    /mnt    暂时挂载某些额外的设备
    /srv    一些网络服务启动之后,这些服务所需要取用的数据目录
    /tmp    正在执行的程序暂时放置文件的地方, 系统会不定期删除

    /usr    “UNIX 操作系统软件资源” 所放置的目录
       /usr/bin/:   绝大部分的用户可使用命令都放在这里
      /usr/include/:C/C++等程序语言的头文件 header 与包含文件include放置处
      /usr/lib/:   包含各应用软件的函数库、目标文件以及一些不被一般用户惯用的执行文件或脚本
      /usr/local/: 系统管理员在本机自行安装下载的软件建议安装到此目录
      /usr/sbin/:  非系统正常运行所需的系统命令
      /usr/share/: 放置共享文件的地方
      /usr/src/:   一般源码建议放置到这里

    /var    该目录主要针对常态性可变动文件
        /var/cache/: 应用程序本身运行过程中会产生的一些暂存文件
      /var/lib/:   程序本身执行的过程中,需要的数据文件放置的目录
      /var/lock/:  目录下的文件资源一次只能被一个应用程序所使用
      /var/log/:   放置登录文件的目录
      /var/mail/:  放置个人电子邮件信箱的目录
      /var/run/:   某些程序或服务启动后的PID目录
      /var/spool/: 放置排队等待其他应用程程序使用的数据

什么是根文件系统

看网上有很多的文章,但基本全是一大抄,说是内核启动时所mount的第一个文件系统,这话固然是没错, 但想重新定义下这个概念, 所谓 根文件系统 就是先挂到根目录/上的文件系统. 核心是根目录 //目录并不必先属于哪个文件系统,否则就是先有蛋还是先有鸡的问题,所以别被蒙圈了,它跟其他文件系统没有任何区别,只是它先来,把坑/给占了,后续来的只能挂到它下面的目录上,最终形成整颗目录树.

理解了上面,就容易明白以下几个问题:

  • 一个系统可以存在多个不同的文件系统,谁做根文件系统只决于内核在启动阶段想让谁做.
  • 文件系统可存在于诸多介质上,例如:硬盘(mmc),闪存(flash),内存(RAM).每种介质上有其最合适配套的文件系统,mmc一般是(fat,ext),flash包括(jffs2),内存(proc,sys,tmpfs,ramfs)
  • 文件系统可简单,可复杂,只要能实现内核定义的三类接口就可以称之为文件系统,哪三类接口:
    • 挂载接口: MountOps ops
    • 操作 inode节点接口: VnodeOps *vop
    • 操作 file接口:file_operations_vfs *fop,这个接口底层实际操作的是 inode所指向的数据块.
  • 不管怎样,内核启动后必须得有一个文件系统用于挂载到/下. 鸿蒙根文件系统目录结构如下:
    .
    ├── app
    ├── bin
    │   ├── init
    │   ├── shell
    │   └── tftp
    ├── data
    │   └── system
    │       └── param
    ├── etc
    ├── lib
    │   ├── libc++.so
    │   └── libc.so
    ├── system
    │   ├── external
    │   └── internal
    └── usr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值