我试图在 Linux 中拯救 GRUB。我能够按照本教程登录操作系统:
https://www.liisenet.com/2014/grub2-rescue-mode-error-unknown-filesystem/
我必须升级 GRUB 才能解决该问题。但是,当我运行时grub-install
,出现错误:
$ grub-install /dev/sda
grub-install: error: cannot find EFI directory.
我的文件系统包含sda4
、sda5
、 和 ,sda6
分别表示 EFI 系统、Linux 交换区和 Linux 文件系统。
我对使用 mount 或其他命令不太有经验。
答案1
当你跑步时grub 安装默认情况下,它假定 EFI 系统安装为 /boot/efi
这取决于您安装 EFI 系统的发行版,并且在某些发行版上,启动后不会安装 EFI 系统。
首先检查/boot/efi是否已挂载
mount | grep /boot/efi
如果这不起作用,请先尝试以下操作,看看它是否安装在其他地方。
mount | grep /dev/[efi device]
如果这些工作都不起作用:
mount /dev/[efi device] /mnt
现在运行:
grub-install --efi-directory=[efi dir]
grub-mkconfig -o /boot/grub/grub.cfg
其中 [efi dir] 是 /boot/efi 或 /mnt,[efi device] 是具有 EFI 系统分区的设备。如果你不知道使用命令lsblk -o NAME,PARTTYPE,MOUNTPOINT | grep -i "C12A7328-F81F-11D2-BA4B-00A0C93EC93B"
答案2
efi 目录必须位于/启动/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
在结果中搜索类似的内容电喷系统或者EFI (FAT-12/16/32)
一旦知道分区号(在本例中为 sda1),我们必须将其挂载到/启动/efi。
如果由于某种原因目录 /boot/efi/ 不存在,请创建它:
mkdir /boot/efi
并将 efi 挂载到该目录中:
mount /dev/sda1 /boot/efi/
我认为仅此而已,您必须能够在磁盘中安装 grub。
答案3
我刚刚遇到这个问题。我启动了救援 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
救援映像,该映像不包含正确的内容。
耶耶!我的系统现在又可以启动了!
答案4
sudo apt-get --purge autoremove grub-efi-amd64-signed