保存したいのがディスクイメージ全体ではなく、 ファイルシステムの中にあるファイルだけなら、 dd の代わりに、 tar や cpio で、似たようなソリューションが使えます。 ファイルシステムをマウントする必要はあります。 以下に示すように、 clone スクリプトにもっとコマンドを追加して下さい。
# mkdir /mnt # mount ${device_name} /mnt # mknod ${image} p # tftp ${tftp_server} <<-EOT & binary put ${image} EOT tar czf ${image} |
or
# tftp ${tftp_server} <<-EOT & binary get ${image} EOT tar xzf ${image} |
initrd イメージには、スクリプトが使えるように、 mkdir プログラムと tar プログラムを置いておく必要があります。
本文書の内容を用いてパーティションの再編やサイズ変更を行なった状況では、 ディスクがブートせずに終るかもしれません。 その場合は、(イメージ中の grub に含まれている) Grub の setup コマンドを実行して下さい。 これで問題が解決するはずです。詳細は、 Grub のドキュメントを参照して下さい。
カーネルによっては、 SCSI デバイスのようなブロックデバイスにアクセスするために、 余分なモジュールが必要になるかもしれません。 initrd イメージの /lib ディレクトリに必要なモジュールを置いて、 clone スクリプトで、 対応する insmod コマンドを実行して下さい。 同じことはファイルシステムにも言えます。 例えば、fat ファイルシステムのイメージではなく、 ファイルを保存したければ、 fat.o と vfat.o モジュールが必要になります。
Grub のメニューファイル grub.conf はカスタマイズして、 いくつかのコピーオプションを提示するようにしても良いし、 ディスクのパーティション再作成や、 ネットワークから指定したイメージを取得するような、 予め定義しておいた操作を実行するようにしてもかまいません。 繰り返しますが、 ここで示された考え方を用いて特定の作業に応用すれば、 その作業が達成できるようになるのです。