RAMデスクイメージ initrd を書き換える How to

initrd をブートローダ本体と勘違いしていました。kinneko さんの指摘で気付きました。ありがとう御座います。initrd は、ブート時に、カーネルがカネルモジュールの読み込みになどの処理を行うために一時的に使用するルートデスク(RAMデスク)でした。従って、以下の”ブートローダー initrd ”を”RAMデスクイメージ initrd ”に訂正(済)しました。

解説は、追々するとして、手順だけを先ず掲載します。
先ず、スパーユーザrootでloginして、/bootにkindregartenデレクトリーを作ります。
initrd (圧縮済RAMディスクイメージ)を、kindregartenデレクトリーにコピーします。

GLANTANK:/# cd /boot
GLANTANK:/boot# mkdir kindergarten
GLANTANK:/boot# ls
barbara-base.tgz debian-base.tgz initrd.hdb lost+found
base.20051219RC2.md initrd kindergarten zImage
GLANTANK:/boot# cp initrd kindergarten/initrd.orig.gz

kindregartenデレクトリーに移り、RAMデスクイメージ initrd を書き換える作業用デレクトリーimg2を作ります。

GLANTANK:/boot# cd kindergarten
GLANTANK:/boot/kindergarten# mkdir img2

圧縮されているRAMデスクイメージ initrd を解凍し、img2にマウントする。
GLANTANK:/boot/kindergarten# zcat initrd.orig.gz > initrd.n1
GLANTANK:/boot/kindergarten# mount -o loop initrd.n1 img2
GLANTANK:/boot/kindergarten# ls img2
bin dev etc lib linuxrc mdstop mnt old_root proc sbin tmp usr

RAMデスクイメージ initrd が加工できる状態になりました。エディター等で加工します。

GLANTANK:/boot/kindergarten#vi img2/linuxrc

加工、書き換えが終わったら、アンマウントして、再圧縮して、/bootのinitrdにストア(戻し)します。

GLANTANK:/boot/kindergarten# umount img2
GLANTANK:/boot/kindergarten# gzip initrd.n1
GLANTANK:/boot/kindergarten# cp initrd.n1.gz ../initrd

/bootデレクトリーのinitrdは、新しいRAMデスクイメージ initrd に置き換えられました。一見、何も変わらないように見えます。ls -l ../で見るとinitrd の時刻で違いが分ります。
GLANTANK:/boot/kindergarten# ls ../
barbara-base.tgz debian-base.tgz initrd.hdb lost+found
base.20051219RC2.md initrd kindergarten zImage

これで、書き換え完了です。rebootすると、新しいRAMデスクイメージ initrd で起動します。

この記事へのコメント

この記事へのトラックバック