內核模塊打包指南

出自 Arch Linux 中文维基
Arch 打包準則

32 位CLRCMakeCrossDKMSEclipseElectronFontFree PascalGNOMEGoHaskellJavaKDEKernelLispMesonMinGWNode.jsNonfreeOCamlPerlPHPPythonRRubyRustVCSWebWine

打包分離[編輯 | 編輯原始碼]

包含內核模塊的軟體包應予以特殊對待,以支持希望在系統上安裝多個內核的用戶。

當打包包含內核模塊和其他非模塊支持文件/實用程序的軟體時,將內核模塊與支持文件分開很重要。

準則[編輯 | 編輯原始碼]

打包此類軟體時(以 NVIDIA 驅動程序為例),約定為:

  • 創建一個 nvidia 包,其中只包含為vanilla內核構建的內核模塊
  • 創建包含支持文件的 nvidia-utils
  • 確保 nvidia 依賴於 nvidia-utils(除非有充分的理由不這樣做)
  • 對於另一個內核,比如 linux-mm,創建 nvidia-mm ,其中包含針對該內核構建的內核模塊,該內核提供 nvidia ,並且還依賴於 nvidia-utils
  • 確保 nvidia 依賴於當前的主要內核版本,例如:
    depends=('linux' 'nvidia-utils')

基本原理[編輯 | 編輯原始碼]

雖然為不同內核構建的內核模塊始終位於不同的目錄中並且可以和平共處,但是支持文件預計會在一個位置找到。如果一個軟體包包含模塊和支持文件,則您將無法為多個內核安裝模塊,因為軟體包中的支持文件將導致 pacman 文件衝突。

模塊和隨附文件的分離允許在同一系統上為多個內核安裝多個內核模塊軟體包,同時在預期位置之間共享支持文件。

文件放置[編輯 | 編輯原始碼]

如果軟體包中包含旨在覆蓋現有同名模塊的內核模塊,則應將該模塊放在 /lib/modules/X.Y.Z-arch1-1/updates 目錄中。當 depmod 運行時,此目錄中的模塊將優先考慮。