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 しておきます。