7. ソリューションの拡張

7.1. ファイルシステムではなく、ファイルの保存とリストア

保存したいのがディスクイメージ全体ではなく、 ファイルシステムの中にあるファイルだけなら、 dd の代わりに、 tarcpio で、似たようなソリューションが使えます。 ファイルシステムをマウントする必要はあります。 以下に示すように、 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 プログラムを置いておく必要があります。

7.2. マスターブートレコードの設定

本文書の内容を用いてパーティションの再編やサイズ変更を行なった状況では、 ディスクがブートせずに終るかもしれません。 その場合は、(イメージ中の grub に含まれている) Grub の setup コマンドを実行して下さい。 これで問題が解決するはずです。詳細は、 Grub のドキュメントを参照して下さい。

7.3. 必要なモジュールのロード

カーネルによっては、 SCSI デバイスのようなブロックデバイスにアクセスするために、 余分なモジュールが必要になるかもしれません。 initrd イメージの /lib ディレクトリに必要なモジュールを置いて、 clone スクリプトで、 対応する insmod コマンドを実行して下さい。 同じことはファイルシステムにも言えます。 例えば、fat ファイルシステムのイメージではなく、 ファイルを保存したければ、 fat.ovfat.o モジュールが必要になります。

7.4. grub.confで予め定義されている操作

Grub のメニューファイル grub.conf はカスタマイズして、 いくつかのコピーオプションを提示するようにしても良いし、 ディスクのパーティション再作成や、 ネットワークから指定したイメージを取得するような、 予め定義しておいた操作を実行するようにしてもかまいません。 繰り返しますが、 ここで示された考え方を用いて特定の作業に応用すれば、 その作業が達成できるようになるのです。