Ahm*_*nim 20 boot initramfs fstab
按照我的理解,initramfs 负责加载“真正的”根文件系统。
现在,我们在两个地方定义了这个根。首先我们在/etc/fstab
. 其次,我们将设备放在内核引导命令上,例如root=/dev/sda1
.
initramfs 使用哪一个来确定根文件系统在哪里?如果它使用 root 内核参数,为什么我们在 中有一个条目/etc/fstab
?第二个选项(它读为/etc/fstab
)是非常不合逻辑的,因为该/etc/fstab
文件位于 initramfs 最初尝试挂载的根设备上。
很混乱的东西。
phe*_*mer 15
正如您所说,initramfs 的目的是安装“真正的”根文件系统(它也可以做其他事情,但这是常见任务)。
如果没有 initramfs,内核通常会将分区挂载为只读,然后将控制权交给/sbin/init
. initramfs 只是从内核接管这项任务,通常是当根文件系统不是普通分区(mdraid、lvm、加密等)时。
现在,除了 initramfs 的背景之外,您还/etc/fstab
驻留在根文件系统上。因此,当启动 initramfs 时,该根文件系统不存在,因此无法访问 fstab(鸡和蛋问题)。
相反,我们必须将参数传递到内核引导参数中以供 initramfs 使用。通常这类似于root=/dev/sdX
. 但是,它也可能会自动找出根设备的位置,因此根本没有参数。因为它只是一个软件(通常是一个脚本),它真的可以做任何它想做的事情来挂载根设备。
现在,如前所述,内核将以只读方式挂载真正的根。initramfs 应该完全做到这一点。一旦 initramfs 完成,系统就会像根本没有 initramfs 一样继续引导,然后/sbin/init
启动。然后这个 init 启动所有正常的引导脚本,这些脚本之一的工作是读取/etc/fstab
、将 root 切换为读写,以及挂载所有其他文件系统。
归档时间: |
|
查看次数: |
29865 次 |
最近记录: |