PCが起動しなくなったから何とかして欲しい、という話がありました。状況を見てみると、(懐かしの)OS起動画面の途中でフリーズしてしまう模様。以前は何度かリセットすると起動することがあったとのことでしたが、同じところで止まってしまう状態でした。サービスに見てもらったが、掃除などの応急処置でも回復せず、修理(交換?)にはウン百万円かかるとのこと。残念ながらそれだけのおカネは用意できないとのことで私にお声がかかったのでした。ものすごい苦労したので、ひょっとしたら誰かが同じことをする際にヒントにでもなればいいなと思い、メモしておきます。前提としてLinuxの操作全般、仮想化(KVM、VT-d)、Win2000設定、おまけとしてBIOS設定の知識が必要となります。状況から考えると、PCのハードウェア周りの老朽化が考えられました。ハードディスクのクラッシュの可能性もありましたが、特有のカッシャン音(リードリトライ時のアクセス音)がしなかったために、とりあえず除外。15年も前の機体なのでコンデンサ周りなのかなぁと判断しました。考えられる戦略は以下です。GX260)は手に入りにくいようです。Amazonで本体が25まんえんほど、海外のサイトで中身が数万円で売られていましたが、いかんせん古いため、ギャンブルをするにはちょっと高いかなぁということで断念。T3400を発掘してきて、CrystalClearの動作までは何とか持って行けたのですが、本体とSCSIがうまく通信できませんでした。これはPCが悪いのか、発生装置本体が悪いのか不明なのですが、とりあえず断念(さらりと書きましたが、めちゃくちゃ苦労した)。いうことで、長い目で見て代替が利きやすい「仮想化」をやってみました。仮想化しよう!解決までに必要なことそんなわけで仮想化作業を開始しました。仮想化して動作させるには以下の問題を解決する必要がありました。仮想ホストの準備まずは仮想ホストがないと話になりません。ここで必要となるPCは、以下の条件を満たす必要があります。Express用/USB用などがあるのでどうとでもなると思いますが、PCIスロットが2本というのが結構クセモノです。古いマザーボードなら付いていることが多いのですが、古すぎるとCPUがVT-dに対応していなかったりするので難しいところです。第2世代のCoreシリーズあたりからちらほら対応しているようですが、新しい方がいいでしょう。本体が準備できたらOSをインストールします。今回は私が使い慣れているCentOS7のLiveDVDからインストールしました。続いてメディアをファイル化していきます。システムリカバリーRAXIS本体とともに付属していたフロッピーディスクとCD-ROMからシステムを復元する必要があります。仮想環境ですので、全てをイメージファイルにしてしまいます。ファイルになってしまえば、メディアで持っているよりも遙かに安心なのです!ただ、フロッピードライブ(FDD)が手元にあるかどうか、という問題が発生します。ない場合はAmazonなどでUSBのフロッピードライブを手に入れましょう。用意したLinuxにフロッピードライブを取り付け、ddコマンドでファイルにします。of=fdimage.vfdで読み込めます。1.44MBサイズです。続いて、付属CD-ROMをイメージ化するのですが、大きな問題がありました。なんと、CDがマルチセッションで書かれている!のです。PCを使って読み込みます。結局Rawイメージで取り出す必要はなく、Windowsで読み込んだときに見える全てのファイルをコピーしてDVDイメージにしてしまいます。以上より、必要なイメージは以下になります。DriveImageのバックアップデータファイルRAXISDriveImageAll.isoにはBACKUP.PQI〜BACKUP.009のファイルがあればよさそうです。ついでにBOOTCAT.BIN、BOOTIMG.BINというファイル、上記のフロッピーイメージ、RAXVideoのフロッピーイメージ、謎のデータフロッピーイメージなどを収録しました。上記のファイルが揃えばリカバリーに入ることができます。HDD(50GBぐらい)、FDDがついていればよさそうで、FDDにはRAXISDriveImageBoot.vfd、CDドライブにはRAXISDriveImageAll.isoをそれぞれマウントして、FDDからブートすると、リカバリーが始まります。PCの性能によりますが、3時間程度かかりました。これでWin2000が起動する準備が整いました!ちなみに、このDriveImageでリカバリーできるまで半日以上苦戦しました。マルチセッションCDのマルチセッションに何の意味もない、ということに気づいてからは早かったのですが。この先も苦戦が続きます。PassthroughシステムリカバリーデータからWin2000の仮想環境が構築されたところで、続いて、制御用I/Fカード(おそらくSCSI)およびビデオキャプチャーカードの認識が必要になります。Passthoughで仮想ホストのPCIスロットに挿入したカードを認識させます(そのためにVT-dが必要)。reason=failedどうやらVFIOでエラーが出て起動できないようです。ここで出てくる単語などで検索したのですが、私が探した範囲ではこれといった解決方法は見つかりませんでした。dmesgを見ていると怪しげなカーネルエラーを発見しました。17で何らかの不都合が起こっているのではないかと読み取れます。ここのvfio-intx(0000:05:01.0)が認識させたい制御用カードで、それとsnd_hda_intel:card1(おそらくIntelのサウンド関係のチップ)がぶつかっているような気がします。実際、/proc/interruptsを見ると、以下のようになっていました(一部省略)。17はsnd_hda_intelも割り当てられています。スマートな解決方法があるかもしれませんが、面倒なので認識されているデバイスをアンバインドしてドライバを解放することにしました。unbindこれで解放されました。16はEHCIなので、解放するとどこかのUSBポートが使えなくなりますが、まあ仕方がないです(実際、キーボードとマウスをつないでいたポートが使えなくなりました...)。unbindこの処理を行った後で、仮想Win2000を起動すると...起動しました!ドキドキしながら起動を待つと、Win2000でも、制御用カードとビデオキャプチャカードが認識され、ドライバがインストールされました!ただし、プリンタポートがないので、ドングルが認識されずCrystalClearが起動しないので、さらに続きます。