Alpine 内核模块支持
Alpine Kernel Module Support (AKMS) 是一个工具,它允许在用户系统的每个已安装内核上,以自动化和有组织的方式,从源代码构建树外(外部)Linux 内核模块。其概念是在安装新内核版本时自动重建内核模块。
AKMS 的灵感来自许多 Linux 发行版上使用的 动态内核模块支持 (DKMS)。它专为 Alpine Linux 和 APK 而设计;在实现时考虑了简洁性、可靠性和安全性。
构建始终在非特权用户下,在沙箱内(使用 Bubblewrap)执行,并隔离了 Mount、IPC、PID、网络、UTS、Cgroup 和用户(如果可能)命名空间。
构建的内核对象会自动使用与给定内核安装的其他模块相同的压缩格式进行压缩。支持的格式有:“gz”、“xz”(需要 xz 工具)和“zst”(需要 zstd 工具)。
AKMS 相对于 DKMS 的另一个优势是,您无需在系统上永久安装构建模块的所有依赖项。如果缺少某些依赖项,它们会自动安装在真实根文件系统之上的可 disposable overlay 中(使用 OverlayFS 和 bubblewrap)。使用 overlay 的最初原因是避免 APK 触发器的限制 — 它们在持有独占存储库锁的“事务”内执行。这意味着如果 akms 由触发器执行,则无法安装任何软件包。在“/”之上挂载 disposable overlay 以构建模块克服了此限制,并提供了其他好处。
概述
AKMS 具有以下操作,以及相关的选项和参数。
install | 构建模块并将其安装到 /lib/modules 中,除非已构建(或指定 -r)或已安装。 |
build | 构建模块,除非已构建(或指定 -r),否则不安装它们。 |
uninstall | 从 /lib/modules 卸载模块。 |
unbuild | 从状态目录中删除已构建的模块版本。 |
status | 显示模块状态。 |
示例
- Broadcom Wi-Fi 芯片组 wl AKMS 驱动