如何在传统模式下为 UEFI 安装 grub?

Fen*_* Yu 5 grub2 usb uefi

我的笔记本电脑没有 CD-ROM。所以我使用YUMI创建了一个可启动的U盘,它似乎不支持UEFI。

我使用传统模式从 USB 启动并完成安装 ubuntu(只有一个操作系统)。现在我想切换到UEFI模式。如何?官方文档说从 UEFI 模式使用 livecd 并使用引导修复。但我没有 CD-ROM,并且 U 盘不支持 UEFI。我不能用这种方式。

我已经创建了 esp 并使用了 GPT,但是如何在传统模式下安装 grub UEFI?

~$ sudo gdisk -l /dev/sda
GPT fdisk (gdisk) version 0.8.8

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): E9A1D023-63F1-4014-A152-2C5741B77981
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         1026047   500.0 MiB   EF00  
   2         1026048        41940991   19.5 GiB    8300  

~$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda2 during installation
UUID=d2f2277b-478f-48af-96eb-cc0ee071d0fe /               xfs     defaults        0       1
# /boot/efi was on /dev/sda1 during installation
UUID=E432-31B3  /boot/efi       vfat    utf8,umask=007,gid=46 0       1
Run Code Online (Sandbox Code Playgroud)

Rod*_*ith 5

首先,一个问题是为什么要切换到 EFI 模式启动。根据您的gdisk输出,您似乎已经安装了单一操作系统,因此您似乎不需要与其他东西共存。如果您已经可以在 BIOS/CSM/legacy 模式下启动,为什么还要切换?俗话说:“如果它没有坏,就不要修理它”。(OTOH,我没有看到 BIOS 启动分区,所以也许您当前无法在 BIOS 模式下启动......)

不过,假设您有理由以 EFI 模式启动,那么让我们从头开始......

YUMI 并不是创建可启动 USB 闪存驱动器的唯一工具。您还可以使用ddUNetbootinStartup Disk CreatorRufus和其他工具来完成此操作。我提到的所有工具都能够创建可 EFI 启动的 USB 闪存驱动器,但需要注意的是 EFI 实现不同,因此在一个工具上有效的工具可能在另一个工具上不起作用。某些工具还具有可以影响创建的磁盘在一般情况下或在特定 EFI 上的工作效果的选项。因此,使用其他工具创建安装盘应该能够让您以 EFI 模式启动它(当然,假设您的计算机使用 EFI 而不是传统的 BIOS)。也就是说,如果您已经安装了,重新创建启动介质并重新安装就太过分了......

如果您的计算机上没有其他可启动操作系统,一种解决方案是EFI/BOOT/bootx64.efiEFI 系统分区(ESP;您的/dev/sda1)上安装 EFI 启动加载程序。如果您手动安装,这很容易完成,但如果您使用像 之类的工具grub-install,则必须在安装后手动移动文件。具体来说,EFI 版本grub-install会将 GRUB 放入EFI/ubuntu/grubx64.efi(可能与shimx64.efi在同一目录中)。您必须将文件复制到正确的位置,以便在启动计算机时启动它们。如果安全启动处于非活动状态,请复制EFI/ubuntu/grubx64.efiEFI/BOOT/bootx64.efi. 您可能还需要复制EFI/ubuntu/grub.cfgEFI/BOOT/grub.cfg。如果安全启动处于活动状态,则情况会变得更加复杂;您必须复制shimx64.efiEFI/BOOT/bootx64.efi并复制grubx64.efiEFI/BOOT/grubx64.efi。(请注意,所有这些文件名都是相对于 ESP 的根目录的,因此,如果您要按照 所示安装分区/etc/fstab,则必须添加/boot/efi/到每个路径的开头。)安装了引导加载程序,EFI/BOOT/bootx64.efi并且 NVRAM 条目中没有引用任何其他文件名,您的计算机应该从该“后备”文​​件名启动。

另一种选择是使用我之前提到的工具之一准备 Ubuntu 安装程序,然后以 EFI 模式启动它。完成此操作后,您应该能够在 EFI 模式下运行引导修复,因此它应该能够在该模式下设置 GRUB。事实上,即使在 BIOS 模式下,引导修复也应该能够复制 EFI 文件,如上一段所述。(不过,我不确定这在实践中效果如何;引导修复可能只是尝试进行 BIOS 模式修复,而不是尝试设置 EFI 后备引导加载程序。)

另一种选择是使用我的rEFInd 启动管理器来启动该过程。您可以下载 rEFInd 的 CD-R 或 USB 闪存驱动器版本并从中启动。rEFInd 应该检测您的 Linux 内核并允许您启动。如果有效,您将以 EFI 模式启动,然后您可以安装 rEFInd PPA 或 Debian 软件包以永久使用它(无需 USB 驱动器);或者您可以通过安装 GRUB grub-install,它应该可以正确设置。(请注意,您需要安装EFI GRUB 软件包来设置 EFI 版本的 GRUB。)无论您以这种方式安装 rEFInd 还是 GRUB,它都能够设置 EFI NVRAM 条目,因为引导从 rEFInd USB 驱动器将进入 EFI 模式,从而使操作系统能够添加 EFI NVRAM 变量。grub-efigrub-install


Nic*_*lin 0

您是否尝试过安装 grub-efi(此链接中的示例,尽管可能的文本重点关注 UEFI+RAID)?

顺便说一句,我对你真正的问题感到困惑。为什么要切换到 UEFI 启动?我认为“传统启动”相当于 MBR 启动,而不是 UEFI/GPT 启动。