我刚刚从 Debian 9 升级到 Debian 10,遇到了一个奇怪的问题。对于从事更复杂的系统管理工作的人来说可能不是太奇怪,这就是我把它带到这里的原因:
在整个升级过程中,我还将内核升级到如下状态:
$ dpkg -l | grep linux-image
ii linux-image-4.19.0-12-amd64 4.19.152-1 amd64 Linux 4.19 for 64-bit PCs (signed)
ii linux-image-amd64 4.19+105+deb10u7 amd64 Linux for 64-bit PCs (meta-package)
但是,重新启动时,服务器无法上线,而是触发 Kimsufi(OVH 分销商/经销商)的自动警告,称服务器存在问题(好像我等了一个小时才重新启动,却不知道这一点……)。他们的自动响应将服务器重新启动到“救援模式”,更具体地说,重新启动到以下模式:
$ uname -r
4.19.62-mod-std-ipv6-64-rescue
显然,我安装的内核 (4.19.0) 实际上比他们的救援内核 (4.19.62) 更旧。但我怀疑这是问题所在。... 还是问题所在?
在启动到救援内核时,我怎样才能找出是什么阻止了我的计算机启动?/var/log/boot.log
不存在,并且messages
只有来自救援内核启动的日志消息 - 没有暗示尝试启动我的计算机。
为了完整起见,这里是生成的 GRUB 配置的要点:https://gist.github.com/IngwiePhoenix/315df5d75551ce1f4d5f61e34fdb9956
因为硬盘模式对于启动来说并非不重要:
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 4096 1050623 1046528 511M 83 Linux
/dev/sda2 1050624 3863281250 3862230627 1.8T 83 Linux
/dev/sda4 3905972224 3907018751 1046528 511M 82 Linux swap / Solaris
答案1
经过大量的查找后,我不断地将 GRUB 单挑出来,最终偶然发现了这个/etc/defaults/grub
文件并意识到:GRUB 保存了一种默认启动方法,而这种方法已经不存在了!
删除“ovhkernel”后,我实际上就剥夺了 GRUB 的默认启动选项。因此,服务器根本无法启动,只是停留在一个混乱的 GRUB 屏幕上(我看不到,因为 Kimsufi 没有“远程 kvm”功能)。
通过使用他们的选项,使用不同的内核启动并将我的主驱动器用作根驱动器,我能够重新配置 GRUB 并设置新的默认值。猜猜怎么着 - 这就是解决办法。
因此,如果您更新内核,您可能需要设置 GRUB 默认值。这可能会让您省去一些麻烦。我为此浪费了大约 5-7 个小时 - 我本可以花更多的时间做些更有效的事情,因为实际上只需运行一个命令即可……