日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

制作镜像包时遇到的模块加载错误的问题

發布時間:2023/12/10 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 制作镜像包时遇到的模块加载错误的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近遇到一個問題,定制的一個鏡像包,在啟動后,發現有些內核模塊加載是錯誤的,有些是正確的。使用modinfo去查詢,可以看到加載的為內核版本中的模塊(非自己定制的模塊),而有些自己新增的模塊沒有加載成功。

這個問題也折騰了一兩天的時間,最開始時排查做包日志,發現在安裝rpm包時,%post后面的depmod都沒有生效,報了如下錯誤:

Installing : openvswitch-kmod-2.7.x86_64 40/340 depmod: ERROR: could not open directory /lib/modules/3.10.0.28_20.x86_64: No such file or directory depmod: FATAL: could not search modules: No such file or directory warning: %post(openvswitch-kmod-2.7.x86_64) scriptlet failed, exit status 1 Non-fatal POSTIN scriptlet failure in rpm package openvswitch-kmod-2.7.x86_64

為什么會報這個錯誤呢?

/lib/modules/3.10.0.28_20.x86_64

這個路徑,3.10.0.28_20為當前做包環境的內核版本,鏡像包中的內核版本為3.10.0.28_21,在做鏡像時有執行chroot操作,所以在鏡像的當前目錄中是沒有/lib/modules/3.10.0.28_20.x86_64這個目錄的。看來depmod執行時并不能很聰明的知道已經做過chroot操作。

因為獲取的都為做包環境中的內核版本,而非鏡像包中的內核版本。這樣,即使每個rpm包都執行了depmod,但是在鏡像包中卻沒有生成正確的modules.dep,即模塊依賴關系是錯誤的,所以用modinfo查詢也是錯的。

經過仔細排查,將幾個版本的做包日志打出來,發現每次出現加載錯誤的模塊有略微差異,好像在某個包之前安裝的包模塊加載都正確,在某個包之后安裝的包模塊加載就是錯誤的。后來經過排查分析比對,鎖定在了AXX包,果然,這個包里有如下操作:

echo "/lib/modules/%{kern_devel_ver}/extra/xx.ko" | /sbin/weak-modules --add-module --no-initramfs

而這個操作也會更新modules.dep。在安裝了這個包后,鏡像包中的modules.dep就發生了更新,在這個包之前安裝的包,其模塊都生成了正確的關系列表。而在這個包之后,再沒哪個包在安裝后會更新moduels.dep的,所以在這個包之后安裝的rpm包,模塊都沒有加載正確。

轉載于:https://www.cnblogs.com/xingmuxin/p/9132225.html

總結

以上是生活随笔為你收集整理的制作镜像包时遇到的模块加载错误的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。