「カーネル/Arch build system」の版間の差分
Kusakata.bot (トーク | 投稿記録) Pkg/AUR テンプレートの更新 |
同期 |
||
| 5行目: | 5行目: | ||
[[ru:Kernels/Arch Build System]] |
[[ru:Kernels/Arch Build System]] |
||
[[zh-hans:Kernels/Arch Build System]] |
[[zh-hans:Kernels/Arch Build System]] |
||
[[ |
[[Arch Build System]] を使うことで、公式の {{Pkg|linux}} パッケージをベースにカスタムカーネルを作成することができます。このコンパイル方法は全体のプロセスを自動化でき、よくテストされたパッケージに基づいています。PKGBUILD を編集することでカスタムカーネルの設定やパッチの追加が可能です。 |
||
==材料の入手== |
==材料の入手== |
||
| 14行目: | 14行目: | ||
$ cd build/ |
$ cd build/ |
||
{{Pkg|asp}} パッケージと {{Grp|base-devel}} パッケージグループを[[インストール]]してください。 |
|||
それからカスタマイズの起点になる綺麗なカーネルが必要になります。ABS からカーネルパッケージファイルを取得してください: |
それからカスタマイズの起点になる綺麗なカーネルが必要になります。ABS からカーネルパッケージファイルを取得してください: |
||
$ |
$ ASPROOT=. asp checkout linux |
||
ファイアウォールによって rsync ポートがブロックされる場合は、-t オプションで tarball を使って同期することができます: |
|||
$ ABSROOT=. abs core/linux -t |
|||
その後に、必要なファイル (例: カスタム設定ファイル, パッチ, etc.) を各自のソースから手に入れて下さい。 |
その後に、必要なファイル (例: カスタム設定ファイル, パッチ, etc.) を各自のソースから手に入れて下さい。 |
||
| 30行目: | 26行目: | ||
pkgbase=linux-custom |
pkgbase=linux-custom |
||
PKGBUILD によっては {{ic|linux.install}} の名前も {{ic|pkgbase}} にあわせて変更する必要があります (例 |
PKGBUILD によっては {{ic|linux.install}} の名前も {{ic|pkgbase}} にあわせて変更する必要があります (例: {{Pkg|linux-hardened}})。 |
||
===prepare() の変更=== |
===prepare() の変更=== |
||
| 86行目: | 82行目: | ||
==ブートローダー== |
==ブートローダー== |
||
これであなたのカスタムカーネルのフォルダとファイルが作成されました、例: {{ic|/boot/vmlinuz-linux-test}}。あなたのカーネルをテストするには、[[ブートローダー]]の設定ファイルを更新してカスタムカーネルに対応する新しいエントリ ('default' や 'fallback') を追加してください。''PKGBUILD の pkgbase'' でカーネルの名前を変更した場合は pacman でインストールする前に ''$build/pkg/kernel/etc'' の {{ic|initramfs.img}} の名前を変える必要があります。そうすれば標準のカーネルとカスタムカーネルを選択できるようになります。 |
これであなたのカスタムカーネルのフォルダとファイルが作成されました、例: {{ic|/boot/vmlinuz-linux-test}}。あなたのカーネルをテストするには、[[ブートローダー]]の設定ファイルを更新してカスタムカーネルに対応する新しいエントリ ('default' や 'fallback') を追加してください。''PKGBUILD の pkgbase'' でカーネルの名前を変更した場合は pacman でインストールする前に ''$build/pkg/kernel/etc'' の {{ic|initramfs.img}} の名前を変える必要があります。そうすれば標準のカーネルとカスタムカーネルを選択できるようになります。 |
||
==参照== |
|||
* https://kernel.org/doc/Documentation/kbuild/kconfig.txt |
|||
2017年9月16日 (土) 00:20時点における版
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)。
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 ...
/usr/share/doc/systemd/README に書かれています。コンパイルする前によく確認してください。必要なコンフィグはときどき変わっています。Arch では基本的に公式カーネルを使用することになっているので、要件が変わってもアナウンスはされません。新しいバージョンの systemd をインストールする前に、リリースノートをチェックして使用しているカスタムカーネルが新しい systemd の要件を満たしているか確認してください。既存の .config をロード
カーネルの .config ファイルをすでに持っている場合は、nconfig などのインタラクティブな設定ツールをアンコメントして、ツールを使って .config をロードできます。こうすれば他の方法で発生するカーネルの名前付けの問題を避けられます。
新しいチェックサムを生成
コンフィグを修正したら、以下のコマンドを実行して新しいチェックサムを生成する必要があります:
$ updpkgsums
コンパイル
普通のパッケージと同じビルドコマンド (makepkg) を使ってカーネルをコンパイルします。
カーネルパラメータの設定に (menuconfig などの) インタラクティブなプログラムを選んだ場合は、コンパイル中に設定を行ってください。
$ makepkg -s
-s パラメータによって xml やドキュメントなど最近のカーネルが必要とする依存パッケージがダウンロードされます。
- カーネルソースは PGP 署名 が付いており、makepkg は署名を検証します。詳しくは Makepkg#署名チェックを見てください。
- マルチコアのシステムでは複数のコンパイルジョブを同時に実行することでコンパイル時間を大幅に削減することが可能です。
インストール
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 の名前を変える必要があります。そうすれば標準のカーネルとカスタムカーネルを選択できるようになります。