我在使用 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 -l
和sudo blkid
和free -h
和swapon
和cat /etc/fstab
和ls -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 成为一个单独的较小分区了!