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 rescue 给出错误提示/boot/grub/i386-pc/normal.mod not found

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

这让我有以下疑问:

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

  2. 有没有办法将/boot/grub文件夹包含在根目录中,以便我可以运行insmod normal命令?

非常感谢您的帮助,因为在过去的几天里我尝试了几乎所有能想到的可能的解决方案。

谢谢! :)

答案1

启动到 GRUB 菜单,按C,然后尝试运行:

grub> ls (hd0,msdos1)/boot/ 
grub> ls (hd1,msdos1)/boot/ 

对于显示的每个磁盘分区,(xxx,xxx)直到找到包含目录的分区/boot。找到正确的分区后,请执行set root=(xxx,xxx),因为这听起来不是正确的分区,除非有更严重的错误。

一旦确定了正确的分区,如果您想从 GRUB 启动,您可以执行以下操作:

  1. 从执行后看到的信息中选择要启动的内核和初始化内存磁盘:

    grub> ls (xxx,xxx)/boot/
    
  2. 然后输入以下内容:

    grub> linux (xxx,xxx)/boot/vmlinuz-xxxx-generic root=/dev/sda2 ro
    grub> initrd (xxx,xxx)/boot/initrd.img-xxxx-generic
    grub> boot
    

笔记:如果您不知道名称是什么,它很可能是→root=/dev/xxx中的相同数字,但您可以通过执行以下命令来确定:msdos(n)/dev/sda(n)

grub> cat (xxx,xxx)/etc/fstab

正确设备的路径将在分区上方的注释中UUID=xxxxx

还有一件事,确保分区标识符中不包含任何空格(xxx,xxx),否则您将收到错误。

相关内容