各自のニーズに則した復旧用ブータブルCDのカスタム作成法
ここでは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も何種類か存在しているのだ。
|
Kurt Edelbrockは大学生であると同時に、テクノロジ関係のジャーナリストおよびブロガーとしても活動中で、オープンソースに関係する様々な記事を執筆しつつ、公立大学のコンサルタントも努めている。