KERNEL-BUILD.ECLASS

章节: eclass-manpages (5)
更新时间: 2024 年 11 月
索引 返回主要内容

名称

kernel-build.eclass - 为发行版内核构建机制

描述

此 eclass 提供从源代码构建发行版内核并安装它的逻辑。安装后和测试逻辑继承自 kernel-install.eclass。

ebuild 必须负责解压缩内核源代码,将合适的 .config 复制到其中(例如在 src_prepare() 中)并设置正确的 S。eclass 会负责尊重 savedconfig,构建内核并安装它以及它的模块和构建外部模块所需的源代码子集。

支持的 EAPIS

8

传递提供的 ECLASSES

kernel-install

函数

kernel-build_pkg_setup
调用 python-any-r1 和 secureboot pkg_setup
kernel-build_src_configure
准备用于构建内核的工具链,获取 .config 文件,并为 modprep 配置构建树。
kernel-build_src_compile
编译内核源代码。
kernel-build_src_test
通过 qemu 测试构建的内核。这只是用正确的路径包装来自 kernel-install.eclass 的逻辑。
kernel-build_src_install
将构建的内核及其源代码子集安装到 /usr/src/linux-${KV_FULL} 中。安装模块。保存配置。
kernel-build_pkg_postinst
组合来自 kernel-install 和 savedconfig eclasses 的 postinst。
kernel-build_merge_configs [distro.config...]
合并内核配置文件。以下内容将按顺序合并到当前目录的 '.config' 文件中

1. 作为参数指定的配置文件。2. 默认模块签名和压缩配置
   (如果适用)。3. 通过 USE=savedconfig 保存的配置(如果适用)。4. 通过 MODULES_SIGN_KEY* 变量指定的模块签名密钥。5. 来自 ${BROOT}/etc/kernel/config.d/*.config 的用户提供的配置。

此函数必须由 ebuild 在 src_prepare 阶段调用。

ECLASS 变量

KV_FULL
包含完整内核发布版本的字符串,例如 '6.9.6-gentoo-dist'。这用于确保内核的发布版本与 Gentoo 的工具之间的一致性。一旦我们有了 kernel.release 文件,kernel-build_src_configure() 就会设置它。
KERNEL_IUSE_MODULES_SIGN (在 INHERIT 之前设置)
如果设置为非空值,则继承 secureboot.eclass,添加 IUSE=modules-sign 和所需的逻辑来操作内核配置,同时尊重 MODULES_SIGN_HASH、MODULES_SIGN_CERT 和 MODULES_SIGN_KEY 用户变量。
MODULES_SIGN_HASH (用户变量)
与 USE=modules-sign 一起使用。可以设置为在签名生成期间使用的哈希算法(CONFIG_MODULE_SIG_SHA256)。

有效值: sha512,sha384,sha256,sha224,sha1

默认值(如果未设置): sha512

MODULES_SIGN_KEY (用户变量)
与 USE=modules-sign 一起使用。可以设置为要使用的私钥的路径(以 PEM 格式),或 PKCS#11 URI(CONFIG_MODULE_SIG_KEY)。

如果路径是相对路径(例如“certs/name.pem”),则假设它相对于正在使用的内核构建目录。

如果密钥需要密码或 PIN,则使用的内核 sign-file 实用程序会识别 KBUILD_SIGN_PIN 环境变量。请注意,包管理器可能会将此值存储在二进制包、数据库文件、临时文件以及可能日志中。此 eclass 在使用后会取消设置该变量以减轻问题(尤其是对于共享二进制包),但在使用时请谨慎。

默认值(如果未设置): certs/signing_key.pem

MODULES_SIGN_CERT (用户变量)
与 USE=modules-sign 一起使用。可以设置为要使用的公钥的路径(以 PEM 格式)。如果 MODULES_SIGN_KEY 设置为仅包含私钥的文件路径,则必须指定此选项。
KERNEL_GENERIC_UKI_CMDLINE ?= "root=/dev/gpt-auto-root ro" (用户变量)
如果设置了 KERNEL_IUSE_GENERIC_UKI,则此变量允许设置 UKI 的内置内核命令行。如果未设置,则默认值为 root=/dev/gpt-auto-root ro

作者

Michał Górny <[email protected]>

维护者

发行版内核项目 <[email protected]>

报告 Bug

请通过 https://bugs.gentoo.org/ 报告 Bug。

文件

kernel-build.eclass

另请参阅

ebuild(5)
https://gitweb.gentoo.org/repo/gentoo.git/log/eclass/kernel-build.eclass


索引

名称
描述
支持的 EAPIS
传递提供的 ECLASSES
函数
ECLASS 变量
作者
维护者
报告 Bug
文件
另请参阅

此文档由 man2html 使用手册页创建。
时间: 2024 年 11 月 12 日,格林尼治标准时间 03:27:01