Gentoo Linux genkernelガイド
1.
はじめに
はじめに
genkernelは、カーネルのコンパイルにまだ慣れていないユーザがハードウェアを自動認識するGentoo インストールCD上で使われているカーネルと類似したカーネルをセットアップできる様に設計されました。
初期化を必要とするハードウェアと起動可能な動くカーネルのためにgenkernelを使うことに興味を持っているユーザもいるでしょう。
またgenkernelはカーネルモジュールを自動でコンパイルするため、
ハードウェアに必要なモジュールがモジュールパラメータとともに読み込まれ使用されることを可能にします。
genkernelは私のためにあるの?
genkernelは大抵、自分自身でカーネルをコンパイルしない人や自身のハードウェアの設定に不案内な人には良い選択です。
genkernelは一般的な設定を使うよう設計されているので、
あなたのハードウェアの全てをサポートできるでしょう。
- とはいえ全てのドライバーとモジュールが同様にコンパイルされるので、
あなた自身がカーネルをコンパイルする方が、あなたが必要と知っているものをより早く提供できるでしょう。
しかしながらgenkernelは、今のところLVM2/EVMS2パーティションからの起動をサポートしていません。
LVM2/EVMS2のユーザには、(訳注:サポートされる)時が来るまで手動によるカーネルコンパイルを使用することを推奨します。
genkernelの取得
あなたは、単にemerge genkernelを実行することによってgenkernelを獲得できます。
あなたは、GRPといったバイナリパッケージを使うためには、
-kフラグを使うのを忘れないでください。
古いバージョンのgenkernelを持つGRPパッケージのため、フラグは異なります。
あなたは結果として、
Gentoo Handbookとgenkernel --helpを調べる事になるでしょう。
サポートされているプラットフォーム
genkernel 3.0.2として、以下のプラットフォームがサポートされています。
alpha、amd64、parisc、parisc64、ppc、ppc64、sparc、sparc64及びx86。
2.
genkernelの使い方
はじめに
genkernelは、3つのモードで動作する様に設計されています。:
- "all"モード: これは、カーネルとinitrdをビルドします。
- "kernel"モード: これは、カーネルイメージをビルドするのみです。
- "initrd"モード: これは、initrdをビルドするのみです。
ほとんどのユーザは、あなたのために"kernnel"と"initrd"モードを実行する"all"モードのみを欲するでしょう。
これら"kernel"と"initrd"モードは、現在の所、"all"モードの別名に過ぎないので、
なんら特別な効果をあなたにもたらさないことに注意してください。
genkernelは主にあなたがカーネルのコンパイルを必要とする時にあなたの生活をより簡単にするコマンドですが、
あなたのカーネルがどの様にコンパイルあるいは設定されるかをカスタマイズできるさまざまなフラグも満載しています。
genkernelコンパイラフラグ
genkernelは、あなたのカーネルがアセンブルされる時に適切なアプリケーションに渡される以下のフラグをサポートします。
-
--kernel-as=someAssembler: これはあなたのカーネルの構築に使われるアセンブラを指定します。
-
--kernel-cc=someCompiler: これはあなたのカーネルの構築に使われるコンパイラを指定します。
-
--kernel-ld=someLinker: これはあなたのカーネルの構築に使われるリンカを指定します。
-
--kernel-make=someMake: これはあなたのカーネルの構築に使われるGNU makeの代替を指定します。
-
--utils-as=someAssembler: これはサポートユーティリティを構築する時に使われるアセンブラを指定します。
-
--utils-cc=someCompiler: これはサポートユーティリティを構築する時に使われるコンパイラを指定します。
-
--utils-ld=someLinker: これはサポートユーティリティを構築する時に使われるリンカを指定します。
-
--utils-make=someMake: これはサポートユーティリティを構築する時に使われるGNU makeの代替を指定します。
-
--makeopts=-jJobs: これはカーネルとサポートユーティリティが構築される際にGNU makeに渡されるフラグを指定します。
genkernelカーネルフラグ
genkernelは以下のフラグをサポートしていて、いくつかのフラグは、
カーネルの構築に影響を与える--no-optionと等価なものを持っています。
-
--callback="echo Hello":
このルーチンはカーネルと関連モジュールがビルドされた後に指定された引数を呼びます。
しかし、initrdが構築される前です。
これは、コールバックを使用することによりgenkernelモジュールグループを再定義して、
関連項目をemergeする事によってinitrdに外部モジュールをインストールしたいと思う場合に有用です。
-
--no-clean:
これは、あなたのカーネルを構築する前にmake cleanを実行するかあるいは実行しません。
これは、全てのオブジェクトファイルと依存関係が削除されます。
-
--no-mrproper:
これは、あなたのカーネルを構築する前にmake mrproperを実行するかあるいは実行しません。
これは、全てのオブジェクトファイル、依存関係及びあなたの設定が削除されます。
-
--kerneldir=/path/to/sources:
これは、デフォルトの場所である/usr/src/linuxの代わりに代替のカーネルソースの場所を指定します。
-
--kernel-config=/path/to/config-file:
これは、使用される代替のカーネル設定を指定します。
デフォルトで使用される持続性のない/path/to/sources/.configの代わりに使用されます。
-
--no-bootsplash:
これは、genkernelがビルドする際にinitrdにブートスプラッシュサポートを加えるかあるいは加えません。
現在の所、全てのアーキテクチャでブートスプラッシュをサポートしているわけではありませんし、
ブートスプラッシュをサポートしているカーネルも必要です。
-
--no-menuconfig: This runs or does not run the kernel
これは、make oldconfigが実行された後、
あなたのカーネルをビルドする前にメニューベースのカーネル設定を実行するかあるいは実行しません。
-
--no-initrdmodules: これは、genkernelが作成するinitrdにモジュールを全くコピーしません。
-
--no-install:
これは、構築が終わったカーネル、モジュール及びinitrdをインストールするかあるいはインストールしません。
genkernelの様々なフラグ
genkernelは、他の2つのカテゴリに適さないいくつかのフラグもサポートします:
-
--arch-override=someArch:
このフラグは、自動認識のメカニズムが失敗した場合(その場合は、
どうかバグを提出してください!)やあるいはあなたがカーネルをクロスコンパイルしたいと願っている場合、
genkernelが考えているアーキテクチャをあなたが考えているものに上書きするために使うことができます。
-
--busybox-config=/path/to/busybox-config:
これは、指定されたファイルでデフォルトのbusybox設定を上書きします。
-
--busybox-bin=/path/to/busybox-binary.tar.bz2:
このオプションを使う事は、busyboxのバイナリをコンパイルせず、
指定されたtarballを使うことを意味します。
busyboxが静的にコンパイルされるべきであることに注意してください。
-
--minkernpackage=/output/to/yourkernel.tar.bz2:
このフラグは、kernelと名付けられたカーネルとinitrdと名付けられたinitrdのtarballを指定されたファイルに出力します。
このtarballには、パッチ情報やモジュールは含まれません。
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をマウントする |
# mount /boot
# mount /dev/hda1 /boot
# mount /dev/sda1 /boot
|
ブートローダで動くようにgenkernelをセットアップする
ブートローダで動くようにgenkernelをセットアップするには、
ブートローダの設定に3つか4つの変更が必要です。
-
root=/dev/ram0とinit=/linuxrcをカーネルイメージに渡されるカーネルパラメータに加えてください。
-
例えば/dev/hda3にルートパーティションが含まれているならば、
real_root=/dev/hda3をカーネルイメージに渡されるカーネルパラメータに加えてください。
-
もしブートスプラッシュを使いたいならば、
vga=0x317といった適したモードラインをカーネルイメージに渡されるカーネルパラメータに加えてください。
そして、あなたがブートスプラッシュに冗長さを要求するかどうかによるsplash=verboseまたはsplash=silentも加えてください。
-
ブートローダがどの様にそれを必要とするかによって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を各アーキテクチャ向けに使用します。
システムがブートストラップする方法
-
ブートローダは、genkernelのディレクトリ内にある設定ファイルの仕様に基づいてビルドされたgenkernelイメージとgenkernelによって用意されたinitrdを読み込みます。
-
カーネルが起動し、busyboxを初期化するために少量のメモリを確保します。
busyboxは、そのアーキテクチャ向けのモジュール読込リストにあるモジュールについてシステムを調べます。
-
そして、もしbusyboxがルートデバイスとして認識するreal_rootパラメータが見付かれば、
システムはそのデバイスから起動されます。
設定ファイル
-
busy-config:
これは、あなたのアーキテクチャ用にbusyboxが構築されるために使われる設定です。
-
config.sh:
これは、genkernelの内部変数の値を設定するシェルスクリプトです。
ファイルconfig.shの一つを一例として見てください。
-
modules_load:
これは、SCSI、FireWire、ATARAIDおよびPCMCIAをサポートするモジュールを空白で区切ったリストを含んだファイルです。
もし、あなたのプラットフォームで有効な物がなければ、フィールドを空のままにしてください。
ファイルmodules_loadの一つを一例として見てください。
-
kernel-config:
あらゆるカーネルのバージョンで使用されるデフォルトのカーネル設定です。
-
kernel-config-2.4:
2.4シリーズのカーネルで使用されるデフォルトのカーネル設定です。
-
kernel-config-2.6:
2.6シリーズのカーネルで使用されるデフォルトのカーネル設定です。
このドキュメントの内容は
Creative Commons -
Attribution / Share Alikeライセンスです。
|