我有一个 btrfs 文件系统,如下所示:
root_subvol # subvolid=5 - the root subvolume for the btrfs filesystem
- snapshots/ # Folder that contains btrfs snapshots of the subvol_root that I take before I do system updates
- subvol_root/ # A btrfs subvolume. Gets mounted as /. Contains /etc, /home, /proc, ...
现在,subvol_root
在启动时安装为我的/
. Linux 如何知道这是要在启动时挂载的子卷/
?
当然,我的 subvol_root/etc/fstab 有以下条目:
UUID=84ee... / btrfs subvol=subvol_root,...
但是不同的子卷可能有自己的版本,/etc/fstab
它会列出要挂载的不同子卷/
,因此这会是不明确的。
它是否查看/etc/fstab
默认的 btrfs 子卷或其他内容?
答案1
检查您的内核启动参数,例如使用cat /proc/cmdline
.
您可能会发现有一个root=
指定文件系统的选项(可能通过标签或 UUID),以及一个rootflags=
包含subvol=subvol_root
.这些选项将包含在引导加载程序配置中,因为这决定了正常的内核命令行。
或者,引导过程可以依赖于/etc/fstab
已包含在 initramfs 中的副本。
不同的发行版可能会做不同的事情,但根据我的经验,根文件系统的位置往往由内核启动参数指定,以便在您对硬件配置进行重大更改时可以在启动时轻松修改它。
如果根文件系统仅在 initramfs 中指定,您可能会发现自己处于类似于 Catch-22 的情况:“在修改我的 initramfs 之前,我无法访问根文件系统,但我无法获得修改我的 initramfs 所需的工具。 initramfs 直到我获得根文件系统的访问权限!”