当前位置: 首页>>技术教程>>正文


grub2 – 当我收到“尝试在磁盘’hd0’外部读取或写入”错误并且Boot Repair无法解决问题时该怎么办?

问题描述

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

  1. 屏幕分辨率极低。窗口比屏幕大得多,我不得不将它们移动到”Next”按钮。

  2. 鼠标光标一直闪烁着颜色的模糊。

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

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

我制作了Boot Repair USB磁盘,将其启动并选择了默认修复。该应用程序告诉我问题已修复,并且如果这不能解决我的问题,我应该向可以帮助我的人显示this link

接下来我该怎么办?我已经尝试安装Ubuntu和Xubuntu,但都没有成功。

编辑:

我找到了解决方法。

  1. 插入Xubuntu活动USB

  2. 选择”try Xubuntu”

  3. 在设置菜单中,选择”install Xubuntu”

这为我解决了问题。既然解决了,我就无法测试答案。

最佳思路

在以下技术的帮助下找到存在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

这修复了引导加载程序。

次佳思路

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

这发生在我身上,在那里可以进行新的安装或grub修复,然后重新启动,但是下次我重新启动时,也会出现同样的“尝试读取错误”。大多数情况下,我会出现内核崩溃的情况,并且计算机将需要重新启动。

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

  1. 在磁盘的开头创建一个1 GB(1024 MB)的ext4分区;安装在”/boot”中

  2. 在安装在”/”的ext4中创建所需的安装空间,减去交换区域

  3. 使用剩余空间进行交换。 (所有分区都是主分区)

  4. 在启动安装下拉菜单中,选择您的”/boot”分区。不是默认的驱动器根目录!

第三种思路

通过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

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

Grub> ls /boot

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

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

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

最后,我们启动系统-

Grub> boot

如果最终引导进入busybox shell,只需输入fsck /dev/sda1即可。之后,只需输入exit,您的系统即可正常启动。

第四种思路

我通过将Linux分区移动到靠近硬盘的开头来解决了这个问题。当Linux分区位于我的120 Gb HDD的末尾(距离末尾40 Gb)时,出现了此问题。没有一个解决方案行不通。将linux分区从40Gb迁移到80Gb后,问题消失了。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9634.html,未经允许,请勿转载。