找不到 EFI 目录:grub-install 有问题

kri*_*ant 25 linux grub

我试图在 Linux 中拯救 GRUB。我能够按照本教程登录操作系统:

https://www.lisenet.com/2014/grub2-rescue-mode-error-unknown-filesystem/

我必须升级 GRUB 才能解决问题。但是,当我运行时grub-install,出现错误:

$ grub-install /dev/sda
grub-install: error: cannot find EFI directory.
Run Code Online (Sandbox Code Playgroud)

我的文件系统包含sda4、sda5和 分别sda6用于 EFI 系统、Linux 交换和 Linux 文件系统。

我对使用 mount 或其他命令的经验不是很丰富。

jdw*_*olf 23

默认情况下,当您运行grub-install 时,它假定 EFI 系统安装为 /boot/efi

这取决于您安装 EFI 系统的发行版,而在某些发行版上,它在启动后未安装。

首先检查 /boot/efi 是否挂载

mount | grep /boot/efi
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,请先尝试以下操作,看看它是否安装在其他地方。

mount | grep /dev/[efi device]
Run Code Online (Sandbox Code Playgroud)

如果这些工作都不做:

mount /dev/[efi device] /mnt
Run Code Online (Sandbox Code Playgroud)

现在运行:

grub-install --efi-directory=[efi dir]
grub-mkconfig -o /boot/grub/grub.cfg
Run Code Online (Sandbox Code Playgroud)

其中 [efi dir] 是 /boot/efi 或 /mnt,而 [efi device] 是具有 EFI 系统分区的设备。如果你不知道使用命令lsblk -o NAME,PARTTYPE,MOUNTPOINT | grep -i "C12A7328-F81F-11D2-BA4B-00A0C93EC93B"

  • 谢谢,在 `grub-install --efi-directory=/boot/EFI` 中,因为我 chroot 到 `/mnt`。 (2认同)

小智 11

efi 目录必须位于/boot/efi/中

要知道efi在哪个分区,我们必须检查分区表,所以如果你的主磁盘是/dev/sda那么。

fdisk -l /dev/sda
Device             Start        End   Sectors   Size Type
/dev/sda1           2048     309247    307200   150M EFI System
/dev/sda2         309248  964843519 964534272 459.9G Linux filesystem
/dev/sda3      964843520 1000214527  35371008  16.9G Linux filesystem
Run Code Online (Sandbox Code Playgroud)

在结果中搜索EFI System或EFI (FAT-12/16/32)等内容

一旦您知道分区号(在本例中为 sda1),我们必须将其安装在/boot/efi中。

如果由于某种原因目录 /boot/efi/ 不存在,请创建它:

mkdir /boot/efi
Run Code Online (Sandbox Code Playgroud)

并将 efi 挂载到该目录中:

mount /dev/sda1 /boot/efi/
Run Code Online (Sandbox Code Playgroud)

我认为仅此而已,您必须能够在磁盘中安装 grub。


Lin*_*nas 7

我刚刚遇到这个问题。我启动了救援 USB 记忆棒。让我描述一下对我有用的修复方法。

四处搜寻,gdisk -l /dev/sda我可以看到我原来的根分区是/dev/sda2. 要访问它,我输入sudo mount /dev/sda2 /mnt

到目前为止,一切都很好。让我首先描述什么不起作用,然后是解决方案。有些页面建议chroot /mnt然后grub-install,但这行不通;给出grub-install: error: cannot find EFI directory.错误。

根据其他建议,我看到我的 EFI 分区是/dev/sda1这样,所以我尝试sudo mount /dev/sda1 /mnt/boot/efi再次 chroot。现在,grub 抱怨缺少/dev所以我mount --bind /dev/ /mnt/dev。...但是随后 grub 抱怨了其他事情。事情像滚雪球一样失控。chroot不是答案。

起作用的是:grub-install -d /mnt/usr/lib/grub/x86_64-efi --boot-directory=/mnt/boot /dev/sda

请注意,该-d标志是强制性的,否则 grub 会尝试使用/usr/lib/grub/i386-pc救援映像,该映像不包含正确的内容。

耶耶!我的系统现在又可以启动了!

  • 这拯救了我的一天 (2认同)

def*_*alt 5

Grub 救援模式可以视为

set root=(hd0,gpt6)
set prefix=(hd0,gpt6)/boot/grub
insmod normal
normal
Run Code Online (Sandbox Code Playgroud)

登录后,输入sudo update-grub && sudo grub-install /dev/sda.