“failed to start load kernel modules”错误表明systemd-modules-load.service加载/etc/modules-load.d/中指定模块失败,常见原因包括模块缺失(如dm_mod、vboxdrv)、配置残留或initramfs未更新;需通过journalctl定位具体模块,注释无效配置,执行dracut -f --regenerate-all重建initramfs,必要时重装linux-image与linux-modules包。

麒麟OS开机时出现“Failed to start Load Kernel Modules”错误,说明systemd在启动阶段尝试加载配置文件中指定的内核模块失败,系统虽可能仍能进入桌面或TTY,但部分硬件(如LVM根分区、显卡加速、USB设备、虚拟化支持)可能无法正常工作,【若root位于LVM逻辑卷上,该错误极可能导致后续无法挂载根文件系统而直接卡死】。
确认具体失败模块名称
开机后若能进入图形界面或TTY,请立即执行:
sudo journalctl -b | grep -i "failed.*module"
若看到类似“Failed to find module 'dm_mod'”或“Module 'vboxdrv' not found”,就锁定了问题模块。注意:journalctl默认只显示本次启动日志,-b参数不可省略;若输出为空,改用sudo journalctl -b _UNIT=systemd-modules-load.service查看服务专属日志。
检查并清理无效模块配置
systemd-modules-load.service依据/etc/modules-load.d/目录下所有.conf文件逐行加载模块。常见错误是残留了已卸载驱动的配置项。
列出全部配置文件:
ls /etc/modules-load.d/
逐个查看内容,重点检查是否含已移除软件的模块名,例如bbswitch(笔记本独显切换)、vboxdrv(VirtualBox)、nvidia(NVIDIA驱动未安装时)等:
cat /etc/modules-load.d/*.conf
找到对应行后,用nano编辑该文件,**在行首加#注释掉整行**,保存退出。例如将“vboxdrv”改为“#vboxdrv”。【切勿直接删除整行,避免因空行或语法错误导致解析失败】
重建initramfs镜像(关键修复步骤)
当模块本身存在但initramfs未包含它(如更新内核后未同步更新镜像),或模块依赖链断裂时,必须强制重建初始化内存盘。
第一步:确认当前运行内核版本:
uname -r
第二步:执行完整重建命令:
sudo dracut -f --regenerate-all
这一步会扫描所有已安装内核、重新打包/boot/initramfs-*.img,并确保dm_mod、ext4、xhci_hcd等基础模块被自动纳入。若提示“no kernel modules found”,说明/lib/modules/$(uname -r)目录为空或损坏,需跳转至“重装内核包”环节。
重装内核与模块包(适用于模块目录丢失)
方法一:使用APT在线重装(推荐,适用于网络正常)
sudo apt install --reinstall linux-image-$(uname -r) linux-modules-$(uname -r) linux-firmware
方法二:从Live USB离线恢复(适用于无网络或APT损坏)
1. 启动麒麟OS Live USB → 选择【Troubleshooting】→【Rescue a Kylin Linux Advanced Server system】
2. 执行exit退出向导,进入shell
3. 运行lsblk -f识别原系统根分区(如/dev/sda5)和/boot分区(如/dev/sda2)
4. 挂载原系统:
mkdir -p /mnt/sysroot
mount /dev/sda5 /mnt/sysroot
mount /dev/sda2 /mnt/sysroot/boot
5. chroot /mnt/sysroot
6. 执行apt install --reinstall linux-image-$(uname -r) linux-modules-$(uname -r)











