我最近在 Gen8 HP 微型服务器的 SSD 上安装了 Ubuntu。几个星期以来,它运行良好,但现在却无法启动。
有一天,它突然开始拒绝启动,并出现“没有系统磁盘或磁盘错误”的错误。
我设法从 Ubuntu LiveUSB 启动并从那里访问驱动器及其所有内容,因此磁盘看起来很健康。
我尝试跑步引导修复但这并没有什么区别。
我尝试擦除驱动器并重新安装 Ubuntu - 第一次失败,提示“无法在所需位置安装引导加载程序”。第二次,它似乎安装得很好,但我仍然无法启动它 - BIOS 似乎找不到任何可启动的驱动器,然后开始尝试从 NIC 启动。
有什么建议我可以尝试吗,或者可能是驱动器有故障?
答案1
您的 GRUB 未正确安装到磁盘。这通常是由于固件错误或与此相关的问题造成的。或者您的磁盘可能有故障。
您确实在使用 BIOS?我之所以问这个问题,是因为很多主板上的 CSM 模块(BIOS 兼容层)相当有限且存在错误。在大多数情况下,您最好使用 EFI 进行引导,并将引导磁盘上的 ESP 分区格式化为 VFAT。GRUB 仍会安装,但它是由 OS 驱动器本身提供的标准固件扩展调用的。它实际上是一种链式加载形式,但它非常可靠(并且更可靠地进行更改)。
如果您必须使用 BIOS,顽固的固件通常会接受“手动” GRUB 安装。我们必须手动安装的原因各不相同,但通常与自动磁盘检测期间返回的无效值有关。为此,您需要使用实时发行版(Ubuntu 就可以)启动并创建 chroot 环境。如果您对此感到困惑,本指南将为您提供帮助:http://www.cyberciti.biz/faq/unix-linux-chroot-command-examples-usage-syntax/
一旦进入 chroot,您就必须对磁盘有所了解。您应该能够使用以下命令成功将 GRUB 写入 MBR:(grub-install /dev/sda
或根据您对此系统的需求执行类似操作)。如果您遇到错误,我们可以处理这些错误,但这样您可以获得更多输出。
或者,检查磁盘是否有缺陷。您可以使用制造商工具进行完整性检查,也可以使用 smartmontools。Smartmontools 将为您提供驱动器寿命的详细报告,包括驱动器是否有任何不可恢复的扇区或待处理的扇区。这些都是磁盘故障的确切迹象,如果您发现这些情况,则应更换磁盘。
apt-get install smartmontools
如果尚未安装该实用程序,则会安装它。smartctl -a /dev/sda
将打印磁盘的完整报告,您可以仔细查看以发现故障。smartctl -t long /dev/sda
将运行测试,您可以在一段时间后查看结果(在 SSD 上不会花费很长时间)。
最后,如果您在 BIOS 模式下安装仍然有问题,请以 EFI 模式启动安装程序并改用该模式。安装程序必须在 EFI 模式下启动才能安装 EFI 系统。Ubuntu 安装程序可以很好地完成此操作。
希望这些建议能有所帮助,因为 GRUB 启动问题可能是由各种不同的问题引起的。这些是最典型的。
答案2
这似乎是 HP ProLiant 服务器在 BIOS 模式下启动时的一个非常常见的问题(exp.https://forum.proxmox.com/threads/grub-error-on-reboot-device-not-found.38616)。遗憾的是,Microserver Gen8 无法在 uEFI 中启动,这使得解决方法并不容易。
我认为发生的情况是 HP BIOS 有一个错误,它错误地报告了驱动器大小。GRUB 不会查看报告的扇区,因此无法找到所需的文件。
我在从 ZFS(几乎整个磁盘)和位于驱动器末端的 MD 阵列启动时遇到过这种情况,即使使用当前 BIOS - 从 2018 年 5 月开始。特别是使用 ZFS 时,情况很糟糕 - 起初 GRUB 所需的数据可能在报告的范围内,因此启动正常。它只是在某一天停止了......我猜类似的问题可能会发生在 LVM 上......
对我有用的解决方案是为 /boot 数据创建一个物理位于磁盘开头的分区。
答案3
我相信您的问题可能是阵列控制器将 SSD 标记为故障:
答案4
为了以防万一,我发现这很有帮助。
我并没有完全按照它说的做,但经过两天的咒骂,它引导我启动了服务器。
https://op-co.de/blog/posts/microserver_gen8_fix_boot_order/