内核模块打包指南 - Arch Linux 中文维基

跳转到内容

# 内核模块打包指南

来自 Arch Linux 中文维基
翻译状态：

- 本文（或部分内容）译自 Kernel module package guidelines，最近一次同步于 2022-08-08，若英文版本有所更改，则您可以帮助同步与翻译更改的内容。
- 您可以在 ArchWiki 的对应页面找到本文翻译的原始修订历史。
- 本文可能与英文原文存在出入。

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 – Shell – 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 运行时，此目录中的模块将优先考虑。

分类：​

- Arch 打包准则
- 内核

内核模块打包指南
添加话题