grub rescue -> 没有这样的分区

grub rescue -> 没有这样的分区

我的计算机遇到了一个大问题...

我已经缩小了 Windows 分区,当我重新启动时,grub 救援出现了错误消息:“没有这样的分区“。

此外,我无法访问 BIOS,因此似乎无法更改启动顺序以在我的 Live USB 或 Live CD 上启动。

命令行ls给我: (hd0) (hd0,1) (hd0,2) (hd0,3)

我有一个恢复 Windows 分区(我认为是 1)、一个 Windows 分区和一个 Linux 分区。

然而,命令行ls (hd0,1)ls (hd0,2)(hd0,3)给我错误信息:“未知文件系统“所以我无法再设置启动项了。

你有什么主意吗?

答案1

grub rescue>提示表示 GRUB 2 已找不到 grub 文件夹、grub.cfg 文件和/或相关模块。显示救援提示,以便用户可以提供 grub 文件夹的路径、加载必要的模块并提供正确的启动命令。

出现该提示的一个常见原因grub rescue>是 grub 文件夹路径不正确。出现该提示的原因还包括在某些系统或分区操作、grub 文件夹位置指定不正确、缺少 linux 或 initrd.img 符号链接/,或者安装失败。

要从grub rescue>提示符成功启动:

  1. grub 文件夹必须存在且包含必要的 GRUB 2 文件和模块。
  2. 必须通过命令设置正确的路径set prefix除非设置了正确的路径,否则许多 GRUB 2 命令将无法运行。如果 grub 文件夹的路径(通常/boot/grub)不正确,则可能会出现“未知命令”或“未找到文件”消息。
  3. 必须加载必要的模块。只有加载“linux”模块后,才能加载内核。
  4. 必须找到并加载 Linux 内核和 initrd.img。

在您的情况下,grub 文件夹和 grub.cfg 似乎可用但无法访问,因为无法安装操作系统的分区,因为未加载相应模块或在调整大小期间损坏。要加载模块,您的 grub 应该完全加载或应设置前缀。

为此,请执行以下操作:

  1. set prefix=(hdX,Y)/boot/grub
    使用先前确定的值。例如:如果 Ubuntu 系统在 sda5 上,请输入:
    set prefix=(hd0,5)/boot/grub
    就您而言,它很可能是(hd0,3)
  2. set root=(hdX,Y)
    确认 X、Y 值正确后按回车键。例如:如果 Ubuntu 系统在 sda5 上,则输入:set root=(hd0,5)
  3. insmod normal:加载正常模块。
    如果模块加载成功,则不会出现任何消​​息。如果模块加载失败,请尝试完整路径:insmod (hdX,Y)/boot/grub/normal.mod
  4. normal:转换为具有增强功能的正常 GRUB 2 模式。如果模块加载,则不会出现任何消​​息。如果模块加载,则应该可以使用帮助、Tab 补全和使用 UP/DN 键调用命令。
  5. set (可选)检查当前设置。
  6. insmod linux:加载linux模块,错误信息一般是路径不正确。
  7. configfile /boot/grub/grub.cfg. 这应该会加载允许启动所有操作系统的配置文件。

答案2

就像声明的那样别处,正确的命令是ls (hd0,1)/。请尝试看看这是否会列出文件系统的内容。

在 grub 中手动加载系统

如果 (hd0,3)/ 中不存在 vmlinuz 和 initrd.img,则必须指定它们的确切位置才能启动 Linux。因此,在 grub 中(请根据您的设置调整 vmlinuz 和内核版本)>

set root=(hd0,3)
linux (hd0,3)/vmlinuz root=/dev/sda3 ro

或者如果 (hd0,3)/vmlinuz 不存在:

linux (hd0,3)/boot/vmlinuz-2.6.32.25-generic root=/dev/sda3 ro

然后

initrd (hd0,3)/boot/initrd.img 

或者如果 (hd0,3)/initrd.img 不存在:

initrd (hd0,3)/boot/initrd.img-2.6.33-25-generic 
boot

更多信息请见这里

相关内容