Libretto L5にWindows2000をネットワークインストール

RO露店を出す時はいつもLibretto L5を使っている。Crusoe-800MHz / 512MBでWindowsXP自体かなり重いのだが、露店や定点放置くらいは普通にこなせていた(β2時代辺りは多少の狩りも出来てたし)。
ところが先日の魔王モロクパッチ以降、露店すらも怪しい状況に。クライアントの負荷増大に加えIE+ActiveXによるログインシステムがメモリを食いまくりメモリスワップが酷いことに。プロ十字付近なんてマウスカーソルすら飛びまくって下手すると1FPSを切る。
ROじゃなくてもスペック的にそろそろ厳しいしネットブックでも買おうかと思っていたのだが、「そういえばWindows2000にすればまだいけるかも、丁度昔使ってたライセンスが1個あるし…」とふと思いついた。2000ならメモリ512MBでもいけるし、GUIも軽いはず。
問題はL5へのインストール方法。とりあえず思いつくままに検討。

  • FDDブート…純正もしくは一部メーカのUSBFDDでブート出来るらしい。でも持ってない。松下のスーパFDD(USB)が実はあるのだがブートしなかった。
  • CDROMブート…純正もしくは一部メーカのUSBCDROMドライブでブー(ry。IDEのDVDRドライブはあるので、USBHDDケースからIF基板を引っこ抜いて即席USBCDROMドライブを作ってみたがダメだった。
  • CFブート…CFカードからブート可能なのでここにインストーライメージを…CFカードが無かった。
  • SmartBootManagerの利用…以前CDROMブートの出来ない旧PCでCDROMブートインストールをやった時の方法。が、こいつでUSBCDROMをブート出来る保証はない。やってみる価値はあると思うがどうだろな、ちょっとリスキー…
  • PXEブート…L5はPXEブートに対応しているのでWindows2000以降ならネットワークインストールが可能。…だが基本的にWindowsServerが母艦として必要に。そんなのないよ…

という感じでどれもうまくいかない。諦めてCFか純正CDROMドライブを買う or L5引退のどちらかを考えていたのだが、ふと「Windowsリモートインストールはイントラ系で需要あるはず。ということは誰かLinuxサーバ用のデーモンを書いてるのでは…」と気づいた。
ぐーぐる先生に聞いてみるとずばりWindowsServerを使わずにRISを実現出来る方法を発見。WindowsのRIS自体はLinuxなんかのネットワークインストールと似ていて、PXE/bootp/tftp/dhcpで実現されているのだが、Windowsのドライバデータベースみたいな機能を実現するBINLというプロトコルが存在している。こいつを喋れるのがWindowsServerで、そいつをPythonでエミュレーションしたのがris-linux。
とりあえずデスクトップサブマシン(WindowsXP)をLANから切り離して母艦とし、このris-linuxサイト及び公開ドキュメント、あとここらへんのサイトを参考に環境を構築。手順はWindowsXP向けのがほぼそのまま適用出来るのだが、以下の点だけ修正。

  • 手元にWindows2000実働マシンがないので、インストールCDのi386ディレクトリから*.in_を抜き出しexpandで展開し*.in_ → *.infにリネーム。ただしwin.in_はiniファイルなので除外。またnetoct35.infがinfparser.py実行時にエラーになるので除外(マイナーデバイスなので問題ない)。
  • このページや解説PDFにあるようにWindows2000のブートローダはバグ(?)があるようで、初期ブート?インストーラ設定ファイル(SIF)までの転送時にファイル名化けをおこす(バッファのNULL終端を忘れてるような…)。そこでtftpのログをみてprefixとして付加されている文字化け部分を調べ、母艦側のstartrom.n12 / ntdetect.com / winnt.sifのファイル名にわざとprefix部分をつける。

以上のように母艦サーバを設定した後、母艦とL5のみのLANを組みL5をPXEブート(起動時にF12キーを押しPXEブートを選択)。無事Windows2000をリモートインストールすることが出来た。

インストール終了後は、

  • ServicePack4の転送、インストール
  • WindowsUpdateで全セキュリティアップデートをかける
  • DirectX9.0cインストール
  • WMP9インストール
  • 各種デバイスドライバインストール

の順に行った。SP4さえ入ってしまえばUSBメモリデバイスを使えるようになるので転送は楽に。
実は以前無印Windows2000にSP4をマージしたディスクを作成していたので最初はそれをインストーラベースに使用したのだが、初回再起動時に特権違反でBSODが発生し起動しないトラブルに遭遇した。多分なにかのドライバが原因だと思うが特定出来ないので断念。結局オリジナルの無印インストールCDを引っ張り出してきて、インストール後にSP4を当てることで解決。
またデバイスドライバは旧XPのリカバリ用を基本に、2000版がないデバイスは型番を元にネット上の各所からかき集めておいた。ビデオチップがATI Mobility Radeon-Mなので大変だったが、OmegaDriverの旧ドライバで解決。ただし現在、謎のデバイスが1個!マーク付で残っている。うーん、デバイスIDも見えないしなんだろなこれは…そのうち調査してなんとかしよう。
L5 with Windows2000でのROはというと…なかなか快適。以前のXPSP3だとモロク以降はキャラセレ画面の時点でマウスカーソルがまともに動かないという体たらくだったが、2000だと普通。640×480にしているがプロ十字露店も普通に歩ける。
RO以外も全体的に軽くてレスポンスが良い。まあL5はもう時代遅れで遅いマシンであることに変わりはないのだが、なんとなくネットブックへ買い換える興味が薄れてしまった。XPみたいに余計なリソースを食わなくて、堅牢なNTカーネルを使えるWindows2000は万能だなあ。
(2008/11/20追記) 謎デバイスはSDスロットだった。リカバリについてくるドライバがそのまま使えたので入れたら無事SDデバイスとして認識。