“挂载根文件系统”到底是什么意思?

“挂载根文件系统”到底是什么意思?

在 Linux 的启动过程中,我们有initrd一个根文件系统,它在真正的根文件系统准备就绪之前就被挂载了。挂载的过程是什么?应该发生什么才能说文件系统已挂载?为什么我们说“根文件系统”而不是“文件系统”?

答案1

之所以说是“根文件系统”,是因为在启动时可以挂载许多其他文件系统。根文件/系统类似于 Windows 上的 C 盘。当文件系统可以通过其挂载点供更高级别的系统功能访问时,文件系统即被挂载。

关于安装过程...我不知道您想要多技术性的答案,所以请不要因为这种过度简化而感到生气。我会这样向我的客户解释:插入闪存驱动器。

  1. 用户连接 USB 闪存盘
  2. 操作系统检测到“某物”连接到 USB 端口 X
  3. 操作系统探测端口并发现有一个闪存驱动器
  4. 操作系统为设备分配一个设备节点(假设/dev/sdb
  5. 操作系统探测/dev/sdb并在主分区上找到分区表
  6. 操作系统为分区分配一个设备节点(假设/dev/sdb1
  7. 操作系统探测/dev/sdb1并识别 FAT32 文件系统
  8. 操作系统将文件系统挂载/dev/sdb1到新的挂载点(如/media/pendrive/
  9. 文件系统的内容可供系统访问,因此用户也可以访问

设备的内容(原始数据)只是一堆 0 和 1。安装设备时,系统会在这些 0 和 1 之上添加类似“读/写过滤器”的东西,将 0 和 1 转换为实际文件,反之亦然。

例如:当你将“Hello World”保存到文本文件中时/media/pendrive,过滤器会根据文件系统的规则将其转换为一系列零和一,然后写入/dev/sdb1

答案2

*nix 系统需要文件系统位于/,也称为。对于 initrd,根是 initrd 内的虚拟文件系统。系统必须执行“pivot mount”,从而将实际文件系统挂载到根,并将 initrd 文件系统重新挂载到根下。

实际的挂载操作只是在内核中向 VFS 注册一个文件系统,这样它就知道在哪里查找特定目录中的文件。

相关内容