我的计算机遇到了一个大问题...
我已经缩小了 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>
提示符成功启动:
- grub 文件夹必须存在且包含必要的 GRUB 2 文件和模块。
- 必须通过命令设置正确的路径
set prefix
。除非设置了正确的路径,否则许多 GRUB 2 命令将无法运行。如果 grub 文件夹的路径(通常/boot/grub
)不正确,则可能会出现“未知命令”或“未找到文件”消息。 - 必须加载必要的模块。只有加载“linux”模块后,才能加载内核。
- 必须找到并加载 Linux 内核和 initrd.img。
在您的情况下,grub 文件夹和 grub.cfg 似乎可用但无法访问,因为无法安装操作系统的分区,因为未加载相应模块或在调整大小期间损坏。要加载模块,您的 grub 应该完全加载或应设置前缀。
为此,请执行以下操作:
set prefix=(hdX,Y)/boot/grub
使用先前确定的值。例如:如果 Ubuntu 系统在 sda5 上,请输入:
set prefix=(hd0,5)/boot/grub
就您而言,它很可能是(hd0,3)
。set root=(hdX,Y)
确认 X、Y 值正确后按回车键。例如:如果 Ubuntu 系统在 sda5 上,则输入:set root=(hd0,5)
insmod normal
:加载正常模块。
如果模块加载成功,则不会出现任何消息。如果模块加载失败,请尝试完整路径:insmod (hdX,Y)/boot/grub/normal.mod
normal
:转换为具有增强功能的正常 GRUB 2 模式。如果模块加载,则不会出现任何消息。如果模块加载,则应该可以使用帮助、Tab 补全和使用 UP/DN 键调用命令。set
(可选)检查当前设置。insmod linux
:加载linux模块,错误信息一般是路径不正确。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
更多信息请见这里。