next up previous
Next: カーネル Up: 緊急用ブートCDRをつくる。 Previous: 緊急用ブートCDRをつくる。

initrd

まず 30MB 位の空ディスクイメージ(ext2fs)を作ります。

dd if=/dev/zero of=$INITRD_IMG bs=1k count=3000
mkfs -t ext2 -F $INITRD_IMG

ループバックでマウントしましょう。

mount -o loop -t ext2  $INITRD_IMG $INITRD_MOUNTPOINT

initrd は基本的には現在使っている root ファイルシステム をコピーします。といっても全部は要りません。

/bin
/dev
/etc (fstab,group,inittab,modules.conf,passwd,shells)
/lib (modules 以下の全て, ld-linux.so* libc.so* libtermcap.so*)
/proc (空のディレクトリ)
/sbin
/var (log,run,state という空のディレクトリを作ってあれば十分)
があれば十分でしょう。これらで20MB 位あります。 だから initrd の容量は30MB 位 必要になるわけです。(これをメモリにいれようと言うわけですから、 少し前なら恐ろしく贅沢な話ですね。 メモリの少ないマシンも考慮にいれた 一般のディストリビューションでは 余分なものをかなり削っているのでしょう。)

/bin や /sbin も適当に削ってやってもいいのですが、 結構「あれもいれておけば」と思うこともあるので最初からいれておいた方が 楽でしょう。ターゲットのマシンが分かっている以上、無理する必要はありません。)

/etc にあるファイルのうち、すくなくともinittab だけは特別にする必要があります。

id:si:initdefault:
si::sysinit:/bin/sh

の二行で十分でしょう。

実行可能な linuxrc を initrd のルートにコピーするのも 忘れずに。今の場合は緊急用ですから単に1行

#!/bin/sh
と書いたものにchmod +x しただけでもよいでしょう。

コピーが終ったら、initrd はアンマウントして gzip しておきます。



Yoshifumi Tsuchimoto
2001-05-14