grub2-install:错误:/boot/efi 在全新 Gentoo 安装中看起来不像 EFI 分区

grub2-install:错误:/boot/efi 在全新 Gentoo 安装中看起来不像 EFI 分区

我需要一台 Gentoo 13 机器来测试平台上的一些软件。我不是 Gentoo 的常客,所以我很讨厌他们的安装程序。我现在 配置引导加载程序 | 安装 GRUB2,但失败了:

# grub2-install --target=x86_64-efi --efi-directory=/boot
Installing for x86_64-efi platform.
grub2-install: error: /boot doesn't look like an EFI partition.

我回溯到准备磁盘 | 默认:使用 parted 对磁盘进行分区,看来我已经按照指示设置好了一切:

(chroot) Gentoo-2012 / # parted
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit mb                                                          
(parted) print                                                            
Model: ATA VMware Virtual I (scsi)
Disk /dev/sda: 21475MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End      Size     File system     Name    Flags
 1      1.05MB  3.15MB   2.10MB                   grub    bios_grub
 2      3.15MB  131MB    128MB    ext2            boot    boot, esp
 3      131MB   2572MB   2441MB   linux-swap(v1)  swap    msftdata
 4      2572MB  21474MB  18902MB  ext4            rootfs  msftdata

以上结果来自手册的同一章,章节将文件系统应用于分区激活交换分区

我也关注了评论EFI 目录不应该是 /boot 而是 /boot/efi引导加载程序问题和疑问在 Gentoo 论坛上,但导致了同样的错误:

(chroot) Gentoo-2012 / # mkdir /boot/efi
(chroot) Gentoo-2012 / # grub2-install --target=x86_64-efi --boot-directory=/boot --efi-directory=/boot/efi
Installing for x86_64-efi platform.
grub2-install: error: /boot/efi doesn't look like an EFI partition.

这是什么问题?如何解决?


fdisk以下是上述信息的对应视图gparted

(chroot) Gentoo-2012 / # fdisk -l
Disk /dev/loop0: 3.3 GiB, 3567640576 bytes, 6968048 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes    

Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 52F5571A-808B-XXXX-XXXX-XXXXXXXX

Device       Start      End  Sectors  Size Type
/dev/sda1     2048     6143     4096    2M BIOS boot
/dev/sda2     6144   255999   249856  122M EFI System
/dev/sda3   256000  5023743  4767744  2.3G Microsoft basic data
/dev/sda4  5023744 41940991 36917248 17.6G Microsoft basic data

我还验证了该软件包sys-boot/grub支持 EFI:

(chroot) Gentoo-2012 / # cat /etc/portage/make.conf | grep GRUB
GRUB_PLATFORMS="emu efi-32 efi-64 pc"

然后我执行了emerge --ask --newuse sys-boot/grub,,emerge -pv sys-boot/grub然后重建了grub

答案1

答案很简单。EFI 系统分区 (ESP) 应该是 FAT32(对于大多数合适的 UEFI,FAT16 甚至 FAT12 也适用;它们大多显示vfat在 Linux 中)而不是 ext2:

mkfs.fat -F32 /dev/sda2

值得一提的是,如果您不打算安装 grub i386-pc(用于 BIOS/CSM 启动),则不需要“BIOS 启动”分区。只有GPT 上的grub i386-pc(而不是 grubx86_64-efi或)才需要它。i386-efi

是否使用 ESP 并不重要/boot。如果使用,则应运行:

grub2-install --efi-directory /boot

如果你将它安装上去/boot/efi,那么你应该运行:

grub2-install --efi-directory /boot/efi

--boot-directory /boot/boot是隐含的(即默认);无论是 ESP,另一个单独的分区,还是文件系统上的目录都没有关系/

您甚至不需要再次 chroot 来执行grub2-install;例如,您在 上sda4为 安装了 分区;然后在 上安装了 ESP,那么您可以简单地运行://mntsda2/mnt/boot/efi

grub2-install --boot-directory /mnt/boot --efi-directory /mnt/boot/efi

虽然grub2-mkconfig据我所知需要在 chroot 中运行。但如果您打算grub.cfg自己编写一个简单干净的程序(这是使用 grub2 的唯一优雅方式),那么这与您无关。

答案2

问题似乎在于混合和匹配 BIOS、EFI、MBR 和 GPT。我尝试按照指南使用 GPT,但由于我经验不足,我无法解决一些依赖关系。我甚至不清楚内核是否支持 GPT(通过配置选项CONFIG_EFI_PARTITION)。

当我放弃 GPT 和 EFI 并切换到纯 BIOS 和 MBR 时,我能够启动生成的机器。BIOS 和 GPT 应该是一个有效的组合,但我想知道它在实践中是否有效(例如,参见引导加载程序选项)。

以下是我可以运行该机器的配置:

$ parted
GNU Parted 3.2
Using /dev/sda
(parted) print                                                            
Model: ATA VMware Virtual I (scsi)
Disk /dev/sda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  135MB   134MB   primary  ext2            boot
 2      135MB   19.5GB  19.3GB  primary  ext4
 3      19.5GB  21.5GB  2012MB  primary  linux-swap(v1)

分区 1 是/boot,分区 2 是/,分区 3 是swap

答案3

我刚刚遇到这个问题,发现 /boot 存在,但我的启动分区没有挂载到它。只需挂载启动分区即可解决这个问题

mnt /dev/sda1 /boot

答案4

错误:

$> grub2-install --target=x86_64-efi --efi-directory=/boot

Installing for x86_64-efi platform.
grub2-install: error: /boot doesn't look like an EFI partition.

检查 grub2 的源代码,它似乎要求有/boot自己的文件分配表 (FAT) 兼容的单独分区,可能出于安全原因,以前不是这样的。grub2 屈服于主板造成的安全条件。

我在 2020 x86_64 PC 桌面上执行此操作,并且我选择不创建单独的/dev/sda1启动分区/dev/sda(在此fdisk /dev/sda步骤中标记为可启动)。

解决方案1:

在主板的启动 BIOS/EFI/UEFI 实用程序中禁用任何 Bios 安全启动设置,并查找要禁用的任何启动级别安全设置。假设您不喜欢安全性。它可能是F7-> boot->下的设置secure boot

解决方案2:

接受 grub 的新安全要求,并按照手册创建您自己的单独分区/boot和 grub 配置步骤。

EFI 系统分区 (ESP) 必须是FAT文件系统变体(有时显示为vfat在 Linux 系统上)。官方 UEFI 规范表示FAT121632文件系统将被 UEFI 固件识别,尽管建议 ESP 使用 FAT32。愤怒的声音说,许多月前的可选步骤现在成了必需步骤。

解决方案 3:

fdisk工具似乎已被弃用并被标记为删除。手册上说:“如果你使用,你将遇到问题fdisk,你只能靠自己了。”他们的解决方案是向上滚动手册并按照使用说明parted创建分区,并使用他们建议的标志标记启动分区bios_grub。然后,grub 会自动知道在哪里查找以及要做什么。

相关内容