各自のニーズに則した復旧用ブータブルCDのカスタム作成法

 長年安定して動作してきたLinuxマシンであっても、いつの日にかブートローダ終了後のディスクチェック時にハードドライブにおけるパーティションテーブルの損傷が検出され、システムへのアクセス不可能な事態に陥るかもしれない。そうした場合に対応可能なレスキューディスクは事前に用意しておくべきだが、各自のニーズに則した最善のものを入手する方法の1つは、ユーザ自らが自分でカスタマイズ作成してしまうことである。

 ここではUbuntu 8.04 Hardy HeronのライブCDをベースに用い、その標準インストレーションに各種パッケージの追加および削除をすることで、必要なユーティリティのみを収めたブータブルディスクを作ることにしよう。その目的上、Ubuntuアプリケーションの大部分は削除対象となるが、同時に、ウィルス対策用のプログラム、パーティションのリカバリツール、各種のディスクユーティリティ、ルートキットの検出ツールについては新規に追加インストールしておかなくてはならない。なお本稿で説明するUbuntuライブCDベースでのレスキューディスク作成法は、その他のDebian系オペレーティングシステムなどに対しても、それほど大きな変更をすることなく適用できるはずである。またここでの解説は、コミュニティベースで整備されたUbuntuのライブCDカスタマイズ法を主として参考にしており、このドキュメントにはより高度な関連情報やトラブルシューティングのヒントも収録されているが、Ubuntu以外のライブCDに関するカスタマイズ情報はlivecdlist.com wikiから探し出せるだろう。

 UbuntuベースのブータブルCD作成を行う最低限の作業環境としては、3GBのディスクスペースと512MBのRAMが使用可能なコンピュータが必要となる。スワップ領域としては1GBが欲しいところだが、私が今回の作業を行ったのは512MBしか使えない環境であった。

ライブCD環境の構築

 最初のステップは、各自のシステムに応じたUbuntu 8.04のライブCD用ISOファイルをダウンロードすることである。基本的にはWebサイトにてダウンロードすればいいが、あるいはコマンドラインからwgetを用いて操作することもできる。

wget -v http://releases.ubuntu.com/hardy/ubuntu-8.04-desktop-i386.iso

 このイメージに独自の加工を施すためには、squashfsファイルシステムのフォーマットサポート用パッケージ群およびISOイメージ作成ユーティリティのmkisofsをインストールしなくてはならない。Ubuntuの場合、これらのインストールは「sudo apt-get install squashfs-tools mkisofs」というコマンドにて実行できる。

 次にsquashfsモジュールを読み込み、必要なカスタマイズを施せるようISOファイルの収録コンテンツのコピー、マウント、抽出を行っておく。

sudo modprobe squashfs
mkdir rescue
mv ubuntu-8.04-desktop-i386.iso rescue
cd rescue
mkdir mnt
sudo mount -o loop ubuntu-8.04-desktop-i386.iso mnt
mkdir extract-cd
rsync --exclude=/casper/filesystem.squashfs -a mnt/ extract-cd
mkdir squashfs
sudo mount -t squashfs -o loop mnt/casper/filesystem.squashfs squashfs
mkdir edit
sudo cp -a squashfs/* edit/

 ここでのCDカスタマイズ作業は、chroot環境にて行う方が便利である。chrootは作業環境のrootディレクトリを変更するための機能で、これを利用するとCD内のファイルやアプリケーションに直接アクセス可能となるが、いずれにせよapt-getなどのツール群を使用する際にはこうした操作が必須となるはずである。また新規パッケージの追加をする場合はchroot環境でのネットワーク接続が使いたいところだが、それにはネットワーク用の設定としてhostsおよびresolv.confファイルをコピーしておかなくてはならない。具体的には下記のコピー操作を行えばいい。

sudo cp /etc/resolv.conf edit/etc/
sudo cp /etc/hosts edit/etc/

 以上の準備が終了すると、ライブCD内部での作業が開始できる状況となっているはずである。まずはedit/devをマウントポイントとしてライブCDをマウントし、各自のrootディレクトリを新規にマウントしたボリュームに変更しておく。次にカーネル作業用に/procおよび/sysボリュームをマウントし、ロケールおよびGPGに関連した問題の発生を未然に防止しておくのに必要な設定情報をエクスポートしておく。

sudo mount --bind /dev/ edit/dev
sudo chroot edit
mount -t proc none /proc
mount -t sysfs none /sys

export HOME=/root
export LC_ALL=C

不要パッケージの削除による空きスペースの確保

 ライブCDの収録パッケージの構成変更は、apt-getないしAptitudeを介して行える。これらのデータは圧縮状態で格納されるとはいえ、仮にDVD上に焼き込むとしてもその最大容量は700MB CDの数倍程度でしかないため、レスキューディスクとしての必須アプリケーションの追加に必要な空きスペースを確保しておかなくてはならない。そのためには、レスキューディスクに不要なパッケージやアプリケーションを削除しておけばよく、私の場合はOpenOffice.orgのスイート一式、GNOMEゲーム群、Ekiga、Ubiquity、Evolution、GIMPを削除することで200MB分の容量を節約できた。なおコマンドライン操作に慣れているユーザであればGNOMEとXorgも削除対象にするかもしれないが、その場合は次の手順でインストールするGPartedおよびその他のグラフィカル系ツールも不要となる。いずれにせよ優先的に削除すべきはサイズの巨大なアプリケーションであり、こうしたchroot環境の場合は下記のコマンドを実行することで、インストール済みパッケージをサイズ順で並べ替えた一覧を取得できるはずだ。

dpkg-query -W --showformat='${Installed-Size} ${Package}\n' | sort -nr | less

 パッケージ単体の削除はapt-getから実行すればいいが、その際に--purge引数を付けておくと関連した設定ファイル群も取り除くことができる。なおchroot環境でsudoコマンドは機能しない。

apt-get remove --purge package-name

レスキュー用アプリケーションの追加

 不要なアプリケーション群をライブCDからすべて削除し終わったら、次にレスキュー/リカバリ用のアプリケーションの追加を行う。通常この種のレスキューCDに必要となるのは各種のディスクユーティリティとセキュリティツールだが、それ以外にもサポート情報の取得や他のマシンへのアクセスをするためのネットワーキング系ツール群も用意しておきたいところである。ただし前述したアプリケーションはすべて必須という訳ではなく、逆にこれら以外で必要と思われるツールが他に存在すれば各自の判断で追加しておけばいいはずだ。ここで作成するのは個人用途のブータブルCDなのであり、そのための設定要件は個々のユーザごとに異なるものだからである。各自のCDに収録しておくべきツールの目安としては、記事末尾のコラムにまとめておいた完成形態で提供されているLinux用レスキューCDの構成などが参考になるだろう。

 リポジトリからのパッケージインストールはapt-getを介して行えるが、その際には各自の/etc/apt/sources.listにmultiverseリポジトリを追加しておく必要があるはずだ。

deb http://us.archive.ubuntu.com/ubuntu/ hardy main multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ hardy main multiverse

 上級者用のブータブルディスクにとって、ディスクパーティション用ツールの収録は必須な要件の1つである。UbuntuライブCDの場合はGNOMEのパーティションエディタであるGPartedが付属しているので、独自のパッケージ追加は不要なはずだ。ただしグラフィカル環境を用いない構成とした場合は、GPartedの代わりに、コマンドラインからパーティションテーブルを管理するpartedをインストールしておけばいいだろう。またtestdiskなどのプログラムをインストールしておくと、何らかの理由でパーティションを削除してしまった際の回復作業が行えるので便利だ。特にtestdiskは簡易的なディスクツールとしても利用可能となっている。その他にもext2ファイルシステムにて意図せず削除してしまったファイルの復元についてはe2undelパッケージが役立つはずだ。不安定化したディスクからパーティション全体をコピーしたりバックアップを作成しておきたいという場合は、partimageを使うのが一番お手軽である。このユーティリティには、以前に作成しておいたバックアップからパーティションを復元する機能も装備されている。

 Windowsマシンでの使用も想定したレスキューディスクの場合は、ウィルスおよびルートキットの対策ツールもインストールしておきたいところだろう。そうしたケースにて簡単かつ速やかに実行可能なウィルススキャンを入手するにはClamscanを利用すればよく、このツールキットにはコマンドラインベースのアップデートツールも付属している。同じくChkrootkitは、システム中に潜むルートキットを検索して削除してくれるスキャナである。またsleuthkitを使うと、ファイルシステムの診断および隠しファイル群のブラウジングを行うことができる。

 こうした必要なパッケージ群の追加が終了したら、中間作業用のデータをクリーンアップして、作業環境をアンマウントする。

rm -rf /tmp/*
rm /etc/resolv.conf
umount /proc
umount /sys
exit
sudo umount edit/dev

 次に、manifest(インストールパッケージの一覧に相当)を再生成して、必要なディレクトリ中にコピーしておく。

chmod +w extract-cd/casper/filesystem.manifest
sudo chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' > extract-cd/casper/filesystem.manifest
sudo cp extract-cd/casper/filesystem.manifest extract-cd/casper/filesystem.manifest-desktop
sudo sed -i '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop

 次に、ディスク1枚に収まるようファイルシステム全体を圧縮する。

sudo rm extract-cd/casper/filesystem.squashfs
sudo mksquashfs edit extract-cd/casper/filesystem.squashfs -nolzma

最後にISOファイルの作成を行う。

cd extract-cd
sudo mkisofs -r -V "$IMAGE_NAME" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../ubuntu-8.04-desktop-i386.iso

 こうして完成したイメージファイルはディスク上に焼き込んでおく必要がある。そのための作業はK3bやBraseroを使えば簡単に済ませられるが、下記のようにコマンドラインから実行させることもできる。

cdrecord dev=/dev/cdrom ubuntu-8.04-desktop-i386.iso

 最終的なチェックとして、焼き込みの完了したCDから各自のマシンをブートさせ、セットアップした環境が正しく使用できるかを確認しておく。

 以上、各自のニーズに則した究極のレスキューCD作成についてかなり詳しい情報を提供できたことと思う。こうして用意しておいたパッケージとツール群が、スタートアップ時に不調を訴え出したコンピュータのトラブルシューティングに役立てば幸いである。

完成形態で提供されているLinux用レスキューCD
 レスキュー用ユーティリティ群を収録したブータブルCDを入手するには、必ずしも自力でカスタマイズしなくてはならない訳ではない。完成形態で提供されているLinux用レスキューCDも何種類か存在しているのだ。
  • Parted Magic――GNOMEのパーティションエディタであるGPartedを使用する45MBサイズのブータブルCDで、ext2/3、NTFS、HFS+を含めた各種のファイルシステムに対応したパーティションテーブル管理が行える。このParted MagicはXfceデスクトップ環境で動作するよう構成されており、FirefoxやThunarおよびISO関連のユーティリティ群など、多彩なツールが利用できる。またメモリスティック形態で利用可能なUSBバージョンも用意されている
  • SystemRescueCd ――パーティション、アーカイブ、ネットワーキング関連のツール群および、エディタやファイルブラウザなども各種取りそろえた191MBサイズのブータブルCD。システムブートに対応したレスキューCDとしては最も扱いが簡単な部類に属し、高度なスキルを有さないLinuxユーザに適している。付属ツールとしては、ルートキット検出、ウィルススキャン、CD焼き込み用のユーティリティが同梱されており、Xfceを介したXインタフェースでの操作が行える
  • Trinity Rescue Kit――本来はWindowsマシン用のレスキュー/リカバリディスクを目的とした129MBサイズのブータブルCDだが、Linuxマシンでも使用できる。基本構成はMandriva Linuxをベースとしており、ウィルススキャン用の各種アプリケーションを始め、Windowsパスワードのリセット用ツール、Samba、SSH、ルートキットの削除用ツール群、パーティションやバックアップ用ツールなどが同梱されている

Kurt Edelbrockは大学生であると同時に、テクノロジ関係のジャーナリストおよびブロガーとしても活動中で、オープンソースに関係する様々な記事を執筆しつつ、公立大学のコンサルタントも努めている。

Linux.com 原文