Difference between revisions of "Kernels/Compilation/Arch Build System (日本語)"

From ArchWiki
Jump to: navigation, search
m (コンパイル)
m
Line 5: Line 5:
 
[[ru:Custom Kernel Compilation with ABS]]
 
[[ru:Custom Kernel Compilation with ABS]]
 
[[zh-CN:Kernels/Compilation/Arch Build System]]
 
[[zh-CN:Kernels/Compilation/Arch Build System]]
[[Arch Build System (日本語)]] を使うことで、公式の {{Pkg|linux}} パッケージをベースにカスタムカーネルを作成することができます。このコンパイル方法は全体のプロセスを自動化でき、よくテストされたパッケージに基づいています。PKGBUILD を編集することでカスタムカーネルの設定やパッチの追加が可能です。
+
[[Arch Build System (日本語)|Arch Build System]] を使うことで、公式の {{Pkg|linux}} パッケージをベースにカスタムカーネルを作成することができます。このコンパイル方法は全体のプロセスを自動化でき、よくテストされたパッケージに基づいています。PKGBUILD を編集することでカスタムカーネルの設定やパッチの追加が可能です。
  
 
==材料の入手==
 
==材料の入手==
Line 24: Line 24:
 
{{ic|pkgbase}} をあなたのカスタムパッケージの名前に変えて下さい、例えば:
 
{{ic|pkgbase}} をあなたのカスタムパッケージの名前に変えて下さい、例えば:
 
   pkgbase=linux-custom
 
   pkgbase=linux-custom
 
-headers や -docs パッケージをビルドしたくない場合は、ファイルの下の方にある {{ic|pkgname}} からそれらを削除してください。例:
 
  pkgname=("${pkgbase}")
 
  
 
===build() の変更===
 
===build() の変更===
Line 48: Line 45:
 
}}
 
}}
  
カーネル設定ファイルをすでに持っている場合は、nconfig などのインタラクティブな設定ツールをアンコメントして、ツールを使って設定をロードできます。こうすれば他の方法で発生するカーネルの名前付けの問題を避けられます。
+
カーネル {{ic|.config}} ファイルをすでに持っている場合は、{{ic|nconfig}} などのインタラクティブな設定ツールをアンコメントして、ツールを使って {{ic|.config}} をロードできます。こうすれば他の方法で発生するカーネルの名前付けの問題を避けられます。
 +
 
 +
{{Note|If you uncomment and use 'make menuconfig' in build(), then use the menuconfig gui to load your existing config, you will run into problems with conflicting files in the end package.  This is because you will overwrite the default config that PKGBUILD has modified to provide a unique install path, specifically the LOCALVERSION and LOCALVERSION_AUTO config options.  To fix this, simply re-set LOCALVERSION to your custom kernel naming and LOCALVERSION_AUTO=n while still in menuconfig.  For details, see 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 not use this for custom patch, put you 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.}}
  
 
==コンパイル==
 
==コンパイル==
Line 59: Line 58:
 
カーネルパラメータの設定に (menuconfig などの) インタラクティブなプログラムを選んだ場合は、コンパイル中に行ってください。
 
カーネルパラメータの設定に (menuconfig などの) インタラクティブなプログラムを選んだ場合は、コンパイル中に行ってください。
  
{{Note|カーネルのコンパイルにはちょっと時間がかかります。1時間くらいかかるのも珍しくありません。}}
+
{{Note|カーネルのコンパイルにはちょっと時間が必要になります。1時間かかるのもざらです。SSD を搭載した最近の環境では10分もかかりませんが。}}
  
 
==インストール==
 
==インストール==
Line 66: Line 65:
  
 
==ブートローダー==
 
==ブートローダー==
これであなたのカスタムカーネルのフォルダとファイルが作成されました、例: {{ic|/boot/vmlinuz-linux-test}}。あなたのカーネルをテストするには、ブートローダーを更新して (GRUB では /boot/grub/menu.lst) カスタムカーネルに対応する新しいエントリ ('default' や 'fallback') を追加してください。そうすれば標準のカーネルとカスタムカーネルを選択できるようになります。
+
これであなたのカスタムカーネルのフォルダとファイルが作成されました、例: {{ic|/boot/vmlinuz-linux-test}}。あなたのカーネルをテストするには、ブートローダーを更新して (GRUB では grub-mkconfig) カスタムカーネルに対応する新しいエントリ ('default' や 'fallback') を追加してください。そうすれば標準のカーネルとカスタムカーネルを選択できるようになります。

Revision as of 14:57, 1 January 2014

Arch Build System を使うことで、公式の linux パッケージをベースにカスタムカーネルを作成することができます。このコンパイル方法は全体のプロセスを自動化でき、よくテストされたパッケージに基づいています。PKGBUILD を編集することでカスタムカーネルの設定やパッチの追加が可能です。

材料の入手

# pacman -S 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 の build() 関数内にある候補のどれかをアンコメントしてください、例えば:

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 をロードできます。こうすれば他の方法で発生するカーネルの名前付けの問題を避けられます。

Note: If you uncomment and use 'make menuconfig' in build(), then use the menuconfig gui to load your existing config, you will run into problems with conflicting files in the end package. This is because you will overwrite the default config that PKGBUILD has modified to provide a unique install path, specifically the LOCALVERSION and LOCALVERSION_AUTO config options. To fix this, simply re-set LOCALVERSION to your custom kernel naming and LOCALVERSION_AUTO=n while still in menuconfig. For details, see 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.

コンパイル

Tip: マルチコアのシステムでは複数のコンパイルジョブを同時に実行することでコンパイル時間を大幅に削減することが可能です。

通常のコマンドを使ってカーネルをコンパイルします: makepkg カーネルパラメータの設定に (menuconfig などの) インタラクティブなプログラムを選んだ場合は、コンパイル中に行ってください。

Note: カーネルのコンパイルにはちょっと時間が必要になります。1時間かかるのもざらです。SSD を搭載した最近の環境では10分もかかりませんが。

インストール

makepkg が終わったら linux.install ファイルの変数が変わっているのが見て取れるはずです。後は、pacman (もしくは pacman に代わるプログラム) で通常通りにパッケージをインストールするだけです:

# pacman -U <kernel_package>

ブートローダー

これであなたのカスタムカーネルのフォルダとファイルが作成されました、例: /boot/vmlinuz-linux-test。あなたのカーネルをテストするには、ブートローダーを更新して (GRUB では grub-mkconfig) カスタムカーネルに対応する新しいエントリ ('default' や 'fallback') を追加してください。そうすれば標準のカーネルとカスタムカーネルを選択できるようになります。