启动新内核时出现Kernel panic及黑名单哈希错误,仅能启动旧内核且无法打开终端求助
启动新内核时出现Kernel panic及黑名单哈希错误,仅能启动旧内核且无法打开终端求助
看起来你遇到了内核更新后非常棘手的启动问题——新内核直接panic,旧内核连终端都打不开,我来帮你梳理下问题和解决思路:
首先先把你遇到的错误日志整理出来:
[ 1.836733] blacklist: Problem blacklisting hash (-13) [ 1.836911] blacklist: Problem blacklisting hash (-13) [ 1.836995] blacklist: Problem blacklisting hash (-13) [ 1.837048] blacklist: Problem blacklisting hash (-13) [ 1.870416] /deu/root: Can't open b1ockdev [ 1.870468] Kernel panic - not syncing: VFS : Unable to mount root fs on unknown-block(0,0) [ 1.870498] CPU: 2 PID : 1 Comm : swapper/0 Not tainted 6.2.0-32-generic #32-Ubuntu [ 1.870521] Hardware name: MEDION E3216 MD61800/MT13A, BIOS V2.0.13_P2S0T1P1F3G2C2 05/11/2018 [ 1.870544] Call Trace: [ 1.870555] <TASK> [ 1.870567] dump_stack_lvl+0x48/0x70 [ 1.870586] dumpstack+Ox10/0x20 [ 1.870598] panic+Ox37b/Ox3cO [ 1.870615] mount_block_root+Ox2c9/0x2d0 [ 1.870632] mount_root+Ox83/OxbO [ 1.870645] prepare_namespace+Oxf5/0x200 [ 1.870659] kernel_init_freeable+Ox1e5/0x220 [ 1.870674] __pfx_kernel_init+Ox10/0x10 [ 1.870692] kernel_init+Ox1b/Ox200 [ 1.870706] pfx_kernel_init+Ox10/0x10 [ 1.870739] ret_from_fork+Ox2c/Ox50 [ 1.870755] </TASK> [ 1.870872] Kernel Offset: Ox19000000 from Oxffffffff81000000 (relocation range: Oxffffffff80000000-Oxffffffffbfffffff) [ 1.870908] --I end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) 1---
问题分析
从日志里能看到两个关键问题:
- 黑名单哈希错误(
Problem blacklisting hash (-13)):大概率是内核模块黑名单配置损坏或格式错误,但这不是致命问题; - VFS无法挂载根文件系统(
Unable to mount root fs on unknown-block(0,0)):这是直接导致内核panic的原因,说明新内核找不到你的根分区,可能是initramfs(内核初始化镜像)没包含必要的磁盘驱动、GRUB里的根分区UUID配置错误,或者内核更新时initramfs生成失败。
因为你旧内核里也打不开终端,只能通过Ubuntu Live USB来修复,步骤如下:
解决步骤
- 制作Ubuntu Live USB:找另一台电脑,下载和你系统同版本的Ubuntu ISO,用Rufus或者Ubuntu自带的启动盘创建工具制作可启动USB;
- 从Live USB启动:插入你的电脑,开机按BIOS启动快捷键(一般是F12、Esc或Del)选择USB启动,进入「试用Ubuntu」模式;
- 挂载你的系统分区:
- 打开试用模式里的终端,输入
sudo fdisk -l查看磁盘分区,找到你的根分区(通常是/dev/sda2或/dev/nvme0n1p2,可以通过分区大小、类型判断); - 创建挂载点并挂载根分区:
sudo mount /dev/你的根分区路径 /mnt; - 如果是UEFI启动,还要挂载EFI分区:
sudo mount /dev/你的EFI分区路径 /mnt/boot/efi(BIOS启动可跳过这步);
- 打开试用模式里的终端,输入
- 修复内核初始化镜像和GRUB引导:
- 切换到你的系统环境:
sudo chroot /mnt; - 针对出问题的6.2.0-32-generic内核重新生成initramfs:
sudo update-initramfs -u -k 6.2.0-32-generic; - 更新GRUB引导配置:
sudo update-grub;
- 切换到你的系统环境:
- 修复黑名单配置(可选):
- 检查
/etc/modprobe.d/目录下的黑名单文件,有没有语法错误的条目(比如格式不对的哈希值),如果有就删除或修正; - 修正后重新执行一次第4步的initramfs生成命令即可;
- 检查
- 退出并重启:
- 输入
exit退出chroot环境,然后依次执行sudo umount /mnt/boot/efi(如果挂载了的话)、sudo umount /mnt; - 拔掉Live USB,重启电脑,尝试选择6.2.0-32-generic内核启动。
- 输入
如果还是不行,可能是这个新内核缺少你的磁盘控制器驱动,你可以在Live环境的chroot里卸载这个有问题的内核:
sudo apt remove linux-image-6.2.0-32-generic linux-headers-6.2.0-32-generic sudo update-grub
之后等待下一个官方内核更新再尝试即可。
备注:内容来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

