內核模塊打包指南
外觀
Arch 打包準則
32 位 – CLR – CMake – DKMS – Eclipse – Electron – Free Pascal – GNOME – Go – Haskell – Java – 交叉編譯工具 – KDE – Lisp – Meson – MinGW – 內核模塊 – Node.js – Nonfree – OCaml – Perl – PHP – Python – R – Ruby – Rust – VCS – Web – Wine – 字體
打包分離[編輯 | 編輯原始碼]
包含內核模塊的軟件包應予以特殊對待,以支持希望在系統上安裝多個內核的用户。
當打包包含內核模塊和其他非模塊支持文件/實用程序的軟件時,將內核模塊與支持文件分開很重要。
準則[編輯 | 編輯原始碼]
打包此類軟件時(以 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 運行時,此目錄中的模塊將優先考慮。