Windows 7では、VHDファイルからブート可能になっている。マルチブートやUSBメモリからのブートも簡単に実現できるVHDブートの設定方法を解説する。
「第10回 Windows 7のVHDファイル・サポート」では、Windows 7でサポートされているVHDの作成/読み書き機能について解説した。Windows 7のVHDサポート機能という点では、VHDファイルからブートできる機能がEnterpriseとUltimateの2つのエディションでサポートされている(Windows Server 2008 R2はすべてのエディションでVHDファイルからのブートをサポートしている)。これにより、Windows 7やWindows Server 2008 R2のブート・ローダを利用して、Windows 7 EnterpriseやUltimateのシステム・イメージが含まれたVHDファイルからの起動(VHDブート)が行える。
この機能を利用すれば、既存のWindows OS環境のブート・ローダだけを操作することで、マルチブート環境が容易に作成できる。普段はWindows 7を利用しているが、デモやテストのためにWindows Server 2008 R2環境が必要といった場合でも、再起動だけで切り替えが可能だ。仮想化環境でサポートされていないデバイスであっても、物理コンピュータから起動されるのため、VHDブートならば利用可能だ。仮想環境を使っている場合と違い、追加したOSも同時に起動して利用するわけにはいかないが、バックアップやリストアはVHDファイルのコピーなどで簡単に対処できるし、新規にディスクやパーティションを用意しなくても、(空き容量さえあれば)何種類ものOS環境を用意できるのが便利である。
VHDブートする環境(OS)を作成するには、大きく分けて次の2通りの方法がある
方法1は、すでに作成済みのVHDファイルがある場合に利用できる方法である。Virtual PC 2007やWindows Virtual PC、Virtual Server 2005 R2、Hyper-Vなど、いずれの仮想化環境を使ってもよいので、実行可能なWindows 7/Windows Server 2008 R2がインストールされたVHDファイルを用意する(Windows 7/Server 2008 R2の標準バックアップ・ツールで作成したバックアップVHDファイルでもよい。詳細は後述)。次にbcdeditコマンドを使ってこのVHDファイルをブート・ローダのメニューに追加登録すると、コンピュータの起動時に選択可能になる。
この方法のメリットは、(手元にVHDファイルが存在すれば)最も簡単にVHDブートさせられるということである。ただし元々は仮想マシン環境で動作していたOSイメージなので、実PCで起動させた場合、(最初の1回だけだが)ハードウェア構成の変更によってデバイス・ドライバの再インストールなどの作業が発生する(後述するように、デバイス・ドライバ関係でレジストリ変更などが必要なこともある)。完全なクリーン・インストールをさせたい場合は、次の方法2にするとよい。またホストOSがWindows 7の場合、64bit版のゲストOSをVHDファイルとして用意する方法がないので(Windows 7のWindows Virtual PCでは、32bit版ゲストOSしか利用できない)、作業が面倒である(いったんWindows Server 2008 R2を実PCにインストールし、そこでHyper-Vを使って64bit版OSをVHDファイルにインストールするなど)。この場合も、次の方法2がよいだろう。
方法2は、コンピュータをWindows 7/Windows Server 2008 R2のインストールDVD-ROMを使って起動し、新規インストール作業を行わせる方法である。インストールDVD-ROMを使ってOSをインストールしようとしても、通常は物理ハードディスク(とその中に存在するパーティション)しか認識されない。そこで、インストール作業の途中でdiskpartコマンドを起動し、VHDファイルを作成してアタッチ後、仮想ディスクをインストーラに再認識させる。以後の作業は物理的なディスクにインストールさせる場合と同様である。
この方法では、インストールDVDさえ用意すれば、手元にVHDファイルがなくてもOSが新規インストールできるし(アップグレードインストールは不可)、現在使用しているOSやその種類(32bitか64bit、エディション、言語)に関わらず、いずれのOSもインストールできる(ただしWindows 7はProfessional/Ultimate Editionのみ)。また方法1と違い、ブート・ローダの項目を手動で編集する必要はない。通常のOSインストール時と同様に、インストーラが自動的に行ってくれるからだ。
まずVHDブートを行うためのVHDファイルを用意する。Virtual PCやHyper-Vなどの仮想化ソフトウェアを利用して、Windows 7 EnterpriseまたはUltimate、Windows Server 2008 R2をゲストOSとしたVHDファイルを作成しておく。VHDファイルの作成方法は、「仮想PCで学ぶ『体当たり』Windowsシステム管理 第1回 実験用の仮想PC環境を準備する」「Windows TIPS:Windows Virtual PCで新しい仮想マシンを作成する」を参照してほしい。後述のように仮想ハードディスクは、容量固定タイプで作成しておいた方がよい。また「第10回 Windows 7のVHDファイル・サポート」で解説したように、Windows 7/Server 2008 R2の標準バックアップ・ツールを利用すると、VHDファイルによるシステム・イメージが作成できるので、このVHDファイルを利用してもよい。ただし、この場合はバックアップ・ファイルが更新されてしまうことになるので、必ずコピーしたものをVHDブートに利用すること。
次にコマンド・プロンプトを[管理者として実行]で起動し、以下のコマンドを実行する。bcdeditコマンドについては、関連記事を参照していただきたい。
C:\> bcdedit /create /d “Windows 7 - VHD Boot” /application OSLOADER
「“Windows 7 - VHD Boot”」の部分は、ブート・マネージャで表示されるものなので、分かりやすい名前を付けておけばよい。すると、以下のように作成したエントリのidentifier(ID)が表示される。
エントリ {1506ac5d-c37f-11de-839c-d8a8f5a29ccc} は正常に作成されました。
以下、このコマンドで作成されたエントリ(ここでは、{1506ac5d-c37f-11de-839c-d8a8f5a29ccc})に対して設定を行うことになる。このエントリの値はユニークなIDとなるため、実行環境などによって異なるので注意が必要だ。なおエントリが分からなくなったら、「bcdedit」を実行すると、追加されたエントリが調べられる。
次に、このエントリに対して起動先となるVHDファイルのパスなどを設定していく。コマンドでエラーなく実行できた場合は、「この操作を正しく終了しました。」と表示される。起動ドライブを[C:]のように、[ ] で囲むことを忘れないようにすること。
C:\>bcdedit /set {1506ac5d-c37f-11de-839c-d8a8f5a29ccc} device VHD=[C:]\VHDBOOT\win7.vhd
C:\>bcdedit /set {1506ac5d-c37f-11de-839c-d8a8f5a29ccc} osdevice VHD=[C:]\VHDBOOT\win7.vhd
C:\>bcdedit /set {1506ac5d-c37f-11de-839c-d8a8f5a29ccc} path \Windows\system32\winload.exe
C:\>bcdedit /set {1506ac5d-c37f-11de-839c-d8a8f5a29ccc} systemroot \Windows
C:\>bcdedit /set {1506ac5d-c37f-11de-839c-d8a8f5a29ccc} locale ja-JP
C:\>bcdedit /set {1506ac5d-c37f-11de-839c-d8a8f5a29ccc} detecthal yes
C:\>bcdedit /displayorder {1506ac5d-c37f-11de-839c-d8a8f5a29ccc} /addlast
設定が完了したら「bcdedit」を実行して、パスなどがブート・ローダに正しく設定されたかどうか確認するとよい。
これで、VHDブートのためのブート・ローダの設定が完了する。再起動すれば、ブート・マネージャに「Windows 7 - VHD Boot」が追加されて、VHDブートが選択できるようになっているはずだ。「Windows 7 - VHD Boot」を選択すれば、VHDファイル内のWindows 7が起動する。初回起動時は、ログオン後にデバイス・ドライバのインストールが行われる。仮想化環境では、仮想化されたデバイス(ハードディスクのインターフェイスやグラフィックス機能など)であるため、物理コンピュータ上のデバイスが新しいデバイスとして認識されるためだ。
Copyright© Digital Advantage Corp. All Rights Reserved.