当我收到“尝试读取或写入磁盘‘hd0’之外的内容”错误并且启动修复无法解决问题时该怎么办?

当我收到“尝试读取或写入磁盘‘hd0’之外的内容”错误并且启动修复无法解决问题时该怎么办?

我尝试安装Xubuntu 13.10在较旧的计算机上。我在安装过程中发现一些可能与我的问题相关的困难。值得注意的是:

  1. 屏幕分辨率极低。窗口比屏幕大得多,我不得不移动它们才能到达“下一步”按钮。

  2. 鼠标光标是一片模糊的彩色并且一直闪烁。

安装完成后,我尝试重新启动计算机。我立即得到:

error: attempt to read or write outside of disk 'hd0'. 
Entering rescue mode... 
grub rescue>

我制造了一个引导修复USB 磁盘,启动它并选择默认修复。应用程序告诉我问题已修复,如果这不能解决我的问题,我应该显示此链接向能够帮助我的人寻求帮助。

我下一步该怎么做?我已经尝试安装 Ubuntu 和 Xubuntu,但都没有成功。

编辑:

我找到了一个解决方法。

  1. 插入 Xubuntu live USB
  2. 选择“尝试 Xubuntu”
  3. 在设置菜单中选择“安装 Xubuntu”

这为我解决了问题。由于问题已解决,我无法测试答案。

答案1

使用以下技术找到 Linux 所在的分区

grub rescue > ls
(hd0) (hd0, msdos9)
grub rescue > ls (hd0,msdos9)/
grub rescue > ls (hd0,msdos8)/
grub rescue > ls (hd0,msdos5)/ # suppose this is root and bootloader of linux
grub rescue > ls (hd0,msdos5)/
grub rescue > set root=(hd0,msdos5)
grub rescue > set prefix=(hd0,msdos5)/boot/grub
grub rescue > insmod normal
grub rescue > normal

现在,系统的启动菜单出现了。启动进入Linux。

sudo update-grub
sudo grub-install  /dev/sda # If the drive is hd0 the equivalent is sda, if it's hd1 then use sdb

这修复了引导加载程序。

答案2

对于遇到此问题的其他任何人:

我遇到过这种情况,新安装或 grub 修复可以正常工作并重新启动,但下次重新启动时,它会出现相同的“尝试读取错误”。大多数情况下,我都会遇到内核崩溃,计算机需要硬重启。

我遵循了一些建议,并使用高级选项进行了新安装(不要使用“擦除磁盘并安装 ubuntu”),使用了以下分区设置:

  1. 开始磁盘;安装在“/boot”中
  2. 在“/”中安装的 ext4 中创建所需的安装空间 减去你的交换区域
  3. 使用剩余空间进行交换。(所有分区都将是主分区)
  4. 在启动安装下拉菜单中,选择您的“/boot”分区。不是默认的驱动器根目录!

答案3

通过 Grub 救援提示可以轻松解决。第一个答案不太完整,我一开始也遇到了同样的错误。它的工作原理如下:

首先,我们需要找到主分区。Linux 启动所需的基本文件将驻留在此分区,因此我们输入以下内容 -

Grub> ls

您现在应该会看到一个类似于 (hd0) (hd0,msdos5) (hd0,msdos1) 的列表。请注意,您可能拥有与我不同的分区,以及多个驱动器,但过程是相同的。

现在搜索分区以找到主分区 -

Grub> ls (hd0)
Grub> ls (hd0,msdos5)
Grub> ls (hd0,msdos1)

直到 grub 输出该分区上的文件列表或显示文件系统类型和最后修改日期。

第二,找到主分区后,我们需要设置一些东西 -

Grub> set prefix=(hd0,msdos1)/boot/grub
Grub> set root=(hd0,msdos1)
Grub> set

一旦执行完最后一个 set 命令,Grub 将输出不同参数的列表。现在让我们检查一下是否设置了正确的根和前缀 -

Grub> ls /boot

Grub 应该输出 /boot 中包含的文件列表。

第三,我们需要设置挂载点并加载内核 -

Grub> linux /vmlinuz root=/dev/sda1
Grub> initrd /initrd.img

最后我们启动系统 -

Grub> boot

如果你最终启动到了 busybox shell,只需输入fsck /dev/sda1。之后只需输入exit,你的系统就会正常启动。

答案4

我通过将 Linux 分区移到硬盘开头附近解决了这个问题。当 Linux 分区位于我的 120 Gb HDD 末尾(距末尾 40 Gb)时,我遇到了这个问题。没有一个解决方案不起作用。将 Linux 分区从 40Gb 移动到 80Gb 后,问题消失了。

相关内容