上周给一台跑了很久的 Debian 做了一次 apt full-upgrade,内核从 6.1 升到了 6.12。当时没多想就重启了,结果机器直接掉进 grub rescue,提示 error: unknown filesystem。机器在机房,幸好带 IPMI,不然半夜就得跑一趟。
问题在哪
进 rescue 模式看了一圈,发现是 GRUB 装错了盘:机器有两块盘,升级后引导记录找不到了,分区 UUID 也对不上。
修复过程
用 Live USB 起起来,把系统盘挂载好,chroot 进去重装 GRUB:
mkdir /mnt/system
mount /dev/sda2 /mnt/system
mount /dev/sda1 /mnt/system/boot
mount --bind /dev /mnt/system/dev
mount --bind /proc /mnt/system/proc
mount --bind /sys /mnt/system/sys
chroot /mnt/system
grub-install /dev/sda
update-grub
退出 chroot、卸载分区、拔掉 U 盘重启,系统正常起来了。
两个教训
- 机器有两块盘的时候,
grub-install的目标盘一定看清楚,别想当然; - 内核升级这种事,能带 IPMI / KVM 就带上,省得跑机房。
顺手把 unattended-upgrades 里的内核自动升级关了,以后升级内核手动来,挑个白天。