カーネル/Arch build system
Arch Build System を使うことで、公式の linux パッケージをベースにカスタムカーネルを作成することができます。このコンパイル方法は全体のプロセスを自動化でき、よくテストされたパッケージに基づいています。PKGBUILD を編集することでカスタムカーネルの設定やパッチの追加が可能です。
目次
材料の入手
makepkg を使用するため、以下のベストプラクティスに従ってください。例えば、makepkg を root あるいは sudo で実行することはできません。したがって、まずはホームディレクトリに build
ディレクトリを作成してください:
$ cd ~/ $ mkdir build $ cd build/
asp パッケージと base-devel パッケージグループをインストールしてください。
それからカスタマイズの起点になる綺麗なカーネルが必要になります。ABS からカーネルパッケージファイルを取得してください:
$ ASPROOT=. asp checkout linux
その後に、必要なファイル (例: カスタム設定ファイル, パッチ, etc.) を各自のソースから手に入れて下さい。
PKGBUILD の修正
PKGBUILD pkgbase
をあなたのカスタムパッケージの名前に変えて下さい、例えば:
pkgbase=linux-custom
PKGBUILD によっては linux.install
の名前も pkgbase
にあわせて変更する必要があります (例: linux-hardened)。
ドキュメントの作成を避ける
長い コンパイル 作業の大部分は、ドキュメントの作成に費やされています。 2020年5月の時点で、PKGBUILDへの次のパッチはその作成を回避します。
64d64 < make htmldocs 188c188 < pkgname=("$pkgbase" "$pkgbase-headers" "$pkgbase-docs") --- > pkgname=("$pkgbase" "$pkgbase-headers")
このパッチは行#64 を削除し、行#188 を変更します。 PKGBUILD ファイルが正しく適用されない場合は、手動で編集する必要がある場合があります。
prepare() の変更
prepare 関数で、必要なカーネルパッチをあてたりカーネルのビルド設定を変更できます。
変更するコンフィグオプションが少ないときは、ソース内のコンフィグファイルを編集してください。既存のコンフィグファイルを、64ビット環境の場合は config.x86_64
に32ビット環境の場合は config
にコピーします。
また GUI ツールを使ってオプションを設定することも可能です。PKGBUILD の prepare() 関数内にある候補のどれかをアンコメントしてください、例えば:
PKGBUILD
... # load configuration # Configure the kernel. Replace the line below with one of your choice. #make menuconfig # CLI menu for configuration make nconfig # new CLI menu for configuration #make xconfig # X-based configuration #make oldconfig # using old config from previous kernel version # ... or manually edit .config ...
既存の .config をロード
カーネルの .config
ファイルをすでに持っている場合は、nconfig
などのインタラクティブな設定ツールをアンコメントして、ツールを使って .config
をロードできます。こうすれば他の方法で発生するカーネルの名前付けの問題を避けられます。
新しいチェックサムを生成
Changing prepare() は、$_srcname/.config
への変更の可能性を示唆しています。 このパスはパッケージファイルのダウンロードが終了した場所ではないため、そのチェックサムは makepkg によってチェックされませんでした(実際の場所は $_srcname/../../config
をチェックしてください)
makepkg を実行する前に、ダウンロードした config
を別の設定ファイルに置き換えた場合は、 [インストール] pacman-contrib パッケージ。
次のコマンドを実行すると、新しいチェックサムが生成されます。
$ updpkgsums
コンパイル
普通のパッケージと同じビルドコマンド (makepkg
) を使ってカーネルをコンパイルします。
カーネルパラメータの設定に (menuconfig などの) インタラクティブなプログラムを選んだ場合は、コンパイル中に設定を行ってください。
$ makepkg -s
-s
パラメータによって xml やドキュメントなど最近のカーネルが必要とする依存パッケージがダウンロードされます。
インストール
makepkg が終わったら linux.install
ファイルの変数が変わっているのが見て取れるはずです。
後は、pacman (もしくは pacman に代わるプログラム) で通常通りにパッケージをインストールするだけです。カスタムカーネルで必要となる (nvidia ドライバーをインストールするときなど) カーネルヘッダーを先にインストールすると良いでしょう:
# pacman -U kernel-headers_package # pacman -U kernel_package
ブートローダー
これであなたのカスタムカーネルのフォルダとファイルが作成されました、例: /boot/vmlinuz-linux-test
。あなたのカーネルをテストするには、ブートローダーの設定ファイルを更新してカスタムカーネルに対応する新しいエントリ ('default' や 'fallback') を追加してください。PKGBUILD の pkgbase でカーネルの名前を変更した場合は pacman でインストールする前に $build/pkg/kernel/etc の initramfs.img
の名前を変える必要があります。そうすれば標準のカーネルとカスタムカーネルを選択できるようになります。