趣味で古い PC の環境を残しているのですが、しばらくの間、動作確認ができなかった環境を動作させることに成功した時の話です。同じ悩みを持つ人はほとんどいないと思っていますが、備忘録としてブログエントリに残しておきます。


【KVM 環境下の Windows7 内で Virtual PC を動かす必要に迫られた背景】
もともとはずっと OS/2(Warp 4) が動作する環境を残しておきたいと思っていました。最大の理由は「ノーツのバージョン1」が動く、数少ない環境だから」です。それ以外だと同様にして DOS 版 Lotus 1-2-3 や懐かしい DOS ゲームが動くという意味での PC-DOS が動作する環境も残しておきたいと思っていました。ちなみにこれらのインストールメディアは OS 含めて今も持っています。

この環境を残す、という目的のためだけに、しばらくの間は実際にこれらが導入された PC (OS/2 は IBM Aptiva、PC-DOS は東芝 Libretto)を残していました。西暦 2000 年頃の話です。

ただ「個人管理でハードウェアを残す」のはやはり大変でした。なにしろ「滅多に電源すら入れない PC を決して広くもない家に捨てずに残しておく」わけです。ソフトウェアやハードウェアの知識も陳腐化してゆきます。

転換期となったのは「仮想化ソフトウェア」でした。VMWare Workstation をはじめとする PC の仮想化により、ハードウェアそのものは不要となり、ハードディスクをイメージ化することで、ソフトウェアだけでこれらの環境を残すことが可能になりました。PC-DOS は今でも多くの仮想化ソフトウェアで動作しますが、OS/2 が動く仮想化ソフトウェアはあまり多くありませんでした。しかし Microsoft Virtual PC だけは当初のバージョンから OS/2 も動かすことができ、OS/2 を仮想環境下で動かすことが可能となりました。これを知った直後から自分は当時使っていた Microsoft Windows 環境内で Virtual PC を使って OS/2 と PC-DOS 環境を仮想化して残すことができました。

時は流れ、Windows 7 のサポート終了(2020/01/14)が近づくと、多くの Windows 7 ユーザーが Windows 10 へと環境移行しました。自分もメイン機は早々と Windows 10 へ乗り換えました。が、この Windows 10 では Virtual PC は動作しない(サポートされないではなく動作しない、インストールもできない)という問題がありました。ずっと残してきた OS/2 や PC-DOS 環境は Virtual PC 環境向けのイメージとなっていて、動かしていた当時のハードウェアはとっくに残してありません。Virtual PC を動かすためには Windows 7 が必要となり、Windows 7 を動かすためだけに専用の PC を残しておく必要があり、・・・となってしまうと元々上述した問題と同じことになってしまいます。

そこで考えたのが「仮想環境化で Windows7 環境を作り、その中に Virtual PC をインストールすれば今の OS/2 や PC-DOS の仮想資産を残すことができる」でした。当時の自分は Linux をベースとした仮想化システムに興味があり、当時の CentOS 6 の標準機能でもあった KVM を使った仮想環境構築にはある程度慣れていました。このような紆余曲折を経て KVM 環境化に Windows7 をインストールして、その Windows7 内で Virtual PC を使うという環境が生まれることになりました。


【KVM 環境下の Windows7 内で Virtual PC を動かしてわかった問題点】
KVM はある程度わかっているつもりでしたので、KVM 環境で Windows7 の仮想マシンをインストールして動かすこと自体は問題ありませんでした。またその環境にVirtual PC(2007) をダウンロード&インストールすることも普通にできました。あとは Virtual PC を実行して新しい仮想マシンを既存の(PC-DOS と OS/2 それぞれの)イメージファイルを使って作るだけ、と思っていました。

が、ここで大きな問題が発生しました。KVM 環境の Windows7 にインストールした Virtual PC を実行しようとすると、実環境下ではみたことがない以下のようなエラーが発生してしまいました。Virutal PC の実行直後(既存の仮想マシン一覧が表示される前)にこのエラーが発生してしまうため、実行を諦める以外の選択肢がありません:
2020122601


このエラーメッセージ(「このコンピュータの物理プロセッサとは互換性がありません」)の意味がわかりにくく、最初は 64 ビット版の Virtual PC と間違えて 32 ビット版の Virtual PC をインストールしてしまったのかと思いましたが、この推測は間違っていました(64 ビット版 Windows7 に 32 ビット版 Virtual PC をインストールしようとすると、インストール中にエラーとなり、インストールは完了しません。今回はインストールまでは完了しているのでこの現象とは異なります)。

ともあれ、Virtual PC が動かないのであれば、既存の Virtual PC で動作実績のある仮想ディスクファイルが存在していても PC-DOS や OS/2 を動かすことはできません。結局の所 Windows 10 環境へ移行したタイミングで OS/2 が動作する仮想環境を失ってしまうことになりました(PC-DOS は動かそうと思えば KVM 内で直接動かすことは可能でしたが、OS/2 は KVM では動きません)。特殊な環境ということもあったのか、この現象をググって調べても解決することはありませんでした。そのため OS/2 の動作環境を残すという目的のためだけに Windows7 の実機を残しておく必要に迫られ、結局「IBM Aptiva を残しておいた頃と同じ、元に戻ってしまう」ことになってしまったのでした。

ここまでが約1年前の話です。その後、この問題が未解決のままだったことをすっかり忘れてしまい、そのまま約1年が経過して、年末の PC 環境整理中に再びこの問題を思い出すことになったのでした。


【KVM 環境下の Windows7 内で Virtual PC を動かすために必要な設定】
改めてエラーメッセージ(「このコンピュータの物理プロセッサとは互換性がありません」)を、KVM というキーワードと合わせてググってみても同様の現象を見つけることが出来なかったので、もう解決策があるという前提で試行錯誤で行くしかありません。

で、仮想マシンの KVM 側の設定を眺めているうちに、このような画面にたどり着きました:
2020122600


KVM 側から見た、仮想マシンの Processer 設定画面です(普段はこのような画面を見る必要すらないので、こんな設定項目があることすら気づいていませんでした)。物理 CPU の割当数を変更したりする画面なのですが、その中に Configuration という項目があり、モデル欄が空になっています。。

このモデル欄は "486" とか "Pentium" といった CPU モデルを選択可能な項目になっているのですが、そのモデルが選択されていないため空になっている、という設定内容でした。念の為書いておきますが、他の Windows や Linux 仮想マシンでも、このモデル欄は空の設定になっていて、それでも問題なく動いています。実際この Windows 7 でも Virtual PC を導入しようとするまでは、この設定で問題にはなっていませんでした。

試しにここで "Copy host CPU configuration" ボタンを押して、ホストマシンの CPU 情報を参照して同じ設定にしてみました(モデル欄には "Opteon_G3" という値が自動入力されました。この値でなくても、ホストで使われている CPU の値が指定されていれば大丈夫だと思います)。この状態で「適用」しました:
2020122602


そして改めて仮想マシン(Windows 7)を起動し、Virtual PC を実行すると・・・ なんと!問題なく実行され、初期画面(新しいバーチャルマシンウィザードの開始画面)が表示されました:
2020122603


そのまま作業を進めて、別の Windows7 機で動いていた PC-DOS の仮想ディスクをコピー&指定して作成した PC-DOS 仮想マシンを動かすことができるようになりました!
2020122604


OS/2 環境も同様に KVM 環境下の Windows7 内 Virtual PC で動作させることができるようになりました:
2020122605


2020122607


いやあ、ここまで長かった! とりあえず KVM 内の Windows 7 では Virtual PC を動かすこと自体ができないのではないかと半ば諦めていたのですが、なんとか解決することができました。 めでたし、めでたし。。


ちなみに、元々のエラーメッセージでは「少なくとも Pentium II」が必要と書かれていました:
2020122601


じゃあ、このプロセッサー情報を(ホストと同じではなく)"Pentium II" と指定して適用すればいいのではないか? と最初は考えていました。が、そのように設定すると Pentium II と同様のウェイトがかかってしまうようでした。その結果、Windows 7 の起動そのものにものすごく長い時間がかかるようになりました(下画面は通常環境だと一瞬だけ表示されるもので、ユーザーが目の当たりにすることはほぼないのですが、プログレスバーがゆっくり進む様子が見て取れました)。そしてその結果なのか、何度も起動と途中終了&強制リセットを繰り返す無限ループに入ってしまい、起動することはありませんでした:
2020122608

↑Windows 7 時代では貴重な起動画面のスクリーンショット