連載
» 2010年04月22日 00時00分 公開

Windows 7新時代:第11回 Windows 7のVHDブートを試す (3/3)

[小林章彦,デジタルアドバンテージ]
前のページへ 1|2|3       

VHDファイルを作る際に気を付けること

 これでVHDブートができるようになるはずだが、場合によってはVHDブートを行おうとすると、以下のようなエラーが発生することがある。エラーの原因と回避方法を紹介しておく。

■サポートされないOSに起因するエラー
 Windows 7 StarterなどがインストールされたVHDファイルから起動しようとすると、以下のような画面が表示されて起動できない。これは、VHDブートをサポートしているエディションがEnterpriseとUltimateだけだからだ。Windows 7 Starterでは、VHDブートがサポートされていないため、このような画面が表示されてしまい、先に進めない。

Windows 7 StarterをVHDブートしようとした際のエラー画面
Windows 7 Starterは、ライセンス上、VHDブートをサポートしていないため、このようなエラー画面が表示されて起動できない。

 解決策は、Windows 7 EnterpriseまたはUltimateをインストールしたVHDファイルに置き換えることだ(ブート・ローダを変更しなくても、同じVHDファイル名で置き換えればよい)。なお、VHDブート自体がサポートされていないWindows XPなどのOSでは、以下のようなエラー画面が表示されて、やはり起動できない。

Windows XPをVHDブートしようとした際のエラー画面
Windows XP SP3をVHDブートしようとすると、このようなエラー画面が表示され、起動できない。VHDブートには、VHDブートをサポートしたOSがインストールされたVHDファイルが必要となる。

■ストレージ・ドライバに起因するエラー
 VHDブートの途中で、「STOP: 0x0000007B」エラーでブルースクリーンとなることがある。これは、ストレージ・ドライバに起因するエラーだ。

 仮想化ソフトウェアで作成したVHDファイルでは、IDEコントローラ接続でセットアップされる。これをシリアルATA(SATA)コントローラを使用する物理コンピュータで起動しようとしたため、このエラーが発生する。

 Windows 7では、使用しないストレージ・ドライバは無効にして、ロードしない設定になっている。仮想マシンでは、物理コンピュータ上のストレージがSATAであっても、仮想化されてストレージ・ドライバとしてIDEコントローラが利用される。そのため、SATAコントローラ用のストレージ・ドライバが無効化されている。その結果、VHDファイルから起動しようとすると、物理コンピュータ上のSATAデバイス(つまりハードディスクなどのストレージ)が認識できず、ブルースクリーンとなってしまうのだ。

 この問題を修正するには、VHDファイル内のWindows 7のレジストリを編集し、SATAコントローラ用のストレージ・ドライバを事前に有効化しておけばよい。

【注意】

レジストリに不正な値を書き込んでしまうと、システムに重大な障害を及ぼし、最悪の場合、システムの再インストールを余儀なくされることもあります。レジストリ・エディタの操作は慎重に行うとともに、あくまで御自分のリスクで設定を行ってください。何らかの障害が発生した場合でも、本Windows Server Insider編集部では責任を負いかねます。ご了承ください。


 レジストリ・エディタを起動し、以下の2つのレジストリを編集する。

項目 内容
キー HKEY_LOCAL_MACHINEのSystem\CurrentControlSet\Services\Msahci
HKEY_LOCAL_MACHINEのSystem\CurrentControlSet\Services\IastorV
名前 Start
種類 REG_DWORD
データ 0(デフォルトは3)
ストレージ・ドライバを有効にするためのレジストリ値

レジストリの編集画面
ストレージ・ドライバの名前「Start」のデータを「3」から「0」に変更し、有効化しておく。この操作を行っておかないと、VHDブート後、ブルースクリーンになってしまう。

■容量可変ハードディスク/容量固定ハードディスクに起因するエラー
 容量可変ディスクに設定していると、VHDファイルからの起動時に「STOP: 0x00000136」エラーが発生し、ブルースクリーンとなることがある。これは、容量可変ディスクに設定したVHDファイルに起因するエラーだ。

 VHDブートした際に、容量可変ディスクに設定してある容量を確保しようとする。しかし物理ハードディスクの空き容量が少ない場合、容量が確保できず、ブルースクリーン・エラーを発生してしまう。仮想化環境で利用している場合、容量可変ディスクの容量は、物理ハードディスクの空き容量よりも大きく設定可能なので注意が必要になる(必要になるまで利用されないため)。

 Windows XP Modeが利用するWindows Virtual PCを利用してVHDファイルを作成すると、デフォルトでは容量可変ディスクで作成される。このままWindows 7などをインストールしてしまうと、容量固定ディスクに変換する際に、物理ハードディスクの空き容量を超えてしまうことがあるので特に注意したい。容量可変ハードディスクで作成する場合は、物理ハードディスクの空き容量を超えないように上限のサイズを設定しなければならない。ただ、物理ハードディスクの空き容量は、既存のOSなどの運用によって変化するので、VHDブートを行う場合は容量固定ハードディスクに設定しておいた方がよい。

 なお容量可変ディスクで作成した場合は、Windows Virtual PCで[Windows Virtual PCの設定]を開き、ハードディスク 1などを選択、右側ペインの[変更]ボタンをクリックすれば、容量固定ディスクに変更できる。

Windows Virtual PCのハードディスクの設定画面
容量可変ディスクでVHDファイルを作成した場合は、Windows Virtual PCを利用して容量固定ディスクに変更できる。
  (1)このボタンをクリックすると、選択されているVHDファイルを容量可変ディスクから容量固定ディスクに変更できる(逆も可能)。ただし、設定したディスク容量を小さくすることはできないので、物理ハードディスクの空き容量に注意が必要だ。

【コラム】USBメモリからのVHDブート方法

 既存のWindows 7のブート・ローダを変更してしまうのに不安があるという人は、練習としてUSBメモリ(SDメモリーカードでも可能)を使ってVHDブートを試してみてはどうだろうか(ただしWindows 7やWindows Server 2008 R2をインストールするためには、最低でも16Gbytes以上のUSBメモリが必要だが)。

 USBメモリをコンピュータ(Windows 7またはWindows Server 2008 R2)に挿したうえで、[管理者として実行]で開いたコマンド・プロンプト上で、「diskpart」と入力してdiskpartコマンドを実行する。すると、プロンプトが「DISKPART>」に変わる。ここで以下のコマンドを順番に実行していけばよい。ただし、「select disk 1」の「disk 1」の部分は、その前のコマンドである「list disk」で表示されたUSBメモリのディスク番号を指定する。ここを誤ると、システムやデータが含まれたパーティションをフォーマットしてしまうことになるので十分に注意していただきたい。またUSBメモリの内容はすべて消去されてしまうので、大事なデータが含まれていないかどうか事前にチェックしておくこと。

DISKPART> list disk
DISKPART> select disk 1
DISKPART> clean
DISKPART> create partition primary
DISKPART> select partition 1
DISKPART> active
DISKPART> format fs=ntfs
DISKPART> assign
DISKPART> exit

 ここにWindows 7 EnterpriseまたはUltimateのブート・イメージを持つVHDファイルをUSBメモリのルートにコピーする。Windows 7のインストールDVDのbootフォルダにあるbootsectコマンドを実行し、マスター・ブート・コードを更新して、USBメモリからブート可能にする。オプションの「/nt60」はWindows 7のBOOTMGRと互換性のあるマスター・ブート・コードを書き込むオプションである。

bootsect /nt60 <USBメモリのドライブ名>

 その後、再びコマンド・プロンプトで「diskpart」を実行し、以下のコマンドを実行する。

DISKPART> select vdisk file=<VHDファイルのフルパス>
DISKPART> attach vdisk
DISKPART> select part 1
DISKPART> exit

 これで起動したいVHDファイルがマウントされるので、続いて以下のコマンドを実行し、ブート・ローダをUSBメモリにコピーしたVHDファイルから起動するように編集する。

bcdboot <マウントした仮想ファイルのドライブ名>\Windows /s <USBメモリのドライブ名> /v
bcdedit /store <USBメモリのドライブ>\Boot\BCD /set {default} device vhd=[<USBメモリのドライブ>]\<VHDファイルのパス>
bcdedit /store <USBメモリのドライブ>\Boot\BCD /set {default} osdevice vhd=[<USBメモリのドライブ>]\<VHDファイルのパス>
bcdedit /store <USBメモリのドライブ>\Boot\BCD /set {default} locale ja-JP

 これでUSBメモリから優先して起動するように、BIOSを設定すればUSBメモリ内のVHDファイルからWindows 7/Server 2008 R2が起動する。ログオン後には、デバイス・ドライバのインストールなどが行われ、Windows OSが利用可能になる。

 注意する点は、VHDファイル内のWindows 7/Server 2008 R2のレジストリを事前に変更して、ストレージ・ドライバを有効化しておくことに加え、以下のUSBに関するレジストリについても同様に有効化([Start]キーを「0」に設定)しておくことだ。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\usbccgp
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\usbehci
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\usbhub
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\usbohci
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\USBSTOR
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\usbuhci

 またVHDファイルを作成する際、容量固定ハードディスクに設定し、USBメモリ容量よりも小さいサイズにしておく必要がある。例えば、16GbytesのUSBメモリを利用する場合、VHDファイルのサイズは14Gbytes程度にしておかないと、USBメモリにVHDファイルがコピーできないので注意が必要だ(USBメモリは、ハードディスクと同様、1Gbytes=1000Mbytesであるため)。

 USBメモリの性能などにも依存すると思うが、現時点ではハードディスクなどに比べて遅く、あまり実用的ではない(高速なUSB 3.0ならば、実用になるかもしれない)。あくまで実験や練習用と考えた方がよいだろう。



 VHDブートを利用すると、既存のWindows OSのブート・ローダに少し手を加えるだけで、マルチブート環境が構築できる。ハードディスクに余裕があれば、複数のVHDファイルを用意することで、簡単にOSの切り替えが可能になるわけだ。VHDファイルならば、バックアップやコピーも容易なので、複数の履歴が必要となるテストにも重宝する。マルチブート環境が必要ならば、VHDブートを利用することを勧める。


「Windows 7新時代」のインデックス

Windows 7新時代

「Windows XP→Windows 7移行支援記事集」のインデックス

Windows XP→Windows 7移行支援記事集

前のページへ 1|2|3       

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。