「カーネル/Arch build system」の版間の差分
(→材料の入手: 簡単な日本語に微調整) |
(訳更新) |
||
9行目: | 9行目: | ||
==材料の入手== |
==材料の入手== |
||
+ | [[公式リポジトリ]]から {{Pkg|abs}} パッケージと {{Grp|base-devel}} パッケージグループを[[インストール]]してください。 |
||
− | {{bc|# pacman -S abs base-devel}} |
||
まず最初に、カスタマイズの起点になる綺麗なカーネルが必要になります。ABS からカーネルパッケージファイルを取得してください: |
まず最初に、カスタマイズの起点になる綺麗なカーネルが必要になります。ABS からカーネルパッケージファイルを取得してください: |
||
32行目: | 32行目: | ||
' >> config.x86_64 |
' >> config.x86_64 |
||
− | また GUI ツールを使ってオプションを設定することも可能です。PKGBUILD の |
+ | また GUI ツールを使ってオプションを設定することも可能です。PKGBUILD の prepare() 関数内にある候補のどれかをアンコメントしてください、例えば: |
{{hc|PKGBUILD| |
{{hc|PKGBUILD| |
||
... |
... |
||
45行目: | 45行目: | ||
}} |
}} |
||
− | カーネル {{ic|.config}} ファイルをすでに持っている場合は、{{ic|nconfig}} などのインタラクティブな設定ツールをアンコメントして、ツールを使って {{ic|.config}} をロードできます。こうすれば他の方法で発生するカーネルの名前付けの問題を避けられます。 |
+ | カーネルの {{ic|.config}} ファイルをすでに持っている場合は、{{ic|nconfig}} などのインタラクティブな設定ツールをアンコメントして、ツールを使って {{ic|.config}} をロードできます。こうすれば他の方法で発生するカーネルの名前付けの問題を避けられます。 |
− | {{Note| |
+ | {{Note|build() の 'make menuconfig' をアンコメントして使用し、menuconfig の gui を使って既存のコンフィグをロードした場合、作例されたパッケージでファイルが衝突する問題が発生します。これは PKGBUILD によってユニークなインストールパスに変更を加えられたデフォルトのコンフィグが上書きされるのが原因であり、特に LOCALVERSION と LOCALVERSION_AUTO コンフィグオプションが問題になります。この問題を修正するには、menuconfig で LOCALVERSION をカスタムカーネルの名前にリセットして LOCALVERSION_AUTO=n を設定してください。詳しくは、https://bbs.archlinux.org/viewtopic.php?id=173504 を参照。}} |
{{Note|If you uncomment ''return 1'', you can change to the kernel source directory after makepkg finishes extraction and then make nconfig. This lets you configure the kernel over multiple sessions. When you're ready to compile, copy the .config file over top of either config or config.x86_64 (depending on your architecture), comment ''return 1'' and use '''makepkg -i'''. But do not use this for custom patches; put your patch commands after these lines. If you do patch manually bztar unpack and replace your patch.}} |
{{Note|If you uncomment ''return 1'', you can change to the kernel source directory after makepkg finishes extraction and then make nconfig. This lets you configure the kernel over multiple sessions. When you're ready to compile, copy the .config file over top of either config or config.x86_64 (depending on your architecture), comment ''return 1'' and use '''makepkg -i'''. But do not use this for custom patches; put your patch commands after these lines. If you do patch manually bztar unpack and replace your patch.}} |
||
+ | |||
+ | {{Warning| systemd has a number of kernel configuration requirements for general use, for specific usecases (e.g., UEFI) and for specific systemd functionality (e.g., bootchart). Failure to meet these requirements can result in your system being degraded or unusable. The list of required and recommended kernel CONFIGs can be found in {{ic|/usr/share/doc/systemd/README}}. Check them before you compile.These requirements also change over time. Because Arch assumes you are using the official kernel, there will be no announcement of these changes. Before you install a new version of systemd, check the version release notes to make sure your current custom kernel meets any new systemd requirements.}} |
||
+ | |||
+ | ===新しいチェックサムを生成=== |
||
+ | コンフィグを修正したら、次を実行して新しいチェックサムを生成する必要があります: |
||
+ | $ updpkgsums |
||
==コンパイル== |
==コンパイル== |
||
62行目: | 68行目: | ||
==インストール== |
==インストール== |
||
makepkg が終わったら linux.install ファイルの変数が変わっているのが見て取れるはずです。後は、pacman (もしくは pacman に代わるプログラム) で通常通りにパッケージをインストールするだけです: |
makepkg が終わったら linux.install ファイルの変数が変わっているのが見て取れるはずです。後は、pacman (もしくは pacman に代わるプログラム) で通常通りにパッケージをインストールするだけです: |
||
+ | # pacman -U <kernel-headers_package> |
||
# pacman -U <kernel_package> |
# pacman -U <kernel_package> |
||
+ | {{Note|[[NVIDIA#Alternate install: カスタムカーネル|nvidia-hook]] を使って nvidia ドライバーを含めたい場合は、先にカーネルヘッダーをインストールするのが良いでしょう。}} |
||
==ブートローダー== |
==ブートローダー== |
2015年3月11日 (水) 07:51時点における版
Arch Build System を使うことで、公式の linux パッケージをベースにカスタムカーネルを作成することができます。このコンパイル方法は全体のプロセスを自動化でき、よくテストされたパッケージに基づいています。PKGBUILD を編集することでカスタムカーネルの設定やパッチの追加が可能です。
材料の入手
公式リポジトリから abs パッケージと base-devel パッケージグループをインストールしてください。
まず最初に、カスタマイズの起点になる綺麗なカーネルが必要になります。ABS からカーネルパッケージファイルを取得してください:
$ ABSROOT=. abs core/linux
ファイアウォールによって rsync ポートがブロックされる場合は、-t オプションで tarball を使って同期することができます。
$ ABSROOT=. abs core/linux -t
その後に、必要なファイル (例: カスタム設定ファイル, パッチ, etc.) を各自のソースから手に入れて下さい。
PKGBUILD の修正
pkgbase
をあなたのカスタムパッケージの名前に変えて下さい、例えば:
pkgbase=linux-custom
build() の変更
変更するコンフィグオプションが少ない時は、デフォルトのオプションを使ってあなたのオプションを設定ファイルに追加することができます:
$ echo ' CONFIG_DEBUG_INFO=y CONFIG_FOO=n ' >> config.x86_64
また 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
ファイルをすでに持っている場合は、nconfig
などのインタラクティブな設定ツールをアンコメントして、ツールを使って .config
をロードできます。こうすれば他の方法で発生するカーネルの名前付けの問題を避けられます。
新しいチェックサムを生成
コンフィグを修正したら、次を実行して新しいチェックサムを生成する必要があります:
$ updpkgsums
コンパイル
通常のコマンドを使ってカーネルをコンパイルします:
makepkg
カーネルパラメータの設定に (menuconfig などの) インタラクティブなプログラムを選んだ場合は、コンパイル中に行ってください。
インストール
makepkg が終わったら linux.install ファイルの変数が変わっているのが見て取れるはずです。後は、pacman (もしくは pacman に代わるプログラム) で通常通りにパッケージをインストールするだけです:
# pacman -U <kernel-headers_package> # pacman -U <kernel_package>
ブートローダー
これであなたのカスタムカーネルのフォルダとファイルが作成されました、例: /boot/vmlinuz-linux-test
。あなたのカーネルをテストするには、ブートローダーを更新して (GRUB では grub-mkconfig) カスタムカーネルに対応する新しいエントリ ('default' や 'fallback') を追加してください。そうすれば標準のカーネルとカスタムカーネルを選択できるようになります。