Grub 救援模式 - /boot/grub 目录不存在

Grub 救援模式 - /boot/grub 目录不存在

我已经经历了很多相关的问题和答案,grub rescue但我遇到了一个我无法理解的不同问题。

根据一些答案,我尝试按照以下步骤来解决此问题 -

  1. 首先,我使用ls命令来获取所有分区,在我的例子中是(hd0), (hd0,msdos5), (hdo,msdos1), (hd1)&(hd1,msdos1)

  2. 在上述 5 个分区中,我得到了Filesystem is ext2留言给(hd0,msdos1)驾驶。

  3. 根据中提供的一些答案询问 ubuntu&堆栈交换我尝试设置root&prefix使用 (hd0,msdos1)驱动器(我使用ls命令找到的)

  4. 设置时prefix我意识到/boot/grub所选驱动器中不存在该目录(hd0,msdos1)

  5. 结果当我尝试开火时insmod normal命令,grub救援给出一个错误说/boot/grub/i386-pc/normal.mod未找到

  6. 除此之外,我尝试在 ubuntu 14、16、17、18 甚至 Windows 操作系统上使用可启动 USB 驱动器,但我总是进入 grub 救援窗口。

这给我留下了以下问题 -

  1. 我是否将错误的驱动器设置为根驱动器(假设这是 5 个登记驱动器中唯一的 ext2 驱动器)?

  2. 有没有办法包括/boot/grub根目录中的文件夹,以便我可以运行`insmod 正常命令 ?

答案1

/boot由于启动分区是在系统启动时安装在上面的,因此您将找不到那里/boot/grub

您要搜索的目录位于/grubboot分区中。

至于安装完整的系统,您必须安装第一个系统/,然后再安装/boot在它的上面。

实际上,如果你在相同架构的Live DVD中,你经常会挂载:

/mnt -> root partition
/mnt/boot -> boot partition
/mnt/proc /proc
/mnt/sys /sys
/mnt/dev /dev

然后做一个chroot /mnt

至于加载内核模块,我会从实时启动系统加载它们。

答案2

ls (hdo,msdos1)

你说这给出的文件系统是ext2。

set boot=(hdo,msdos1)  
set prefix=(hdo,msdos1)/boot/grub
insmod normal
normal

然后启动kali打开终端并输入:

sudo apt-get update
sudo apt-get install --reinstall grub-pc
sudo grub-install /dev/sda
sudo update-initramfs -u
sudo update-grub

相关内容