Windows7のkvm移植で起動できない対処

windows7

Windows Vista, Windows7 の BCD と STOP 7B

以前のBlog記事でQEMU KVM(仮想OS環境)「 WindowsXP STOP 7B で起動できない 」件を書きました。
kvmでWindowsXPが起動できない ブルースクリーン

あれから Windows Vista と Windows7 を QEMU KVMで起動するテストをしてみました。結果としてWindowsVista , Windows7も同じ「STOP 7B ブルースクリーンで起動できない」現象は同じでした。Vista,7共に若干XPとは違う対処が必要でした。今回はこれをとりあげます。

あらためて補足しておくと、これらの検証起動テストは、既に動作しているOSのバックアップからkvm環境へ復元するもので、新規インストールではありません。初めてkvmを構築される方は、新規インストールをお勧めします。

WindowsVista, Windows7は、ブート構成情報が違う

まず Vista,7は NTカーネル 6.0 6.1 のため ブートシステムがXP(NTカーネル 5.2)と違うため、カーネル起動の前でストップしてしまいます。

これは Bootフォルダ内のBCDという「ブート構成データ」の再構成が必要となります。
BCDは以前のカーネル5.x系 Boot.ini に変わるもので、Windowsの起動方法を制御しています。BCDはレジストリ・ファイル形式で、chntpwコマンドで閲覧できます。Windowsから操作するには、 bcdedit.exe を使います。

今回このブート構成を調整するにあたって、私はWindowsRE(Windows 回復環境)で修復しました。WindowsREを使う方法はいくつかありますが、それぞれのWindowsインストールDVD(実際にはisoデータ)で起動しました。インストール ディスクの起動後、「言語、時刻、通貨、キーボード」設定し、「コンピューターの修復」に進みます。そこからは修復のウィザードが走ります。

この問題はこれでOKです。

起動時のストレージ・ドライバをロード有効にする

次にVista や Win7の起動を試みると、「STOP 7B ブルースクリーンのエラー」で止まります。(自動的にリブートします)このエラーの原因は以前の記事で書いたとおりです。

Windows Vista については、 XP同様 レジストリ キー「Control\CriticalDeviceDatabase\pci#ven_8086&dev_7010」のレジストリ対策で解決しました。

Windows7については、このレジストリ対処では解決せず、私のバックアップ復元環境では既に レジストリ キー「Control\CriticalDeviceDatabase\pci#ven_8086&dev_7010」の記載がありました。

そこでいろいろ調べてみると、NTカーネル 6.x系のVista Win7は、起動時のドライバ ロードを無効にしているレジストリ設定があるとのこと。

一部抜粋

Windows 7 または Windows Vista のインストール処理中に、任意の未使用記憶域ドライバーは無効になっています。この問題はオペレーティング システムの起動処理の速度が上がります。ブート ドライブを無効になっているドライバーを変更すると、ハードウェア構成を変更する前に、新しいドライバーを有効にする必要があります。

たとえば、Windows Vista または Windows 7 を Pciide.sys ドライバーを使用して、コント ローラーが含まれているコンピューターにインストールすることを想定しています。その後、AHCI に SATA モードを変更します。このため、ドライブが Msahci.sys ドライバーを読み込む必要があります。ただし、この変更を行う前に Msahci.sys ドライバーを有効にする必要があります。

この問題は、ブート ドライブのみに影響します。変更するドライブがブート ドライブではない場合は、この問題は発生しません。

http://support.microsoft.com/kb/922976/ja

そこでこの起動時(システム ローダー)に IntelIDEドライバをロードする設定に変更して、無事解決しました。

レジストリのキーは ControlSet001\services\intelide で Start の値を 0にセットすればOKです。

この Start の値 は 以下の意味のようです。


Start Types: 
0, "boot", "Service is automatically started by the system loader (only for driver services)"
1, "system", "Service is started by the IoInitSystem (only for driver services)"
2, "auto", "Service is automatically started at system startup"
3, "demand", "Service is started when specifically requested to start"
4, "disabled", "Service is disabled and cannot start"

最後に。Windowsのレジストリ変更は、十分に注意して自己責任で行ってください。

関連したページ

nexia access map
x