PXEブートによるPCの有効利用

PXEブートの環境を見直し、私なりの工夫を加えた結果、以前より保守しやすい環境を構築できたが、その内容はDHCP、tftp、syslinux、gPXEと多岐に渡るので今後、それぞれのテーマに分けてメモって行くことにする。ここでは何故そのような見直しが必要となった背景だけ書いておく(ここには技術的な内容に関する記述はない)。

私は、古くなったが捨てられずにいるPCも含めて6台ほどのPCを持っている。メールやMS Officeを中心に使うWindowのPCs(Windowsしかドライバの無い地デジカードの利用も含む)、外出用のノートPC、家族用のPC(仕事用のPCとは共有したくないので)、サーバ用のPC(RAID構成の大容量ファイルサーバ、兼仮想マシンサーバ、兼××、兼○○、…)、そして古くなった半分ジャンクになりかけてりるPCが2台、という感じになる。(その他にも常用している仮想マシンが数台ある。仕事用(物理)PCに何かあった場合にほぼ同じ環境で利用できるバックアップ用の仮想マシン、怪しいソフトのダウンロートや試験をするための仮想マシン、銀行などの口座にアクセスするためのセキュリティを高めた専用の仮想マシンなどである。)それぞれのPCにはHDDがありWindowsなり、LinuxなりのOSがインストールされている。大体はそんな感じで使い分けている訳で(PCの稼働率を無視すれば)普段は特段の問題もない。一時的に必要なPCが出てきた場合は仮想マシンを仕立てれば済んでしまう。

とは言っても、一時的に他のOSで立ち上げたり、他の用途で使ったりする必要が出てくる。例えば、WindowsのPCのバックアップを取る場合である。勿論、Windowsにも気の利いたバックアップツールは用意されているが、Linuxで起動してWindowsの入ったHDDを(もしくはシステムパーティションを)丸ごとイメージバックアップする方法以上に完璧で、かつ容易な方法ないと思う。また、ハードウェアに依存した環境で使う場合。例えば、普段はWindowsを動かしているが、そのPCにあるハードウェアをLinuxでも利用したい場合。そして、特定の環境を状況によって色々なPCで利用したい場合。例えば、最近はAndroidの開発環境(Ubuntuベース)を使っているが、机の前にいる時にはWindowsマシンの中でvmplayerを使って仮想マシン環境で動かしている。vmplayerであればホストのUSBのポートへもアクセスできるので実機(REGZA Phone)の接続も可能となる。とは言っても仮想マシンではなく実マシンで動かしたい時は、Windowsをシャットダウンして、AndroidをインストールしているUbuntuを直接ブートする。また、Windowsで他の重い作業をしている時は、家族のPC(普段は勿論Windowsを動かしている)を拝借して、そちらでUbuntuをブートして使う。また、外出中は(vmplayerではなく)VMware Serverの中の仮想マシンとして起動して、リモートコンソールから使う、といった感じになる。こう書くとAndroidSDKをインストールしたUbuntuを各マシン毎に何種類も用意しているように思うかも知れないが、全て“同じ”Ubuntuをブートして使っている(そのため、同時に複数のマシンでブートすることは出来ないが)。そして(実マシン、仮想マシンの区別なく)どのマシンでブートしても全く同一の環境で作業できる。

こういった事を可能にしてくれるのがPXEブートであり、更にiSCSIと組み合わせると複数PCによる同一環境の使い回しもできるようになる。上の個々のケースについては既にこのブログでもメモして来ているので新規にどうこうと言うことではない。ただ、今まではそれぞれの用途に対してパッチワーク的に構築してきたので、OSを起動するマシンを変更する場合はDHCPサーバの設定を変更したり、syslinuxの設定を変更したりで、“あれ、このマシンであのOSをブートさせる時はどこを直せばよかったんだっけ?”と自分でも迷ってしまうこともあった(そうは初中、変更するわけでもないので忘れてしまう)。そこで、これらの環境をまとめ、PXEブートする時にメニュー選択できるように環境を整えた。今、私の環境でPXEブートすると、次のような画面になる:

“Memory Test”はOSをブートするのではなくMemory Testプログラムを起動実行する。syslinuxに付属するmt86plus(旧memtest86+)を起動しているだけ。
“gPXE”を選択すると、gPXEを使って再ブートに入りiSCSIでのブートが可能となる。ここで、どのiSCSIディスクを使ってブートするのかメニュー化したかったのだが、現バージョン(1.0.1)のgPXEに対してパラメータを渡すことができないようなので、ここだけはマシン依存になってしまう(詳細はgPXEの設定の所で)。今のところはAndroidの開発環境をブートするのに使っている。
VMware Remote Desktop”はシンクライアントとしてPCを立ち上げて、サーバ上で動いている仮想マシンのリモートコンソールとして使う。捨てられずに置いてある昔のPCのための設定である。
Ubuntu 10.04 Desktop i386”、“Ubuntu 10.04 Desktop amd64”は(iSCSIを使わず)ディスクレス形態でUbuntuをブートする。ちょうどUbuntuのライブCDを起動したのと同じ状態をPXEでネットブートする形になる。この設定があると普段はWindowsを動かしているPCでも気軽にUbuntuを起動することができ、マシンの保守などのために利用する。Windowsマシンのバックアップ取る場合はLinuxをブートしてHDDを丸ごと(もしくはシステム・パーティションを)イメージとしてバックアップするのに使う。また、HDDからブートできない!とかいう場合にも使う。
“Install Ubuntu i386”、“Install Ubuntu amd64”はUbuntuのインストールに使う。この様に設定しておけば、いちいちインストール用のDVDを焼かずにBIOSからPXEブートを選ぶだけでUbuntuのインストールが可能となる(ただGUI画面ではくCUI画面でのインストールになるが)。

単にこういったメニューを作りました!だけではここでメモって置く必要もない。こういったメニューの保守をできるだけ容易にするように色々と工夫してみた。それらをテーマ毎に分割してメモっていくことにする。
↓ 各テーマごとのメモ
1:syslinuxの設定ファイルに関する工夫