首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >initramfs使用/etc/fstab吗?

initramfs使用/etc/fstab吗?
EN

Unix & Linux用户
提问于 2013-09-27 23:51:59
回答 3查看 33.9K关注 0票数 22

据我所知,initramfs负责加载“真实”根文件系统。

现在,有两个地方我们定义了这个根。首先,我们在/etc/fstab中添加了一个条目。其次,我们将设备放在内核引导命令上,例如root=/dev/sda1

initramfs使用哪一个来确定根文件系统在哪里?如果它使用根内核参数,为什么我们在/etc/fstab中有一个条目?第二个选项(它读取/etc/fstab)非常不合逻辑,因为/etc/fstab文件位于initramfs最初试图挂载的根设备上。

非常令人困惑的东西。

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2013-09-28 07:04:07

正如您所述,initramfs的目的是安装“真正的”根文件系统(它也可以做其他事情,但这是常见的任务)。

如果没有initramfs,内核通常会将分区挂载为只读,然后将控制传递给/sbin/init。initramfs只是从内核接管这个任务,通常是当根文件系统不是一个正常的分区(mdraid、lvm、加密等)时。

现在,除了initramfs的背景之外,您的/etc/fstab驻留在根文件系统上。因此,当启动initramfs时,根文件系统就不存在了,因此它无法进入fstab (鸡肉和鸡蛋问题)。

相反,我们必须将一个参数传递到内核引导参数中,以便initramfs使用。通常情况下,这类似于root=/dev/sdX。但是,它也可能会自动确定根设备在哪里,因此根本就没有参数。因为它只是一个软件(通常是一个脚本),它真的可以做任何它想要的挂载根设备的事情。

现在,如前所述,内核将将真正的根挂载为只读。initramfs应该做到这一点。一旦完成initramfs,系统就会启动,就好像根本没有initramfs一样,并且启动了/sbin/init。这个init然后启动所有正常的引导脚本,其中一个脚本的工作是读取/etc/fstab,将根切换为读-写,并挂载所有其他文件系统。

票数 16
EN

Unix & Linux用户

发布于 2013-09-28 00:17:45

它可能会也可能不会。因为Initramfs可以以各种方式构造(内核只是加载它并运行/init,它可以执行任何操作)。但是,使用参数更常见,因为它允许更多的灵活性--也就是说,如果某些东西发生了变化,您只需编辑引导条目就可以了。使用内置硬编码的根,这不一定是可能的。

fstab条目可能仍然是需要的,因为它还决定了其他事情,例如挂载选项(其中一些选项可以在go中更改)和fsck顺序。而且,即使它完全是多余的(如果Initramfs处理它,它可能没有工作),我仍然会为了完整性而将条目保存在那里。

票数 2
EN

Unix & Linux用户

发布于 2013-09-28 00:17:19

您可以将/etc/fstab视为静态挂载,它只是执行此类任务的一种方式,但实际上并不是唯一运行命令挂载的方法,而且您可以看到很多在fstab中缺少的文件系统。这样的服务udev和udisk管理许多“自动生成”,忽略/etc/fstab文件.

因此,如果某个东西被挂载或不经常挂载,它与/etc/fstab无关。

initramfs --它只是在引导过程中使用的临时rootfs,直到"true“rootfs被挂载,那么为什么initramfs应该在/etc/fstab上呢?

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/92720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档