openeuler 24.04 升级内核之后,外部驱动安装卸载失败。

发现问题步骤:

1.在openeuler 24.03上,旧版本上安装过外部驱动安装包,用dnf命令升级内核到6.6.0-145.0.2.130.oe2403。

2.重启后用rpmbuild命令编译外部驱动rpm包。

3.rpm命令安装卸载rpm包失败。

4.modinfo 读取驱动信息,发现vermagic指向的是升级前的版本号。

问题原因:

1.新的内核配置了weak-modules选项,升级内核之后会对外部驱动进行kabi检查,如果没变化,就会在/lib/modules//weak-updates/下面生成一个软连接指向之前内核安装的驱动。

2.新版本内核修改了kernel config,编译的驱动模块格式是megaraid_sas.ko.xz, 旧版本内核编译的是megaraid_sas.ko。

所以内核升级之后,驱动指向的是之前的ko格式,但是当前版本编译的安装包是ko.xz格式,安装卸载的时候格式不匹配。会导致找不到文件。安装卸载失败。

解决办法:

目前想到的有两种,一种是升级内核之前,卸载外部驱动,升级之后在安装。另一种是升级内核之后,删除旧版本驱动的软链接,再进行安装。