银河麒麟v10升级内核后启动失败,需重建initramfs:先进入救援模式挂载原系统并chroot,再用dracut -f --regenerate-all重建对应内核的initramfs镜像,确认nvme等关键驱动已嵌入,并更新grub.cfg。

银河麒麟V10升级内核后系统卡在“loading initial ramdisk…”或直接进入emergency mode,说明当前运行的内核对应initrd镜像文件已丢失或损坏,必须手动重建才能恢复启动链路。
确认缺失的initrd文件名
开机时按 Esc(UEFI)或 Shift(Legacy BIOS)进入GRUB菜单→按 e 编辑启动项→找到以 linux 开头的行,记下末尾的内核版本号,例如 vmlinuz-5.10.110-29.p173.ky10.x86_64。
该版本号就是你要重建initrd的目标标识,对应initrd文件应为 initramfs-5.10.110-29.p173.ky10.x86_64.img。
进入救援模式挂载原系统
使用同版本麒麟V10安装U盘启动→选择 Troubleshooting →选择 Rescue a Kylin Linux Advanced Server system →按回车→输入 1 以读写方式进入shell。
执行 df -h 查看分区挂载情况,确认原系统根分区(如 /dev/sda3)和 /boot 分区(如 /dev/sda1)设备名。
依次执行:
mount /dev/sda3 /mnt/sysroot →
mount /dev/sda1 /mnt/sysroot/boot →
chroot /mnt/sysroot
此时你已进入原系统环境,所有命令操作均作用于故障系统本身。
重建initrd镜像
方法一:使用dracut命令(推荐)
执行 dracut -f --regenerate-all,该命令会扫描 /lib/modules/ 下所有已安装内核模块,自动为当前运行内核(即 uname -r 输出)重建initramfs,并写入 /boot/ 目录。
方法二:指定内核版本重建
若当前chroot环境中未运行目标内核,先确认目标内核是否存在:ls /lib/modules/ | grep "5.10.110-29.p173.ky10.x86_64" →存在则执行:dracut -f /boot/initramfs-5.10.110-29.p173.ky10.x86_64.img 5.10.110-29.p173.ky10.x86_64。
【注意:必须确保 /boot 分区已正确挂载且有足够空间(至少100MB),否则dracut会静默失败且不报错】
方法三:验证生成结果
执行 ls -lh /boot/initramfs-*.img,确认目标文件已存在且大小在25MB~45MB之间;再用 lsinitrd /boot/initramfs-5.10.110-29.p173.ky10.x86_64.img | grep nvme 检查关键驱动(如nvme.ko)是否已嵌入——若无输出,说明dracut未加载对应模块,需检查 /lib/modules/5.10.110-29.p173.ky10.x86_64/kernel/drivers/nvme/ 路径是否存在。
更新GRUB配置并退出
执行 grub2-mkconfig -o /boot/grub2/grub.cfg,强制刷新引导菜单,确保新initrd路径被写入配置。
依次执行:
exit →
umount -R /mnt/sysroot →
reboot











