场景:YUM/DNF repo 仓库里没有你目标网卡固件 rpm 包,但你手里有独立的固件二进制文件;repo 里有另一款同系列网卡的固件 rpm,想下载这个 rpm,拆开替换里面的固件文件,再安装使用。
%post脚本(固件加载触发、modprobe、depmod、initramfs 更新)rpm2cpio解压,替换 firmware 下 bin 文件,直接把文件丢到 /lib/firmware/:yum update会覆盖删掉你的固件;⚠严禁:直接修改 rpm 包内部文件,不重新构建 rpm 就 rpm‑ivh 强行安装,rpm 校验会失败,系统包数据库损坏风险。
yumdownloader --source firmware-xxx.src.rpm
# 或者下载二进制rpm,拆出spec文件
rpm -ivh firmware‑xxx.src.rpm
SOURCES/ 下对应的固件文件;.spec:改固件文件名、版本号,不要和原有包版本冲突;rpmbuild -ba xxx.spec,生成新的自定义 rpm;dnf install ./custom‑firmware‑xxx.rpm安装后 rpm 数据库完整,yum 升级不会乱覆盖,% post 脚本自动执行 depmod、更新 initramfs。
/lib/firmware/<厂商目录>/chmod 644 /lib/firmware/xxx‑nic‑fw.bin
depmod -a
dracut -f /boot/initramfs-$(uname -r).img $(uname -r)
rmmod 驱动名 && modprobe 驱动名
缺点:
- rpm 数据库无记录,后续
dnf update firmware‑*会删除你手动放的固件;- 内核升级后 initramfs 重新生成,你的自定义固件丢失,需要重复操作。
dmesg | grep firmware
failed to load firmware "xxx/abc.bin",你的固件文件名必须和这个完全一致,大小写敏感,名字错了驱动不会加载。哪怕固件内容是对的,文件名不对直接报错找不到固件。
# 查看驱动加载的固件版本
ethtool -i ethX
# 看固件加载日志
dmesg -T | grep -E 'firmware|nic|driver'
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论