我按照 Stephen Kitt 的建议将/
其放在/home
LVM 下,而不是留/
在自己的分区中。
如果/boot
位于逻辑卷中/
(默认情况下是),移动逻辑卷是否会导致启动失败?
这似乎是正确的,如果/
文件系统位于分区中并且/boot
位于/
文件系统中。看来我们需要重新安装grub才能再次启动到磁盘上安装的Lubuntu。
我想知道 LVM 在这方面是否提供任何优势。
谢谢。
答案1
执行某些操作会导致启动失败吗?我们如何定义导致启动失败的原因?之前可以启动,之后无法启动。那么我们知道之前能够启动就满足了,那么之后无法启动也满足了吗?我们必须知道你做了某件事后的情况,而问题中没有给出这一点。
因此,我们假设您在执行某些操作后具有以下文件系统和分区方案(这只是假设,因为您可能有复杂的存储方案设置,它们都会影响最终结果)。
/dev/sda
作为您唯一的物理磁盘(GPT 分区),/dev/sda1
作为您的 ESP,/dev/sda2
作为 LVM PV,由您唯一的 VG 使用,其中还包含两个 LV,一个用于,/
一个用于/home
.您的系统上没有其他文件系统。我不会点击你的链接,这是你的责任。
现在,您使用 grub 作为引导加载程序,它安装在 ESP 中。因为 ESP 没有被触及,所以 UEFI 固件将成功运行你的 grub,它将完美运行。但是要启动你的linux,grub需要找到你的内核和initramfs,并且kernels(实际上是initramfs,但无论如何它是内核参数,并不重要)需要被告知哪个设备包含文件系统/
。
grub 如何知道在哪里可以找到内核和 initramfs?显然它无法搜索所有文件系统,必须由您告知。如何?这就是grub.cfg
变得重要的地方。它告诉 grub 如何找到内核和 initramfs 以及要传递给内核的参数。
那么,你的内核在哪里呢?当您安装操作系统时,内核和 initramfs 始终安装在/boot
新操作系统中。但到底是哪个文件系统呢?这取决于您在安装过程中如何挂载这些文件系统。因此,它在您的“/
文件系统”中,因为您从未设置单独的/boot
文件系统。
你的“文件系统”在哪里/
?在你的两个 LV 之一中。包含文件系统的设备在哪里/
?一定是同一个LV。
那么,我们来检查一下grub.cfg
,如果写得不正确,操作系统将无法启动,是吗?但如果写得正确,grub会正确找到内核、initramfs并将正确的参数传递给内核。
哦,我忘了我们无法检查,grub.cfg
因为没有提供。那么……再次假设?不,根据grub的手册,grub.cfg
支持这么多复杂的配置,这些配置都会影响最终的结果,就像我们之前提到的,所以我们就到此为止。做太多的假设只会让我们的答案变得离现实生活太远。
答案2
因为您无法将目录移动到它包含的内容中:
$ tree .
.
└── one
└── two
2 directories, 0 files
$ mv ./one ./one/two/
mv: rename ./one to ./one/two/one: Invalid argument
您无法移动/
到另一个位置,因为该其他位置将被自身包含。这是一个文件系统,而不是克莱因瓶。