Linux根文件系统
什么是文件系统
根文件系统一般也叫做 rootfs,那么什么叫根文件系统?看到“文件系统”这四个字,很多 人,包括我第一反应就是 FATFS、FAT、EXT4、YAFFS 和 NTFS 等这样的文件系统。在这里, 根文件系统并不是 FATFS 这样的文件系统代码,EXT4 这样的文件系统代码属于 Linux 内核的 一部分。Linux 中的根文件系统更像是一个文件夹或者叫做目录(在我看来就是一个文件夹,只 不过是特殊的文件夹),在这个目录里面会有很多的子目录。根目录下和子目录中会有很多的文件,这些文件是 Linux 运行所必须的,比如库、常用的软件和命令、设备文件、配置文件等等。
根文件系统首先是内核启动时所 mount(挂载)的第一个文件系统,内核代码映像文件保存在 根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和 服务等加载到内存中去运行。
嵌入式 Linux 并没有将内 核代码镜像保存在根文件系统中,而是保存到了其他地方。比如 NAND Flash 的指定存储地址、 EMMC 专用分区中。根文件系统是 Linux 内核启动以后挂载(mount)的第一个文件系统,然后从 根文件系统中读取初始化脚本,比如 rcS,inittab 等。根文件系统和 Linux 内核是分开的,单独 的 Linux 内核是没法正常工作的,必须要搭配根文件系统。如果不提供根文件系统,Linux 内核 在启动的时候就会提示内核崩溃(Kernel panic)的提示
根文件系统是其他文件系统的根,没有这个“根”,其他的文件系统或者软件就别想工作。比如我们常用的 ls、mv、ifconfig 等命令 其实就是一个个小软件,只是这些软件没有图形界面,而且需要输入命令来运行。这些小软件就保存在根文件系统中
以 Ubuntu 为例,根文件系统的目录名字为‘/’,没看错就是一个斜杠,所以输入如下命令就可以进入根目录中
cd / //进入根目录 |
/bin
- bin 文件就是可执行文件。所以此目录下存放着系统 需要的可执行文件,一般都是一些命令,比如 ls、mv 等命令。此目录下的命令所有的客户都可 以使用。
/dev 目录
- dev 是 device 的缩写,所以此目录下的文件都是和设备有关的,此目录下的文件都是设备文件。在 Linux 下一切皆文件,即使是硬件设备,也是以文件的形式存在的,比如 /dev/ttymxc0(I.MX6ULL 根目录会有此文件)就表示 I.MX6ULL 的串口 0,我们**要想通过串口 0 发送或者接收数据就要操作文件/dev/ttymxc0,通过对文件/dev/ttymxc0 的读写操作来实现串口 0 的数据收发**。
/etc 目录
- 此目录下存放着各种配置文件,大家可以进入 Ubuntu 的 etc 目录看一下,里面的配置文件 非常多!但是在嵌入式 Linux 下此目录会很简洁。
/lib 目录
- lib 是 library 的简称,也就是库的意思,因此此目录下存放着 Linux 所必须的库文件。这些 库文件是共享库,命令和用户编写的应用程序要使用这些库文件。
/mnt 目录
- 临时挂载目录,一般是空目录,可以在此目录下创建空的子目录,比如/mnt/sd、/mnt/usb, 这样就可以将 SD 卡或者 U 盘挂载到/mnt/sd 或者/mnt/usb 目录中。
/proc 目录
- 此目录一般是空的,当 Linux 系统启动以后会将此目录作为 proc 文件系统的挂载点,proc 是个虚拟文件系统,没有实际的存储设备。proc 里面的文件都是临时存在的,一般用来存储系 统运行信息文件。
/usr 目录
- usr 不是 user 的缩写,而是 Unix Software Resource 的缩写,也就是 Unix 操作系统 软件资源目录。这里有个小知识点,那就是 Linux 一般被称为类 Unix 操作系统,苹果的 MacOS 也是类 Unix 操作系统。关于 Linux 和 Unix 操作系统的渊源大家可以直接在网上找 Linux 的发 展历史来看。既然是软件资源目录,因此**/usr 目录下也存放着很多软件**,一般系统安装完成以 后此目录占用的空间最多。
/var 目录
- 此目录存放一些可以改变的数据。
/sbin 目录
- 此目录页用户存放一些可执行文件,但是此目录下的文件或者说命令只有管理员才能使用, 主要用户系统管理。
/sys 目录
- 系统启动以后此目录作为 sysfs 文件系统的挂载点,sysfs 是一个类似于 proc 文件系统的特 殊文件系统,sysfs 也是基于 ram 的文件系统,也就是说它也没有实际的存储设备。此目录是系 统设备管理的重要目录,此目录通过一定的组织结构向用户提供详细的内核数据结构信息。
/opt目录
- 可选的文件、软件存放区,由用户选择将哪些文件或软件放到此目录中。