「Kbuilder」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (→See also: 飜訳) |
Kusanaginoturugi (トーク | 投稿記録) (add en page link.) |
||
| (同じ利用者による、間の5版が非表示) | |||
| 1行目: | 1行目: | ||
[[Category:カーネル]] |
[[Category:カーネル]] |
||
| + | [[en:Kbuilder]] |
||
| − | kbuilder is a bash script that allows you to build one of the four officially supported kernels locally with your own optional patches and configuration, under a different package name. |
||
| + | kbuilder は、公式にサポートされている 4 つのカーネルのうちの 1 つを、独自のオプションのパッチや設定を加えて、別のパッケージ名でローカルにビルドすることができる bash スクリプトです。 |
||
| + | 例えば、{{Pkg|linux-lts}} カーネルのソースを取得し、カーネルをインテルプロセッサに最適化するパッチを適用し、そのカーネルを '''linux-lts-intel-optimized''' としてインストールすることができます。 |
||
| − | For example, you could fetch the sources of the {{Pkg|linux-lts}} kernel, apply a patch that optimizes the kernel for intel processors, and install that kernel as '''linux-lts-intel-optimized'''. |
||
| − | == |
+ | == インストール == |
| + | kbuilder の取得には以下の方法があります: |
||
| − | The following methods can be used to get kbuilder: |
||
| − | * |
+ | * {{AUR|kbuilder}} パッケージを[[インストール]]する。 |
| − | * |
+ | * [https://github.com/AnnikaV9/kbuilder github リポジトリ]から最新の開発版をインストールする。 |
| + | == カーネルのビルド == |
||
| − | == Building a kernel == |
||
| − | + | デフォルトのバニラ {{Pkg|linux}} カーネルソースを取得し、デフォルトの名前 '''linux-kbuilder-custom''' でパッケージをビルドします: |
|
$ kbuilder build |
$ kbuilder build |
||
| − | {{Note| |
+ | {{Note|ビルドディレクトリは {{ic|~/.kbuilder/cache}} です。}} |
| + | ビルドの過程で、kbuilder は PKGBUILD に bash シェルを注入します。このシェルは {{ic|build()}} が呼ばれる直前に実行され、パッチの追加やカーネル設定の変更をインタラクティブに行うことができます。シェルから抜けるとビルドは継続されます。 |
||
| − | During the build process, kbuilder will inject a bash shell into the PKGBUILD. The shell will be run right before {{ic|build()}} is called, allowing you to add any patches or change the kernel config interactively. The build will continue once you exit from the shell. |
||
| + | ビルドしたパッケージをインストールする: |
||
| − | To install the built packages: |
||
$ kbuilder install |
$ kbuilder install |
||
| − | == |
+ | == ビルド変数 == |
| + | kbuilderには設定ファイルがありませんが、[[環境変数]]でビルドプロセスを制御できます。 |
||
| − | Although kbuilder does not have a configuration file, you can control the build process with [[environment variables]]. |
||
| − | * {{ic|KBUILDER_SOURCE_PKG}} |
+ | * {{ic|KBUILDER_SOURCE_PKG}} は 'linux'、'linux-lts'、'linux-zen'、または 'linux-hardened' のいずれかで設定する必要があります。kbuilderは、この変数で指定されたカーネルを取得してビルドします。既定値は 'linux' です。公式カーネルについての詳細は[[カーネル]]を参照してください。 |
| + | {{Note|一つのカーネルで動作するパッチが、別のカーネルで動作するとは限りません。}} |
||
| − | {{Note|Patches that work on one kernel may not necessarily work on another.}} |
||
| − | * {{ic|KBUILDER_PKG_NAME_APPEND}} |
+ | * {{ic|KBUILDER_PKG_NAME_APPEND}} は、任意の文字列で設定することができます。カーネルバージョンとカーネルパッケージの末尾に追加されます。既定値は 'kbuilder-custom' です。 |
| − | * {{ic|KBUILDER_BUILD_JOBS}} |
+ | * {{ic|KBUILDER_BUILD_JOBS}} は整数で設定する必要があります。kbuilderは、PKGBUILDの{{ic|make all}}行を{{ic|make -jX all}}に置換します。ここでXは指定された整数です。 |
| + | 使用例: |
||
| − | Example usage: |
||
$ KBUILDER_BUILD_JOBS=4 KBUILDER_PKG_NAME_APPEND="my-custom-patch" KBUILDER_SOURCE_PKG="linux-zen" kbuilder build |
$ KBUILDER_BUILD_JOBS=4 KBUILDER_PKG_NAME_APPEND="my-custom-patch" KBUILDER_SOURCE_PKG="linux-zen" kbuilder build |
||
| − | == |
+ | == フック == |
| − | kbuilder |
+ | kbuilderは、{{ic|/etc/kbuilder/hooks/}} 内のフックを検索し、{{ic|build()}} が呼び出される直前に、run-parts を使用してそれらを実行します。run-parts コマンドは、フラグ{{ic|--regex "kbuilder-hook-*"}}で実行されます。 |
| + | 例えば以下のようなフックがあります: |
||
| − | An example hook: |
||
{{hc|/etc/kbuilder/hooks/05-kbuilder-hook-cpu-optimize.sh|<nowiki> |
{{hc|/etc/kbuilder/hooks/05-kbuilder-hook-cpu-optimize.sh|<nowiki> |
||
| 60行目: | 61行目: | ||
</nowiki>}} |
</nowiki>}} |
||
| + | フックを作成するには、ファイル名を {{ic|''xx''-kbuilder-hook-''hookname''}} の形式に従って[[作成]]し、[[実行可能属性]]にします。その後、''xx''の値に従って順次実行されます。 |
||
| − | To create a hook, [[create]] and make [[executable]] a file, with a name following the {{ic|''xx''-kbuilder-hook-''hookname''}} form: they will be run in order according to the ''xx'' value. |
||
== 参照 == |
== 参照 == |
||
2023年4月11日 (火) 18:34時点における最新版
kbuilder は、公式にサポートされている 4 つのカーネルのうちの 1 つを、独自のオプションのパッチや設定を加えて、別のパッケージ名でローカルにビルドすることができる bash スクリプトです。
例えば、linux-lts カーネルのソースを取得し、カーネルをインテルプロセッサに最適化するパッチを適用し、そのカーネルを linux-lts-intel-optimized としてインストールすることができます。
インストール
kbuilder の取得には以下の方法があります:
- kbuilderAUR パッケージをインストールする。
- github リポジトリから最新の開発版をインストールする。
カーネルのビルド
デフォルトのバニラ linux カーネルソースを取得し、デフォルトの名前 linux-kbuilder-custom でパッケージをビルドします:
$ kbuilder build
ビルドの過程で、kbuilder は PKGBUILD に bash シェルを注入します。このシェルは build() が呼ばれる直前に実行され、パッチの追加やカーネル設定の変更をインタラクティブに行うことができます。シェルから抜けるとビルドは継続されます。
ビルドしたパッケージをインストールする:
$ kbuilder install
ビルド変数
kbuilderには設定ファイルがありませんが、環境変数でビルドプロセスを制御できます。
KBUILDER_SOURCE_PKGは 'linux'、'linux-lts'、'linux-zen'、または 'linux-hardened' のいずれかで設定する必要があります。kbuilderは、この変数で指定されたカーネルを取得してビルドします。既定値は 'linux' です。公式カーネルについての詳細はカーネルを参照してください。
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/ 内のフックを検索し、build() が呼び出される直前に、run-parts を使用してそれらを実行します。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の値に従って順次実行されます。