Ubuntu 20.04升级发行版后启动失败触发Kernel panic,寻求系统恢复方案
Ubuntu 20.04升级发行版后启动失败触发Kernel panic,寻求系统恢复方案
我完全理解你现在的崩溃心情——好好的服务器因为一个软件的依赖问题,折腾到升级发行版失败、启动Kernel panic,还得用系统救援ISO来救场。先别慌,咱们先理清楚整个事件的来龙去脉,再一步步动手恢复系统:
你的操作回顾
- 原本运行Ubuntu 20.04.5 LTS,安装了VS Code、JDK、direnv后,尝试安装Protostar脚本,结果遇到
GLIBC_2.35 not found的依赖错误 - 尝试安装libpython3.9、强制安装libc6都没解决问题,还因为添加Ubuntu 18的旧源搞坏了dpkg和apt,后来手动修复才恢复了包管理功能
- 为了解决Protostar的GLIBC依赖,执行
sudo do-release-upgrade升级发行版,结果服务器重启失败,触发Kernel panic,报错:failed to execute /init (error -2) Kernel panic - not syncing: no working init found. Try passing init= option to kernel.
现在你已经挂载了SystemRescue ISO,接下来按照以下步骤操作:
一、进入系统救援环境并挂载你的主分区
- 启动服务器进入SystemRescue,选择进入命令行模式(或者图形界面的终端)
- 先识别你的主分区:执行
fdisk -l,找到那个ext4格式的主分区(通常是/dev/sda2这类,根据分区大小判断,就是你说的包含所有系统文件夹的分区) - 把这个分区挂载到/mnt目录(替换
/dev/xxx为你找到的主分区设备名):mount /dev/xxx /mnt - 挂载系统必需的虚拟目录,这样我们就能在挂载的系统环境里操作了:
mount --bind /dev /mnt/dev mount --bind /proc /mnt/proc mount --bind /sys /mnt/sys - 切换到挂载的系统环境(相当于进入你的原系统):
chroot /mnt
二、修复升级失败导致的核心问题
1. 修复GRUB引导
升级失败很可能破坏了GRUB的配置,先重新安装并更新GRUB:
- 重新安装GRUB到磁盘(假设你的系统盘是/dev/sda,不要加分区号):
grub-install /dev/sda - 更新GRUB的启动配置:
update-grub
2. 修复损坏的系统包
升级过程中断可能导致部分包损坏,用包管理工具修复:
- 检查损坏的包:
dpkg --audit - 修复依赖损坏的包:
apt --fix-broken install - 重新配置所有已安装的包:
dpkg --configure -a
3. 修复initramfs(解决no working init found错误)
这个报错大概率是initramfs损坏或者丢失导致的,重新生成initramfs:
update-initramfs -u -k all
如果执行时提示文件系统错误,可以先退出chroot,卸载主分区,然后执行fsck /dev/xxx检查并修复文件系统(注意:不要挂载分区时执行fsck),之后再重新挂载并chroot执行上面的命令。
三、完成修复后重启服务器
- 退出chroot环境:
exit - 卸载所有挂载的目录:
umount /mnt/sys umount /mnt/proc umount /mnt/dev umount /mnt - 重启服务器,移除SystemRescue ISO,尝试正常启动。
如果重启后还是有问题,可以在GRUB启动菜单中选择“高级选项”,尝试用旧内核启动,或者在GRUB编辑模式中添加init=/bin/bash参数进入单用户模式,进一步排查问题。
备注:内容来源于stack exchange,提问作者Astor Wilyam
相关产品推荐
相关产品推荐

