initramfs 重建后仍进不了系统的 --force --add-drivers 组合使用

发布时间 - 2026-01-30 00:00:00    点击率:
根本原因是驱动未真正进入initramfs或未被正确加载;--add-drivers仅复制模块文件,不保证自动加载,需配合modprobe规则、内核参数(如rd.driver.pre)或dracut配置确保加载。

initramfs 重建后系统卡在 initramfs shell,dracut --force --add-drivers 不生效?

根本原因通常是:驱动没真正进 initramfs,或进了但没被正确加载。常见于新装显卡驱动(如 nvidia)、RAID 卡(如 megaraid_sas)、NVMe SSD 控制器(如 nvme 或厂商定制模块)等场景。--add-drivers 只负责把模块文件复制进去,不保证自动加载——得靠 modprobe 规则或内核命令行触发。

  • --add-drivers 参数只接受模块名(不含 .ko),且必须是已安装到 /lib/modules/$(uname -r)/kernel/drivers/ 下的模块;若模块依赖其他模块(比如 nvidia-uvm 依赖 nvidia),要一并列出
  • 执行前确认当前运行内核和目标重建内核一致:uname -rls /lib/modules/ 下目录名需匹配,否则 dracut 会静默跳过驱动复制
  • --force 是必要的,但仅当已有 initramfs 缓存存在时才强制重生成;若 /boot/initramfs-$(uname -r).img 不存在,--force 实际无作用
  • 建议加上 --regenerate-all 替代单纯 --force,它会清空缓存并重新扫描全部模块,避免旧缓存干扰

如何验证驱动是否真的进了 initramfs

别只信命令返回成功。进 initramfs shell 后执行:lsinitrd /boot/initramfs-$(uname -r).img | grep -E "(nvidia|megaraid|mpt3sas|nvme)" —— 这能直接看到模块文件是否存在。如果没输出,说明 --add-drivers 失败了,常见原因是模块名拼错、路径不对、或模块未编译进内核(lsmod 看不到,modinfo xxx 报错)。

  • 模块名必须和 modinfo 输出的 name: 字段完全一致(例如 modinfo nvidia | grep name 显示 name: nvidia,就不能写成 nvidia.konvidia_drv
  • 某些驱动(如 AMDGPU PRO)带多个子模块,需全部列全:dracut --force --regenerate-all --add-drivers "amdgpu amdgpu_si amdgpu_cik"
  • 如果模块位于 /lib/firmware/ 下的固件(firmware blob),--add-drivers 不管它,得用 --force-drivers 或手动放进 /lib/dracut/modules.d/ 模块里

驱动进了 initramfs,但启动时仍找不到磁盘或设备

这时候问题不在“有没有”,而在“加不加得上”。initramfs 默认只按内核命令行里的 rd.driver.prerd.md=0 等规则加载模块;没显式声明的,即使存在也不会自动 modprobe。尤其 RAID、LVM、加密根分区场景下,驱动加载顺序和时机非常关键。

  • 在 GRUB 配置中给内核参数追加:rd.driver.pre=nvme,my_custom_driver rd.modprobe=1rd.modprobe=1 强制启用模块加载机制)
  • 若驱动需特定参数(如 megaraid_sasallow_msix=1),不能靠 --add-drivers 传参,得写进 /etc/dracut.conf.d/99-custom.confinstall_items+=" /lib/modules/$(uname -r)/kernel/drivers/scsi/megaraid_sas.ko " + 配合 force_drivers+=" megaraid_sas "
  • 某些 NVMe 设备在 UEFI 模式下需额外启用 rd.nvme=1,否则即使 nvme 模块存在,dracut 也不主动 probe

重建后 initramfs 大小异常小(WARNING: kernel version mismatch

这说明 dracut 根本没读对内核树,导致跳过了驱动扫描。典型表现是 --add-dri

vers 像没执行一样——因为模块列表为空。

  • 检查 /lib/modules/$(uname -r)/build 是否指向有效的内核源码目录(ls -l /lib/modules/$(uname -r)/build);若为 broken symlink 或空,dracut 会放弃模块分析
  • CentOS/RHEL 用户注意:kernel-devel 包版本必须与 uname -r 完全一致(包括 .el7.x86_64 后缀),否则 dracut 认为“无可用内核头文件”,不扫描驱动
  • Arch Linux 用户:确保已运行 sudo pacman -S linux linux-headers,且 linux-headers 版本严格匹配当前 linux
  • 手动指定内核版本可绕过自动探测:dracut --force --kver 6.6.30-1-lts --add-drivers nvme

最常被忽略的一点:dracut 不校验模块是否能被 modprobe 正常加载,只管复制文件。所以即便 lsinitrd 看到模块在,也得进 initramfs shell 手动 modprobe xxx 测试是否报 Invalid argumentUnknown symbol——那说明模块依赖缺失或 ABI 不兼容。


# linux  # centos  # 显卡  # nvidia  # ai  # amd  # 显卡驱动  # symbol  # 加载  # 进了  # 命令行  # 跳过  # 根本原因  # 也不  # 自动加载  # 多个  # 已有  # 找不到 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Python图片处理进阶教程_Pillow滤镜与图像增强  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  Laravel如何创建自定义中间件?(Middleware代码示例)  ,网页ppt怎么弄成自己的ppt?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  如何在局域网内绑定自建网站域名?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  googleplay官方入口在哪里_Google Play官方商店快速入口指南  如何基于PHP生成高效IDC网络公司建站源码?  如何批量查询域名的建站时间记录?  如何在万网利用已有域名快速建站?  如何在万网主机上快速搭建网站?  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  如何用美橙互联一键搭建多站合一网站?  详解jQuery中基本的动画方法  网站建设保证美观性,需要考虑的几点问题!  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  b2c电商网站制作流程,b2c水平综合的电商平台?  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  浅谈Javascript中的Label语句  如何在IIS中新建站点并解决端口绑定冲突?  Python正则表达式进阶教程_复杂匹配与分组替换解析  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  如何在Windows 2008云服务器安全搭建网站?  在线制作视频网站免费,都有哪些好的动漫网站?  微信小程序 HTTPS报错整理常见问题及解决方案  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  JavaScript实现Fly Bird小游戏  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  Laravel怎么判断请求类型_Laravel Request isMethod用法  如何彻底卸载建站之星软件?  EditPlus中的正则表达式实战(6)  企业网站制作这些问题要关注  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  如何用VPS主机快速搭建个人网站?  如何在VPS电脑上快速搭建网站?  开心动漫网站制作软件下载,十分开心动画为何停播?  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  浅谈redis在项目中的应用  进行网站优化必须要坚持的四大原则  利用JavaScript实现拖拽改变元素大小  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  Laravel用户密码怎么加密_Laravel Hash门面使用教程  ,怎么在广州志愿者网站注册?