質問: Ubuntu、Debian、CentOS、Fedora、Red-Hat、Arch Linux、または SUSE ディストリビューションで新しい initrd.img を表示、変更、再作成するにはどうすればよいですか?
1. initrd.img ファイルの内容を表示する方法
initrd.img gzip形式です。以下に示すように、initrd.img を initrd.gz に移動します。
# cp /tftpboot/el5/initrd.img . # ls cdrom initrd.img # mv initrd.img initrd.gz
以下に示すように、initrd.gz ファイルを解凍します。
# gunzip initrd.gz # ls cdrom initrd
initrd.gz ファイルを解凍すると、initrd はさらに cpio の「newc」形式になります。 cpio ‘newc’ 形式 を使用して initrd からファイルを抽出します。
注: 情報 cpio ‘newc’ 形式についての詳細情報を提供します。
# mkdir tmp2 # cd tmp2/ # cpio -id < ../initrd 16524 blocks
initrd.img ファイルの内容を表示できるようになりました
# ls bin dev etc init modules proc sbin selinux sys tmp var
2.画像のコンテンツを変更して新しい画像を再作成する方法
以下に示すようにファイルを抽出した後、それらのファイルのいずれかに適切な変更を加えます。次に、次のコマンドを使用してファイルをアーカイブにパックします。変更されたファイルを cpio 'newc' 形式にパックします。
# find . | cpio --create --format='newc' > /tmp/newinitrd 16524 blocks # ls /tmp/ cdrom initrd newinitrd tmp2 # ls -l /tmp/newinitrd -rw-r--r-- 1 root root 8460288 Jul 2 14:50 /tmp/newinitrd
アーカイブ ファイルを gzip します。
# gzip newinitrd # ls cdrom initrd newinitrd.gz tmp2 # ls -l newinitrd.gz -rw-r--r-- 1 root root 6649867 Jul 2 14:50 newinitrd.gz
ファイルを画像ファイルとして移動します。 newinitrd.img を新しいブート イメージとして使用できます。
# mv newinitrd.gz newinitrd.img # ls -l newinitrd.img -rw-r--r-- 1 root root 6649867 Jul 2 14:50 newinitrd.img