LVM 分区上的 Grub

LVM 分区上的 Grub

基本上,我的问题是 /boot (/dev/sda1),这是一个非常小的分区 (88 Mo)。

利用这台机器上可用的 VolumeGroup,我格式化了一个新的 LVM 卷(600 Mo)。

然后我将 /boot/ 的内容复制到新的 LVM 分区(使用cpio)。

我做了umount /boot,并在 Fstab 中做了一些更改来替换旧的 /boot 分区。

最后,我成功update-grub地正确生成了新的grub.cfg。我重新启动后,它已经可以正常工作了。我认为我的新 LVM 分区是正确的,因此fdisk /dev/sda,我删除了/dev/sda1

现在,我在启动时有了 Grub Rescue。

即使使用 Ubuntu livecd :

grub-install --modules='lvm' /dev/rootvg/bootlv

/usr/sbin/grub-probe: error: cannot find a device for /boot/grub/
No path or device is specified.


grub-install --modules='lvm' /dev/sda5

/usr/sbin/grub-probe: error: cannot find a device for /boot/grub/
No path or device is specified.

同样的错误...

有没有解决方案可以在现有的 LVM 设备上安装 Grub 引导加载程序?

答案1

也许(我对 lvm 和 grub 完全陌生)您需要像这样安装 grub:

grub-install --modules='lvm' --boot-directory=/dev/rootvg/bootlv dev/sda

将 grub 放在 MBR 上,并使用 /dev/rootvg/bootlv 作为 grub 文件所在的 /boot 分区。

但是如果磁盘是 GPT 并且您使用 BIOS 启动,那么您将需要一个 1MiB 到 8MiB 类型的 BIOS_grub 特殊分区(没有任何格式,它是 grub 第 2 阶段的原始分区)。

我在从带有 EFI 分区和 LVM 的 [U]EFI 启动 Grub2 时遇到了很多麻烦,其中 /boot 分区位于 3 条带 Raid0 LVM 内,但如果是 BIOS 启动模式,我可以正常启动它。

我在三个硬盘上都有分区(大小、位置等都相同),采用 GPT 格式:GPT1:LVM(大分区,其余硬盘空间)GPT2:EFI(512MiB,FAT32)GPT3:bios_grub(8MiB,无格式 - RAW)

我在所有 /dev/sd[ac]1 上创建 vg,并在 LVM 内部为 /boot 创建了一个分区

我使用以下命令挂载 /boot: mount /dev/mapper/bla_bla_bla /boot

我在其上创建了 EFI 挂载点(实际上不是必需的,但有助于在 grub2-install 上减少输入字母的数量)

我将 /dev/sda2 挂载到 /boot/efi 上

然后我使用命令将 lvm 添加到所需的模块:

回显 GRUB_PRELOAD_MODULES=\"lvm\" >> /dev/default/grub

然后我使用以下命令安装 Grub2:

grub-install --target=i386-pc /dev/sda

瞧,卸载并在 BIOS 模式下重新启动,然后启动 Grub2。

重要的是,在卸载 /boot 之前,请编辑 /boot/grub/grub.cfg 以满足您的需要。

请记住,我没有启动操作系统,我只是在 LVM 分区内安装 Grub2 并能够启动。

注意:如果我使用目标 x86_64-efi 安装,它会显示两条消息,并且在 [U]EFI 模式下无法正确启动后,LVM 无法访问。

PD:我已经达到了创建两个不同 USB 棒的知识水平,它们可以在 [U]EFI 模式和 BIOS 模式下启动 SystemRescueCD.iso 循环,但是当我尝试启动到驻留在 LVM 内部的 Grub2 时,如果在 [U]EFI 模式下我会遇到问题...我不是专家...我一直在研究 Grub2 和 LVM、LUKS 等...我的目的是创建一个非常复杂的启动...Raid0 LVM 中的三个 USB 棒,没有 /boot 外部 LVM,并且能够在仅 [U]EFI 的 PC 和仅旧的 BIOS 的 PC、混合的 PC 等上启动...我现在可以在 [U]FI 和 BIOS 上启动,如果 /boot 在 LVM 之外,并且在 BIOS 模式下,/boot 也在 LVM 内部,但不能在 [U]EFI 上启动,/boot 在 LVM 内部。

PPD:恐怕这是 grub2*.efi 无法挂载 LVM 的一个 BUG,因此我建议您以 BIOS 模式启动...其中我读过一些 ArchLinux 的文章,说它可以安装在没有 /boot 分区且 LVM 内部有 / 的 LVM 上,但我没有一步一步地了解,也无法重现;这也不是我的真正目标,因为我只想要 Grub2,而不想安装 Linux...最终的真正目标是将 Linux 放在一个大文件中,这个大文件位于一个 LVM 分区内,这个 LVM 分区位于一个 LUKS 分区内,这个 LUKS 分区位于使用三个物理 HDD id raid0 模式(3 个条带)的 LVM 分区上,并从具有 [U]EFI 和 Bios 启动模式的 USB 启动,其中 Grub2 链式加载到这个大文件内的 Grub2,并且 Grub2 将从这个大文件内加载内核、initram 等...等等;一个合理的否认你有这样的 Linux...如果从 HDD 启动,将显示一个加密的 Linux,它的 rootfs 上是我提到的大文件,但如果我从外部 USB 启动,如果知道如何启动该文件内的 Linux...偏执模式:执行此类链式加载的命令会在我的脑海中,而不是在 USB 上,USB 上只有一个 SystemRescueCD.iso 循环启动,但不是选择启动它,而是键入 c 转到 grub 控制台并键入命令以链式加载到我提到的大文件内的 Linux...我知道这太复杂了...但没有 TrueCrypt/VeraCrypt 的技巧,它会根据密码挂载虚拟操作系统或隐藏操作系统,我别无选择,所以我几个月前开始了第一步...有一个可以在 [U]EFI 和仅 BIOS 的 PC 上启动的 USB(完成),在 LVM 里面有 Grub2(在 BIOS 模式下完成,[U]EFI 模式下出错),还有很多步要走。

我希望我的方案和命令可以帮助您发现如何启动系统,或者至少为您提供一个搜索选项。

相关内容