我正在安装 arch linux,并且我的根分区位于/dev/sda2
.据我了解,这个分区现在将是我的根目录,包含所有子目录/home
,/usr
等等。
让我困惑的是为什么我们必须在安装过程中将“root”安装到看似“root”的地方。例如,arch linux 的安装步骤为:mount /dev/root_partition /mnt
。
据我所知,我们正在将分区安装到安装介质的文件系统中的目录。但是当我们这样做时genfstab
,它指定根分区将安装到“/”。
这对我来说似乎有点递归,因为我们将“root”安装到“root”。内核还有其他的文件系统吗?这有什么关系吗initramfs
?
答案1
现代 Linux 从 initramfs 启动。在此引导环境中,“根”文件系统是安装在 的 initramfs /
。
作为引导过程的一部分,initramfs 加载驱动程序和内容,找到真正的根文件系统,并将其安装在某个子目录上。最初,此时,chroot 用于将该子目录更改为/
用于将来的进程。然后linux添加了一个系统调用,允许将initramfs挂载点与子目录交换,这样initramfs就可以被卸载并从内存中释放。
在两者之间的某个地方,像 genfstab 这样的东西可以用来动态生成一个新的 fstab,反映 chroot 之后移动的安装点。 (我没有看到它在动态云环境之外使用 - 通常 fstab 是一个静态文件,列出要安装的内容,而不是当前安装的内容。)
答案2
不,这与 initramfs 无关。
文件系统就是文件系统。您可以将其安装在任何地方、多个位置或任何地方。在你当前的linux(我猜它是你的实时安装程序archlinux)中,/dev/sda2的文件系统安装在/mnt下。但是当安装完成并重新启动后,它将被安装在/(根目录)下。
答案3
没有root
分区之类的东西。它只是您选择安装为的一个分区/
。
在我看来,我们根本不需要挂载根分区,因为它包含整个文件系统?
默认情况下,内核不会挂载任何东西,它没有任何线索,并且它不关心你想要的根文件系统在哪里。
挂载在/的分区,即根目录所在的分区,通常称为“根分区”。
这只是一个调用约定。可能有“根分区”、“exfat 分区”或任意数量的“SWAP 分区”。