次のページ 前のページ 目次へ

10. RedHat のインストーラの修正

インストールの手順自体をいじりたければ,RedHat の CD-ROM またはお近く の RedHat ミラーサイトから,インストーラのソースコードを入手してくださ い.これはディストリビューションのトップディレクトリにある i386 ディレクトリの下の misc/src/install ディレクト リにあります.

RedHat の起動ディスクを調べれば,Linux カーネルである vmlinuz に加え,大きなファイル initrd.img があることに気づくと思いま す:

-rwxr-xr-x   1 root     root          559 May 11 15:48 boot.msg
-rwxr-xr-x   1 root     root          668 May 11 15:48 expert.msg
-rwxr-xr-x   1 root     root          986 May 11 15:48 general.msg
-rwxr-xr-x   1 root     root       968842 May 11 15:48 initrd.img
-rwxr-xr-x   1 root     root         1120 May 11 15:48 kickit.msg
-r-xr-xr-x   1 root     root         5352 May 11 15:48 ldlinux.sys
-rwxr-xr-x   1 root     root          875 May 11 15:48 param.msg
-rwxr-xr-x   1 root     root         1239 May 11 15:48 rescue.msg
-rwxr-xr-x   1 root     root          402 May 11 15:48 syslinux.cfg
-rwxr-xr-x   1 root     root       444602 May 11 15:48 vmlinuz

ご想像の通り,これはファイルとして格納されている別の ext2 ファ イルシステムです.ただし少しひねりが入っています.実際には圧縮もされて いるのです.このファイルを展開して,その結果をマウントすることができます. 操作例を以下に示します:

# gzip -dc /mnt/boot/initrd.img >/tmp/initrd.ext2
# mkdir /mnt/initrd
# mount -o loop /tmp/initrd.ext2 /mnt/initrd

このファイルシステムで最も重要な部分は,起動ディスクに入っているローダ ブルカーネルモジュール群でしょう.新しいバージョンのドライバをマージす る必要があるなら,これを静的にリンクした新しいカーネルで vmlinuz を置き換えるか,あるいはモジュール群を差し替える必要 があります.さらに,空きディスクを確保するために他のモジュールを捨てる 必要があるかもしれません.

モジュール群は modules/modules.cgz ファイルです.これはどんな ファイルなのでしょうか? これは実際には圧縮した cpio ファイル です.読者の皆さんが信じるかどうかは分かりませんし,もう誰も cpio なんて使ってないと思われるかもしれませんが! 実際には RPM パッケージ自体も内部的には cpio を使っています.以下の手順は モジュール群のファイルをハックするための方法です:

# gzip -dc /mnt/initrd/modules/modules.cgz >/tmp/modules.cpio
# cpio -itv <modules.cpio >modules.listing
# mkdir modules
# cd modules
# cpio -idumv <../modules.cpio

筆者が知る限りでは,現在の Linux(少なくとも主要ディストリビューション では)には圧縮されたファイルシステムを透過的に扱う方法は無いはずです. もっと良い方法があればお知らせください!

何らかの変更を行った場合には,以下の処理も忘れずに行ってください:

  1. cpio を使ってアーカイブを作り直します.作り直しの方法 は,読者の皆さんへの宿題としておきます….
  2. できたアーカイブを gzip を使って圧縮します.
  3. これを /mnt/initrd あるいは圧縮されていない initrd.img が置かれている場所にコピーします.
  4. /mnt/initrd (あるいはマウントした場所)をアンマウントし ます.
  5. 新しい initrd.imggzip を使って再び圧縮し ます.
  6. できたアーカイブを起動ディスクイメージにコピーします.本ドキュ メントの例では /mnt/boot/initrd.img です.
  7. 起動ディスクイメージ(例えば /mnt/boot)をアンマウントし ます.

最後に,このように修正した起動ディスクの設定を用いて新しい起動フロッピー を作成することができます.作成は例えば以下のように行います:

# cat boot.img >/dev/fd0


次のページ 前のページ 目次へ