我正在尝试转换基于 LVM 的旧版 BIOS 安装 Ubuntu 16,以便可以在仅支持 UEFI 的 NUC 上运行它。我为此四处走访:
引导修复 - 不起作用 chroot 与 grub-install 不起作用 - 不起作用
其间有许多变化。详细信息如下:
三个分区: /dev/sda1 - 包含 linux 映像的当前 /boot 分区,ext2 /dev/sda2 - 使用 LVM 的当前 /root 分区 /dev/sda3 - 使用 FAT32 格式化的新 EPS 分区,设置启动标志
我尝试过 chroot-ing 进入根分区,将 sda1 安装为 /boot,将 sda3 安装为 /boot/efi,然后使用 grub-install - 成功但无法启动(例如正是这个)https://www.shellhacks.com/reinstall-grub-from-live-usb-uefi-lvm/)
问题:
- 我的目标系统是 i386,但您只能获得支持 UEFI 的 x64 实时图像 - 这有关系吗?
- 我的目标系统版本需要与我的实时版本匹配吗?
- 我同时拥有 /boot 分区和 /boot/efi 分区有什么关系吗?
- 我的 efi 分区不是第一个分区有什么关系吗?
- 我如何判断正确配置的系统是什么样子?
关于如何让它发挥作用的任何线索?我花了几个小时在这上面
更新:这几乎可以肯定是因为我的 UEFI 固件仅支持 64 位,而我尝试启动的系统是 32 位。鉴于我计划尝试升级所有内容,我首先要尝试 chroot 多架构升级,看看这是否能让我进入可以使用 64 位 grub EFI 启动的位置
答案1
对于不同的系统架构,有多个不同的 GRUB 版本:对于基于 BIOS 的系统,您的操作系统已安装grub-pc
软件包grub-pc-bin
。
为了能够安装 UEFI 版本的 GRUB,您需要安装软件包grub-efi-amd64
,并且grub-efi-amd64-bin
您的 UEFI 固件是 64 位(= 通常情况),或者grub-efi-ia32
您grub-efi-ia32-bin
的 UEFI 固件是 32 位(罕见但可能)。
这您链接的说明似乎有一个内置的假设,即您正在重新安装与最初相同的 GRUB 体系结构版本。就你而言,事实并非如此。您可能需要为命令显式指定架构grub-install
:
grub-install --force-extra-removable --target=x86_64-efi /dev/sda
假设这/dev/sda
是您的系统盘(根据需要调整)。
如果您有 32 位 UEFI 固件,那么您应该使用该选项--target=i386-efi
。
指示--force-extra-removable
将引导加载程序文件的第二个副本放置到 ESP 分区上的可移动介质/后备位置,如果无法访问 UEFI 引导变量以在实际位置进行编程,grub-install
这可以简化初始启动过程。grub-install