→FAQ 一覧に戻る
|
FAQ-89
質問
ARMA の initrd はどのように管理すればいいでしょうか?
回答
initrd は Linux の起動時に、ルートファイルシステムをマウントする直前に、一時的にマウントして実行されるメモリ上のファイルシステムおよび機構の名称です。initrd は汎用的な仕組みですが、一般的な Linux では動的にディスクドライバをインストールする目的でのみ使用されます。
ARMA の initrd は通常の状態では特に意識して管理する必要はありません。つまり、カーネルパッケージのインストール時に必要があれば自動的に新しい initrd が作成されます。しかし SCSI ホストアダプタを変更したり、ブートローダーの設定を編集するなどした場合に、システムは自動的な initrd の更新を行わなくなる場合がありますので、その後はユーザーが直接 initrd を管理する必要があります。以降では直接管理の必要が生じたユーザーのために ARMA の initrd について説明します。
さて、一般に Linux の initrd にはいくつかの形式がありますが、ARMA の initrd は Debian のものよりも RedHat のものに近い形式になっています。これは歴史的に ARMA の initrd は Debian よりも早く導入しましたので、その時に RedHat Linux の形式を若干改良したことに由来しています。
具体的には initrd のファイルシステムには ext2 を使用し、insmod + repeat なる行指向コマンドによって initrd を構成しています。通常 /linuxrc が sh によって解釈されるところを、より単純な repeat に置き換えて、スペース効率を改善したものとなっています。
| |
|
|
実際の運用方法としては、カーネルのアップデート直後に mkinitrd コマンドを使用して initrd を作成するだけです。 mkinitrd の使い方は以下のとおりです。(/usr/sbin にパスが通っている必要があります)
|
|
|
# mkinitrd /boot/initrd-2.4.26 2.4.26
| ^^^^^^^^^^^^^^^^^^ ^^^^^^
| initrd の出力先 対象バージョン
|
|
|
|
|
|
|
|
# mkinitrd /boot/initrd-2.4.26-smp 2.4.26-smp
|
|
|
|
|
mkinitrd コマンドは /etc/modutils/ogl ファイルの scsi_hostadapter 行を参照して組み込むドライバを決定しています。もし mkinitrd コマンドが組み込むドライバに異常がある場合は、管理ツールのドライバ設定をやり直したり、/etc/modutils/ogl ファイルを直接編集して調節してください。
mkinitrd が作成した initrd 中にどのようなドライバが含まれているかは以下のようなコマンドによって確認することができます。
|
# gzip -cd /boot/initrd-2.4.26 >/tmp/expanded
| # mount /tmp/expanded /mnt/tmp -o loop
| # find /mnt/tmp | grep lib
| # umount /mnt/tmp
|
|
|
特に問題がなければ /boot/grub/menu.lst に以下のようなエントリを加えます。
root (hd0,1)
| kernel /boot/vmlinuz-2.4.26 root=/dev/hda2
| initrd /boot/initrd-2.4.26
|
|
|
|
(これはルートパーティションが /dev/hda2 の例です)
以上で再起動して新しいカーネルが正しくドライバを読み込むかをテストすれば完了です。
| |

この mkinitrd コマンドは ogl-tools パッケージに含まれています。Debian に存在する mkinitrd とは互換性がありませんので注意してください。
|
→FAQ 一覧に戻る
ここで解説しております内容は、弊社でテストを行い動作を確認しておりますが、必ずしもすべての環境における動作を保証するものではありません。
また、実際の設定、インストール作業はすべてお客様の責任においてなされるものとし、当 FAQ を元に行われた作業によりお客様が被ったいかなる損害につきましても、弊社は一切の責任を負わないものとさせていただきますので、ご了承ください。 |
|