我有一个使用 Ubuntu Mate 17.04 的双启动设置,已完全修补并保持最新状态。(首先安装另一个操作系统 Windows 10。然后使用默认选项安装 Ubuntu。)
然而,最近,每次sudo apt-get dist-upgrade
运行非平凡程序(即尝试安装某些东西)时,都会发生一系列奇怪的事件:
- 将会打印出前几个命令,看似成功了。
- 其余操作将会因有关只读文件系统的奇怪错误而失败,并且操作将自行中止。
- 现在启动失败。有时,我可以启动 Windows,但启动 Linux 要么失败,要么进入恢复 shell。
- 我使用 USB 恢复驱动器启动。
gparted
给出了有关坏超级块的奇怪警告。我着手修复它(只需要最后一个命令,但前两个命令告诉我该怎么做):sudo fdisk -l | grep Linux | grep -Ev 'swap'
sudo dumpe2fs /dev/nvme0n1p6 | grep superblock
sudo fsck -b 32768 /dev/nvme0n1p6 -y
- 它打印出很多垃圾和负数并说它改变了一些东西。
- 重新启动进入真正的 Linux。
sudo apt-get dist-upgrade
现在可以运行完成,没有任何奇怪的错误。- 重新启动任一操作系统均可。
sudo apt-get autoremove
删除旧的 Linux 内核。- 重启失败。使用步骤 4-7 再次修复。
奇怪的是,这是可重复的(在我尝试 dist-upgrade 的最后 3 次中都发生过这个序列),并且在其他操作中不会发生。
我怀疑 Ubuntu 在尝试更新每个更新的 Linux 内核的引导加载程序时错误地更新了超级块。我暂时排除了以下可能性:
- 从本质上来说,这不是 Windows 的问题。损坏发生时甚至没有启动 Windows。但是,Linux 可能会被启动模式搞糊涂。
- 不是硬盘的问题。该驱动器几乎是全新的 SSD,第一次发生这种情况时,我检查了驱动器表面以查找坏块。无论如何,驱动器硬件一旦发现坏块就会重新映射,并且不会再次破坏超级块。
我的问题:我该怎么做才能解决这个问题?否则,下次不可避免地发生这种情况时,我应该从日志、配置角度查看什么,以便进行调试?