Kbuilder
外观
kbuilder 是一个 bash 脚本,允许您使用自己的可选补丁和配置,在不同的软件包名称下,本地构建四个官方支持的内核之一。
例如,您可以获取 linux-lts 内核的源代码,应用一个针对 Intel 处理器优化的内核补丁,并将该内核安装为 linux-lts-intel-optimized。
安装
可以使用以下方法获取 kbuilder
构建内核
获取默认的 vanilla linux 内核源代码,并以默认名称 linux-kbuilder-custom 构建软件包。
$ kbuilder build
注意 构建目录是
~/.kbuilder/cache。在构建过程中,kbuilder 会将一个 bash shell 注入到 PKGBUILD 中。该 shell 将在调用 build() 之前运行,允许您交互式地添加任何补丁或更改内核配置。当您退出 shell 后,构建将继续。
安装构建的软件包
$ kbuilder install
构建变量
虽然 kbuilder 没有配置文件,但您可以通过 环境变量 控制构建过程。
KBUILDER_SOURCE_PKG应设置为 'linux'、'linux-lts'、'linux-zen' 或 'linux-hardened'。kbuilder 将获取并构建由该变量指定的内核。默认为 'linux'。有关官方内核的更多信息,请参阅 kernel。
注意 适用于一个内核的补丁不一定适用于另一个内核。
KBUILDER_PKG_NAME_APPEND可设置为任何字符串。它将被追加到内核版本和内核软件包的末尾。默认为 'kbuilder-custom'。
KBUILDER_BUILD_JOBS应设置为一个整数。kbuilder 将把 PKGBUILD 中的make all行替换为make -jX all,其中 X 是指定的整数。
示例用法
$ KBUILDER_BUILD_JOBS=4 KBUILDER_PKG_NAME_APPEND="my-custom-patch" KBUILDER_SOURCE_PKG="linux-zen" kbuilder build
钩子
kbuilder 在 /etc/kbuilder/hooks/ 中查找钩子,并使用 run-parts 在调用 build() 之前立即执行它们。run-parts 命令将使用标志 --regex "kbuilder-hook-*" 执行。
一个示例钩子
/etc/kbuilder/hooks/05-kbuilder-hook-cpu-optimize.sh
#!/bin/bash
#
# kbuilder hook for applying graysky2's kernel compiler patch:
# https://github.com/graysky2/kernel_compiler_patch
#
SOURCE="https://raw.githubusercontent.com/graysky2/kernel_compiler_patch/master"
PATCH="more-uarches-for-kernel-5.17+.patch"
HOOK_NAME="cpu-optimize-hook"
curl -o $PATCH $SOURCE/$PATCH || { echo "$HOOK_NAME failed when fetching $PATCH from $SOURCE" ; exit 1 ; }
patch -Np1 -i "$PATCH" || { echo "$HOOK_NAME failed when applying $PATCH" ; exit 1 ; }
要创建一个钩子,请 创建一个文件名遵循 xx-kbuilder-hook-hookname 格式的文件,并将其 设置为可执行:它们将根据 xx 值按顺序运行。