尝试读取或写入磁盘 hd0 之外的内容 ubuntu

尝试读取或写入磁盘 hd0 之外的内容 ubuntu

我在使用 Ubuntu 18.04 时遇到了问题。它一直运行良好,直到我不得不更换台式机的通风风扇。自从我更换了风扇,并在 CPU 和主板的其他部件上使用喷雾除尘器后,我在启动时收到以下消息,导致系统停止:

尝试读取或写入磁盘 hd0 之外的内容 ubuntu

按任意键继续....

没有机会执行 StackExchange 上其他类似帖子中描述的任何操作,因此我实际上无法做任何事情。但是,如果我一次又一次地重新启动,在某个阶段,此警告不会出现,系统会正常启动。

有什么方法可以解决这个偶尔出现的问题,还是我应该继续现状并不断重新启动直到它解决?

更新 #1经 heynnema 修正后。

所有磁盘都转换为 GPT 表。重新安装了 Ubuntu 18.10,但它没有启动。我得到的只是 Ubuntu 点的启动动画,这些点从左到右闪烁,背景中没有任何颜色,也没有发生任何事情。插入快照:

在此处输入图片描述

再次重启后,Ubuntu 的常规背景就会出现,但和上一种情况一样,它只是从左到右闪烁其进程灯。什么也没发生,系统没有启动。我该怎么办?我应该转到另一个表结构吗?

更新 #2:将 BIOS 更新为最新版本。尝试通过擦除磁盘并使用 LVM 设置来重新安装 Ubuntu。进入 LVM 菜单创建启动表时安装停止。什么都没发生,按钮都不起作用。在 LIVD CD 完全启动之前,它会显示一个带有白色文本的黑屏:

APEI 无法启动 mem [342423e4dxxx..] 或类似的东西

Ubuntu 试用版在 Live CD 上启动,当尝试从 LIVE CD 格式化启动驱动器时,在 Gparted 中,格式化选项被隐藏,无法使用。进入安装设置,然后在安装选项中再次选择“擦除磁盘并安装 Ubuntu”,现在显示:

计算机未检测到操作系统

跳过 LVM

安装正在提前进行。

安装再次失败。与上图所示的屏幕相同。

答案1

我经常看到有人抱怨这种错误。我研究了各种答案,它们全都是乱七八糟的,没有一个真正有意义的。所以我想我自己去尝试一下 :-)

首先要做的是检查文件系统,就像这样......

  • 启动至 Ubuntu Live DVD/USB
  • 打开terminal窗户
  • 类型sudo fdisk -l
  • 识别“Linux 文件系统”的 /dev/XXXX 设备名称
  • 输入sudo fsck -f /dev/XXXX# 用你之前找到的数字替换 XXXX
  • 如果有错误,请重复 fsck 命令
  • 类型reboot

接下来,我想看看你的硬盘是如何组装的。编辑你的问题,包括gparted查看启动盘时的屏幕截图。

还请向我展示sudo fdisk -lsudo blkidfree -hswaponcat /etc/fstabls -al /boot。我知道有很多事情要做,但我们必须从某个地方开始。将输出复制/粘贴到您的问题的编辑中,请不要使用评论,或使用截图。如有必要,请使用 {} 图标帮助格式化文本。

另外请演示给我看systemctl status ureadahead,和grep -i ureadahead /var/log/syslog*

特别是因为这个问题有些间歇性,请理解这个故障排除和修复可能需要一些时间,所以请非常耐心。

更新#1:

尽管我还没有看到我所要求的全部信息,但我已经看到足够的信息来得出一些结论。

  • 所有四个 1TB 磁盘(sda/b/c/d)都使用 MBR 分区表格式化。它们应该是 GPT 分区表。

  • sda2“未从物理扇区边界开始”。

  • ureadahead 正在失败/var/log/syslog,应在 18.xx 中将其禁用。

  • 有可能启用了某种 ramdisk 软件,正如我/dev/ramX在 中看到的那样sudo fdisk -l。如果是这样,应该将其禁用。

该怎么办?

  • 启动 Ubuntu Live DVD/USB 并运行memtest一次完整过程

  • 备份所有磁盘

  • 确保您的计算机UEFI在 BIOS 中设置为模式

  • 在所有 4 个磁盘上安装 GPT 分区表(这将擦除这些磁盘

  • 在 sdb/c/d 上重新创建 ext4 分区

  • 在 sda 上重新安装 Ubuntu

  • 看起来你有一个 48G 的交换空间...这太疯狂了...除非你正在休眠,然后大小需要很大...做一个小得多的交换

  • 重新运行sudo fdisk -l并确认所有分区都已对齐

  • 禁用 ureadahead

    • sudo systemctl stop ureadahead

    • sudo systemctl disable ureadahead

  • 不要安装任何 ramdisk 软件,如果你之前已经

  • 恢复数据

答案2

这可能是 Grub 安装的问题。可能是在硬关机(即在未真正关机的情况下关闭 PC)时写入了错误文件。

您可以尝试通过重新安装所有 Grub 软件包来强制重写所有 grub 文件。不要删除它们然后重新安装它们。如果在卸载软件包时出现问题,您可能无法再次重新启动:

sudo apt-get install --reinstall $(dpkg -l | awk '{ print $2 }' | grep grub)
sudo update-grub

命令“dpkg -l | awk '{ print $2 }' | grep grub”列出您的 grub 相关软件包。例如(在我的系统上):

grub-common
grub-efi-amd64
grub-efi-amd64-bin
grub-efi-amd64-signed
grub-legacy-ec2
grub2-common

答案3

我刚刚在 5.0.0.27 中自己解决了这些问题之一。运行 fsck 时没有出现任何错误。

我最终从闪存驱动器启动,将 /boot/grub/grub.cfg 移至备份文件,然后将备份文件复制回原始名称。对 /boot/init... 文件和 /boot/vmlinuz... 文件执行了相同的操作。现在我的系统启动了!

我的系统安装在单个 4TB 分区上,我认为其中一个文件超出了 grub 的可读范围。执行移动和复制似乎已将它们放回到 grub 现在可以读取它们的位置。

当我尝试在 grub 中“cat /boot/grub/grub.cfg”时,我偶然发现了这种方法,并且我得到了同样的关于读取 hd0 之外的错误。当我从闪存驱动器启动时,我可以毫无问题地安装 /dev/sda2 分区并读取文件。因此我知道文件仍然完好无损。这让我想到,如果启动文件“太远”,grub 根本无法处理 4TB 驱动器。也许对我来说是时候让 /boot 成为一个单独的较小分区了!

相关内容