「Kbuilder」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(一部飜訳)
(add en page link.)
 
(同じ利用者による、間の4版が非表示)
1行目: 1行目:
 
[[Category:カーネル]]
 
[[Category:カーネル]]
  +
[[en:Kbuilder]]
 
kbuilder は、公式にサポートされている 4 つのカーネルのうちの 1 つを、独自のオプションのパッチや設定を加えて、別のパッケージ名でローカルにビルドすることができる bash スクリプトです。
 
kbuilder は、公式にサポートされている 4 つのカーネルのうちの 1 つを、独自のオプションのパッチや設定を加えて、別のパッケージ名でローカルにビルドすることができる bash スクリプトです。
   
24行目: 25行目:
 
$ kbuilder install
 
$ kbuilder install
   
== Build variables ==
+
== ビルド変数 ==
   
  +
kbuilderには設定ファイルがありませんが、[[環境変数]]でビルドプロセスを制御できます。
Although kbuilder does not have a configuration file, you can control the build process with [[environment variables]].
 
   
* {{ic|KBUILDER_SOURCE_PKG}} should be set as 'linux', 'linux-lts', 'linux-zen' or 'linux-hardened'. kbuilder will fetch and build the kernel specified with this variable. Defaults to 'linux'. For more information about the official kernels, see [[kernel]].
+
* {{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}} can be set as any string. It will be appended to the end of the kernel version and the kernel package. Defaults to 'kbuilder-custom'.
+
* {{ic|KBUILDER_PKG_NAME_APPEND}} は、任意の文字列で設定することができます。カーネルバージョンとカーネルパッケージの末尾に追加されます。既定値は 'kbuilder-custom' です。
   
* {{ic|KBUILDER_BUILD_JOBS}} should be set as an integer. kbuilder will replace the {{ic|make all}} line in the PKGBUILD with {{ic|make -jX all}}, where X is the integer specified.
+
* {{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
   
== Hooks ==
+
== フック ==
   
kbuilder looks for hooks in {{ic|/etc/kbuilder/hooks/}}, and uses run-parts to execute them right before {{ic|build()}} is called. The run-parts command is executed with the flag {{ic|--regex "kbuilder-hook-*"}}.
+
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 の取得には以下の方法があります:

カーネルのビルド

デフォルトのバニラ linux カーネルソースを取得し、デフォルトの名前 linux-kbuilder-custom でパッケージをビルドします:

$ kbuilder build
ノート: ビルドディレクトリは ~/.kbuilder/cache です。

ビルドの過程で、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の値に従って順次実行されます。

参照