カーネル/Arch build system
Arch Build System を使うことで、公式の linux パッケージをベースにカスタムカーネルを作成することができます。このコンパイル方法は全体のプロセスを自動化でき、よくテストされたパッケージに基づいています。PKGBUILD を編集することでカスタムカーネルの設定やパッチの追加が可能です。
目次
材料の入手
makepkg を使用するため、以下のベストプラクティスに従ってください。例えば、makepkg を root あるいは sudo で実行することはできません。したがって、まずはホームディレクトリに build
ディレクトリを作成してください:
$ cd ~/ $ mkdir build $ cd build/
公式リポジトリから abs[リンク切れ: パッケージが存在しません] パッケージと base-devel パッケージグループをインストールしてください。
それからカスタマイズの起点になる綺麗なカーネルが必要になります。ABS からカーネルパッケージファイルを取得してください:
$ ABSROOT=. abs core/linux
ファイアウォールによって rsync ポートがブロックされる場合は、-t オプションで tarball を使って同期することができます:
$ ABSROOT=. abs core/linux -t
その後に、必要なファイル (例: カスタム設定ファイル, パッチ, etc.) を各自のソースから手に入れて下さい。
PKGBUILD の修正
PKGBUILD pkgbase
をあなたのカスタムパッケージの名前に変えて下さい、例えば:
pkgbase=linux-custom
PKGBUILD によっては linux.install
の名前も pkgbase
にあわせて変更する必要があります (例: linux-grsec[リンク切れ: 置換パッケージ: linux-hardened])。
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
をロードできます。こうすれば他の方法で発生するカーネルの名前付けの問題を避けられます。
新しいチェックサムを生成
コンフィグを修正したら、以下のコマンドを実行して新しいチェックサムを生成する必要があります:
$ 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
の名前を変える必要があります。そうすれば標準のカーネルとカスタムカーネルを選択できるようになります。