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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

编译内核指定模块,筛选当前模块依赖的组件

發布時間:2023/11/27 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编译内核指定模块,筛选当前模块依赖的组件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于內核模塊編譯的過程中,往往我們僅僅需要其中一個小的模塊,但是卻因為內核源碼的龐雜而止步與模塊依賴的篩選過程中。
為了更加便捷得對內核各個模塊進行管理,這里提供一個小腳本來進行指定模塊相關得模塊留存,不相關的模塊代碼自動清除。

單獨對內核指定模塊進行編譯,主要使用如下命令:
在相對目錄為:../rpmbuild/BUILD/kernel-3.10.0-957.5.1.el7/linux-3.10.0-957.5.1.el7.x86_64的目錄下執行命令make M=fs/ceph,M為指定模塊代碼的路徑,我這里編譯的是ceph的內核模塊ceph.ko,所以指定路徑為fs/ceph

總體思路是:

  1. 重命名相對目錄下第一個文件夾中的一個文件或者文件夾
  2. 編譯需要編譯的KO,如果當前驅動依賴備份的文件夾,則會返回編譯失敗;
  3. 編譯成功,則刪除備份的文件夾或者文件

以下腳本的運行路徑同樣為以上的相對目錄下
PS:有一個文件Module.symvers可以提前備份,該文件并不影響編譯,但影響最終的驅動信息,它決定驅動的依賴和版本

#!/bin/bashpath=$1 #腳本輸入要編譯的驅動,僅支持篩選一個,如果要篩選多個,可以增加外層循環,一個一個嘗試for i in `/usr/bin/ls`
doif [ -d "$i" ];thenfor j in `/usr/bin/ls $i` #內核驅動文件夾僅為一級目錄,其次的目錄可以不用深入do /bin/rm $path/*.o 2>/dev/null #編譯前將已存在的o二進制文件刪除,防止僅僅鏈接.o文件/usr/bin/mv $i/$j $i/$j-bak  #重命名一個文件夾或者文件/usr/bin/make M=$path  #進行編譯if [ $? -ne 0 ];then/usr/bin/mv $i/"$j"-bak "$i"/"$j"echo -e "$i/$j is neccessary for $path\n " >> "$path"_necessary_file else/bin/rm  $i/"$j"-bak 2>/dev/nullfidoneelse #不為目錄的則檢測文件是否被我們要編譯到驅動依賴/usr/bin/rm $path/*.o 2>/dev/null/usr/bin/mv $i/$j $i/"$j"-bak/usr/bin/make M=$pathif [ $? -ne 0 ];then/usr/bin/mv $i/"$j"-bak $i/$jecho -e "$i/$j is neccessary for $path\n " >> "$path"_necessary_file else/usr/bin/rm -r $i/"$j"-bak 2>/dev/nullfifi
done

最終的結果為:
篩選前:

[root@node1 linux-3.10.0-957.5.1.el7.x86_64]# ls
arch                CREDITS             firmware         Kbuild                Makefile        REPORTING-BUGS    sound    vmlinux.id
block               crypto              fs               Kconfig               Makefile.qlock  samples           test     x509.genkey
centos-kpatch.x509  Documentation       hdrwarnings.txt  kernel                mm              scripts           test.sh
centos-ldup.x509    drivers             include          ldconfig-kernel.conf  Module.symvers  security          tools
configs             drivers.undef       init             lib                   net             signing_key.priv  usr
COPYING             extra_certificates  ipc              MAINTAINERS           README          signing_key.x509  virt

篩選后:

[root@node1 linux-3.10.0-957.5.1.el7.x86_64]# ls
arch  fs  include  Makefile  Module.symvers  net  scripts  tools

總結

以上是生活随笔為你收集整理的编译内核指定模块,筛选当前模块依赖的组件的全部內容,希望文章能夠幫你解決所遇到的問題。

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