我已经经历了很多相关的问题和答案,grub rescue
但我遇到了一个我无法理解的不同问题。
根据一些答案,我尝试了以下步骤来解决此问题:
首先,我使用命令
ls
来获取所有分区,在我的情况下是(hd0)
、、、& 。(hd0,msdos5)
(hdo,msdos1)
(hd1)
(hd1,msdos1)
在上述 5 个分区中,我收到了驱动器
Filesystem is ext2
消息(hd0,msdos1)
。根据询问 Ubuntu&堆栈交换,我尝试使用 驱动器(我使用命令找到它)设置
root
& 。prefix
(hd0,msdos1)
ls
在设置时
prefix
我意识到/boot/grub
所选驱动器中不存在该目录(hd0,msdos1)
。因此,当我尝试执行
insmod normal
命令时,grub rescue 给出错误提示/boot/grub/i386-pc/normal.mod not found
。除此之外,我还尝试使用可启动的 USB 驱动器来运行 Ubuntu 14、16、17、18 甚至 Windows 操作系统,但总是进入 grub 救援窗口。
这让我有以下疑问:
我是否将错误的驱动器设置为根驱动器(假设这是 5 个列出的驱动器中唯一的 ext2 驱动器)?
有没有办法将
/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 启动,您可以执行以下操作:
从执行后看到的信息中选择要启动的内核和初始化内存磁盘:
grub> ls (xxx,xxx)/boot/
然后输入以下内容:
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)
,否则您将收到错误。