Gentoo Linux genkernelガイド

Tim Yamin  Author
赤星柔充  翻訳

更新日 2005年 6月 26日
このドキュメントのオリジナルバージョン の更新日は2008年 6月 22日

1.  はじめに

はじめに

genkernelは、カーネルのコンパイルにまだ慣れていないユーザがハードウェアを自動認識するGentoo インストールCD上で使われているカーネルと類似したカーネルをセットアップできる様に設計されました。

初期化を必要とするハードウェアと起動可能な動くカーネルのためにgenkernelを使うことに興味を持っているユーザもいるでしょう。 またgenkernelはカーネルモジュールを自動でコンパイルするため、 ハードウェアに必要なモジュールがモジュールパラメータとともに読み込まれ使用されることを可能にします。

genkernelは私のためにあるの?

genkernelは大抵、自分自身でカーネルをコンパイルしない人や自身のハードウェアの設定に不案内な人には良い選択です。

genkernelは一般的な設定を使うよう設計されているので、 あなたのハードウェアの全てをサポートできるでしょう。 - とはいえ全てのドライバーとモジュールが同様にコンパイルされるので、 あなた自身がカーネルをコンパイルする方が、あなたが必要と知っているものをより早く提供できるでしょう。

しかしながらgenkernelは、今のところLVM2/EVMS2パーティションからの起動をサポートしていません。 LVM2/EVMS2のユーザには、(訳注:サポートされる)時が来るまで手動によるカーネルコンパイルを使用することを推奨します。

genkernelの取得

あなたは、単にemerge genkernelを実行することによってgenkernelを獲得できます。 あなたは、GRPといったバイナリパッケージを使うためには、 -kフラグを使うのを忘れないでください。 古いバージョンのgenkernelを持つGRPパッケージのため、フラグは異なります。 あなたは結果として、 Gentoo Handbookgenkernel --helpを調べる事になるでしょう。

サポートされているプラットフォーム

genkernel 3.0.2として、以下のプラットフォームがサポートされています。 alpha、amd64、parisc、parisc64、ppc、ppc64、sparc、sparc64及びx86。

2.  genkernelの使い方

はじめに

genkernelは、3つのモードで動作する様に設計されています。:

ほとんどのユーザは、あなたのために"kernnel"と"initrd"モードを実行する"all"モードのみを欲するでしょう。 これら"kernel"と"initrd"モードは、現在の所、"all"モードの別名に過ぎないので、 なんら特別な効果をあなたにもたらさないことに注意してください

genkernelは主にあなたがカーネルのコンパイルを必要とする時にあなたの生活をより簡単にするコマンドですが、 あなたのカーネルがどの様にコンパイルあるいは設定されるかをカスタマイズできるさまざまなフラグも満載しています。

genkernelコンパイラフラグ

genkernelは、あなたのカーネルがアセンブルされる時に適切なアプリケーションに渡される以下のフラグをサポートします。

genkernelカーネルフラグ

genkernelは以下のフラグをサポートしていて、いくつかのフラグは、 カーネルの構築に影響を与える--no-optionと等価なものを持っています。

genkernelの様々なフラグ

genkernelは、他の2つのカテゴリに適さないいくつかのフラグもサポートします:

genkernelの実行

genkernelの実行に必要な事は、必要なフラグと共にrootとして実行することです。例:

コード表示 2.1: genkernelの実行

# genkernel --menuconfig --no-clean --no-install --bootsplash all
(あなたが思うようにカーネルを設定し、コンパイルされたオブジェクトファイルを作成し、
ブートスプラッシュサポートを有効にしますが、何もインストールしません。)

もし、あなたが同様にカーネルのインストールのためにgenkernelを欲するのであれば、 確実に/bootパーティションをマウントしてください。- 最近のgenkernelは、/etc/genkernel.conf内のMOUNTBOOTを"yes"に設定すれば、 自動でそれを試みます。

コード表示 2.2: 手動で/bootをマウントする

(もし、/bootが/etc/fstab内で有効になっていれば:)
# mount /boot
(... そうでない場合、IDEディスクならば:)
# mount /dev/hda1 /boot
(... そしてSCSIディスクならば:)
# mount /dev/sda1 /boot

ブートローダで動くようにgenkernelをセットアップする

ブートローダで動くようにgenkernelをセットアップするには、 ブートローダの設定に3つか4つの変更が必要です。

  1. root=/dev/ram0init=/linuxrcをカーネルイメージに渡されるカーネルパラメータに加えてください。
  2. 例えば/dev/hda3にルートパーティションが含まれているならば、 real_root=/dev/hda3をカーネルイメージに渡されるカーネルパラメータに加えてください。
  3. もしブートスプラッシュを使いたいならば、 vga=0x317といった適したモードラインをカーネルイメージに渡されるカーネルパラメータに加えてください。 そして、あなたがブートスプラッシュに冗長さを要求するかどうかによるsplash=verboseまたはsplash=silentも加えてください。
  4. ブートローダがどの様にそれを必要とするかによってinitrdを加えてください: あなたがお使いのブートローダではどの様にするかの詳細は、 Gentoo Handbookを参照してください。

カーネル設定ファイル

genkernelは/etc/kernelsにあなたのカーネル設定を保存し、 genkernelを呼び出す場合は常にその設定を使用します。 もし、再びデフォルトの設定で始めたい場合は、/etc/kernels内のファイルの名前を変更してください。 そうすれば、genkernelは/usr/share/genkernel/<arch>に置かれたカーネル設定を代わりに使用します。

3.  genkernelの移植

はじめに

あなたのアーキテクチャに提供するためには、全ての必要なライブラリとgenkernelが必要ですが、 これらは、あなたのアーキテクチャで動くカーネル、動くコンパイラスイート、GNU make、 及び動くbusyboxディストリビューションに限られ、準備はできています。

genkernelは、そのアーキテクチャ向けの設定ファイル/usr/share/genkernel/$archNameを各アーキテクチャ向けに使用します。

システムがブートストラップする方法

  1. ブートローダは、genkernelのディレクトリ内にある設定ファイルの仕様に基づいてビルドされたgenkernelイメージとgenkernelによって用意されたinitrdを読み込みます。
  2. カーネルが起動し、busyboxを初期化するために少量のメモリを確保します。 busyboxは、そのアーキテクチャ向けのモジュール読込リストにあるモジュールについてシステムを調べます。
  3. そして、もしbusyboxがルートデバイスとして認識するreal_rootパラメータが見付かれば、 システムはそのデバイスから起動されます。

設定ファイル