我已经在一台只能使用 EFI 启动的机器上使用 LVM 安装了 LUbuntu。它已经有 /dev/sda1 作为 EFI 分区。LUbuntu 安装程序使用剩余的 HDD 创建了 LVM 物理卷,该卷只有一个根逻辑卷,没有其他 LV,并且由于某些原因没有在 EFI 分区上安装任何引导管理器。不知道出了什么问题。
因此我的系统最终无法启动。
为了纠正该问题,我使用 LUbuntu 启动了 USB 记忆棒,检查它是否确实在 EFI 模式下启动:
$ ls -al /sys/firmware | grep efi drwxr-xr-x 5 root root 0 三月 12 12:19 efi
正如这里的答案所建议的:
https://askubuntu.com/questions/1111045/how-to-check-if-ubuntu-has-booted-in-uefi-mode
并使用了如下程序:
https://linuxsuperuser.com/reinstall-grub2-efi-bootloader-ubuntu/
即并运行以下命令:
sudo mount /dev/sda2 /mnt sudo mount /dev/sda1 /mnt/boot/efi 对于 /dev /dev/pts /proc /sys /run 中的 i;执行 sudo mount -B $i /mnt$i;完成 sudo chroot/mnt grub 安装 /dev/sda 更新 grub
问题是 LUbuntu 之后无法在 UEFI 模式下启动。它可以在 BIOS 模式下启动,并且会出现标准 Grub 菜单,但是其他操作系统需要 UEFI 启动,并且某些自定义选项不起作用。
当我实际检查时,发现/mnt/boot/efi
那里没有任何新内容。没有变化。显然grub-install
没有将必要的文件复制到 EFI 分区。
问题出在哪里?
我理解直到 grub-install 的命令,但是我对 grub2 不够熟悉,无法真正理解相关的配置文件是什么以及 grub 究竟如何在 EFI + LVM 模式下启动所有组件。
您能否也告诉我如何将另一个主分区上闲置的操作系统添加到 grub 菜单中。
它过去通过 EFI 启动,并且其启动配置文件仍然保存在 EFI 分区上。
答案1
好的,我花了相当多的时间研究这个主题,以下是我学到的东西:
grub-install
/etc/default/grub
获取位于的配置文件和脚本/etc/grub.d
并组装位于的真实 grub2 配置文件/boot/grub/grub.cfg
。
它还会汇编复制到的加载器二进制文件/boot/efi/EFI/ubuntu
。
存储在那里的 grub.cfg 文件只是指向/boot/grub/grub.cfg
之前创建的。
最后grub-install
将 Grub2 引导扇区保存在指定位置。
但不确定存储了什么/boot/efi/grub
。
显然,LUbuntu / Ubuntu 脚本对配置文件做了一些奇怪的事情,因为许多选项无法按照 Grub 手册中描述的方式工作:
https://www.gnu.org/software/grub/manual/grub/grub.html
/boot/grub/grub.cfg
包含许多条件处理,并且一些参数值使得其他参数未处理而保留在 grub2 默认值中,从而导致意外行为。