仮想ハードディスク(VHD)にインストールしたWindows 7からネイティブブート(diskpartコマンドの使い方) 2010/12/18
VHDからのネイティブブートが役立つシナリオ
仮想ハードディスク(以下「VHD」)からのネイティブブートとは、VHD上にインストールしたOSを、ネイティブマシン(仮想マシンではなく物理的なマシンからという意味)から起動することである。
私は、この機能を使いたいがために、奮発してWindows 7 Ultimateを購入したと言ってもいい。
vmware, Virtual-PC, VirtualBoxなどの仮想化ソフトは確かに便利だ。しかし、ライセンスの厳しい制約のために、ライセンスを複数用意しない限り、事実上、仮想化ソフトで気軽に使うことはできない。
一方、VHDからのネイティブブートには、次のようなメリットがある。
- Windowsがインストールされているパーティションのバックアップが容易(VHDファイルのコピーで済む)
- リストア操作をすることなく、すぐに特定のバックアップVHDを使用してブートできる(サービスパックの適用前後での動作の違いを確認するとき等に便利)
- 例えば次のようないろんな構成のバックアップを作っておき、起動時に切り替えて使用できる(あくまでWindowsのインストール/アクティベーションは最初の1回で、各バックアップはそれから派生したに過ぎない。
「切り替え」と書くと語弊があるが、論理的にはリストア→起動→終了→バックアップを繰り返しているに過ぎない。)
- プレーンインストール(セキュリティーアップデートやサービスパックの適用のみ)
- ネットバンキングやショッピング用(信頼できないダウンロード元からのソフトは入れない)
- 開発作業用(便利なソフトをガンガンインストール)
- 3Dゲーム用(不要なサービスは全部止めて、メモリーを最大限使えるようにする)
- 実験用(レジストリーをいじったり、alpha/beta版のデバイスドライバーを試したり)
- 仮想マシンではなく、ネイティブマシンからの起動なのでグラフィックボードなどのすべてのハードウェアの機能を利用できる
- 同じ理由から、動作速度が速い(VHDへのアクセスを除く)
- 同じ理由から、誤ってWindowsのインスタンスを複数起動してしまう心配がない
- 差分バックアップの代わりに、差分ハードディスク(VHD作成時に親VHDを使用したexpandableタイプのVHD)を使用することで、使用ディスク容量を削減できる
VHDからのネイティブブートに関する注意点
VHDからのネイティブブートは、現時点では以下のWindows OSがサポートしている。残念ながらWindows 7のProfessional以下のエディションではサポートされていない。
- Windows 7, Enterprise/Ultimateエディション
- Windows Server 2008 R2
この解説では手持ちのUltimateではなく、以下の評価版を使用した。解説を書くために仮想マシン上でいろいろ試す必要があった訳だが、
ネイティブマシンにインストール済みのUltimateのライセンスを使用して仮想マシン上にUltimateをインストールすると、ライセンス違反になってしまうからだ。
みなさんも、Windows 7 エンドユーザーライセンスアグリーメント(EULA)などを
読んで、自己責任で試してください。
VHDからのネイティブブートには、参考URL1の"制限事項"に記載されている制限がある。
個人のデスクトップあるいはノートPCで使う上で気になる制限を以下に抜粋する。
これらの制限と上記のメリットを考慮して、VHDからのネイティブブートを使用するか否かを判断する。
- ネイティブブート可能なVHDは、ルートディレクトリに存在しなければならない。
- ネイティブ VHD ブートではシステムの休止状態はサポートされないが、スリープ モードはサポートされる。
- Bitlocker は、ネイティブ VHD ブートに使用される VHD ファイルを含むホスト ボリュームの暗号化には使用できず、VHD 内に含まれるボリューム上で使用できない。
VHDからネイティブブートできるようにWindows7をインストールする方法
以下に、VHDからネイティブブートできるようにWindows7をインストールする方法を記すが、次の環境を前提とする。パーティションなどを操作するので、事前にバックアップをとるか、仮想マシン上で試してください。
前提とする環境
ハードディスク | 空の(パーティションが一つも確保されていない)ハードディスクが1台だけ接続されている |
Windows | Windows 7 Enterprise(評価版)(製品版のEnterpriseやUltimateでも問題ないはず) |
インストール後は、次のようなドライブ構成となるように作業を進める。
インストール後のドライブ構成
C: | VHD内にインストールされたWindowsのパーティション |
D: | VHDファイルを格納するパーティション |
- WindowsインストールDVDから起動し、VHDを作成する
-
Windowsインストールディスクから起動すると、次の画面が表示されるので「次へ」をクリックする。
次の画面が表示されるたら、Shift+F10を押し、コマンドプロンプトを起動する。
コマンドプロンプトが表示されたら、次の操作を行う。
- インストールディスクのドライブレターをZにする(VHDを格納するパーティションをDドライブにしたいが、Dドライブがインストールディスクに割り当てられているため)
- VHDを格納するパーティションを作成する(全ディスク容量を割り当てる)
- VHDを格納するパーティションをNTFSでフォーマットする(お好みでクイックフォーマットやラベルを指定する)
- VHDを格納するパーティションにドライブレターDを割り当てる
- DドライブにWin7-32.vhdという名前で仮想ハードディスクを作成する(お好みでtypeをfixedにしたり、容量変更する)
- 作成したVHDを接続(アタッチ)する
- 作成したVHDがディスクとして認識されているのを確認する
具体的な操作イメージは、以下の通りだ。
Microsoft Windows [Version 6.1.7600]
X:\Sources>diskpart
Microsoft DiskPart バージョン 6.1.7600
Copyright (C) 1999-2008 Microsoft Corporation.
コンピューター: MINWINPC
DISKPART> list volume
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ---- ---------- ------- --------- --------
Volume 0 D GRMCENEVAL_ UDF CD-ROM 2254 MB 正常
DISKPART> list disk
ディスク 状態 サイズ 空き ダイナ GPT
### ミック
------------ ------------- ------- ------- --- ---
ディスク 0 オンライン 70 GB 70 GB
DISKPART> select volume 0
ボリューム 0 が選択されました。
DISKPART> assign letter=Z
DiskPart はドライブ文字またはマウント ポイントを正常に割り当てました。
DISKPART> select disk 0
ディスク 0 が選択されました。
DISKPART> create partition primary
DiskPart は指定したパーティションの作成に成功しました。
DISKPART> format fs=NTFS label="VHD Container" quick
100% 完了しました
DiskPart は、ボリュームのフォーマットを完了しました。
DISKPART> list volume
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ---- ---------- ------- --------- --------
Volume 0 Z GRMCENEVAL_ UDF CD-ROM 2254 MB 正常
* Volume 1 VHD Contain NTFS Partition 69 GB 正常
DISKPART> assign letter=D
DiskPart はドライブ文字またはマウント ポイントを正常に割り当てました。
DISKPART> create vdisk file="D:\Win7-32.vhd" type=expandable maximum=20000
100% 完了しました
DiskPart により、仮想ディスク ファイルが正常に作成されました。
DISKPART> attach vdisk
100% 完了しました
DiskPart により、仮想ディスク ファイルがアタッチされました。
DISKPART> list disk
ディスク 状態 サイズ 空き ダイナ GPT
### ミック
------------ ------------- ------- ------- --- ---
ディスク 0 オンライン 70 GB 0 B
* ディスク 1 オンライン 19 GB 19 GB
DISKPART> exit
DiskPart を終了しています...
X:\Sources>exit
- 作成したVHDをにWindowsをインストールする
-
コマンドプロンプトを閉じると下記の画面が表示されているので、「今すぐインストール」をクリックして、Windowsをインストールする。
途中、下記の画面でインストール先を選択することになるので、仮想ディスクであるディスク1を選択する。「このディスクに Windows をインストールすることはできません」と警告が出るが、警告に反して実際はインストールできるので無視する。
後は画面の指示に従ってインストールを完了させる。
評価版ではなく、正式なライセンスできちんとインストールする場合は、ここでアクティベーションを行っておく。
- インストールしたWindowsのVHDのバックアップをとる
-
早速、今インストールしたばかりのVHDのバックアップを作成する。起動中のVHDのコピーは気持ち悪いので、再びWindowsのインストールディスクから起動し、VHDのバックアップを行う。
Windowsのインストールディスクを入れた状態で、PCを起動する。次の画面が表示されたら、スペースキーなどを押してDVDからブートする。
下記の画面が表示されたら、Shift+F10を押してコマンドプロンプトを起動する。
VHDを格納しているパーティションのドライブレターをdiskpartコマンドで確認した後、コマンドプロンプトでVHDをコピーしてバックアップをとり、念のためRead Only属性を設定しておく。
実際の操作イメージは、以下の通り。
Microsoft Windows [Version 6.1.7600]
X:\sources>diskpart
Microsoft DiskPart バージョン 6.1.7600
Copyright (C) 1999-2008 Microsoft Corporation.
コンピューター: MINWINPC
DISKPART> list volume
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ---- ---------- ------- --------- --------
Volume 0 D GRMCENEVAL_ UDF CD-ROM 2254 MB 正常
Volume 1 C VHD Contain NTFS Partition 69 GB 正常
DISKPART> exit
DiskPart を終了しています...
X:\sources>c:
C:\>dir
ドライブ C のボリューム ラベルは VHD Container です
ボリューム シリアル番号は 947B-1ABE です
C:\ のディレクトリ
2010/12/12 19:17 5,525,289,472 Win7-32.vhd
1 個のファイル 5,525,289,472 バイト
0 個のディレクトリ 67,864,674,304 バイトの空き領域
C:\>copy Win7-32.vhd Win7-32-Backup.vhd
1 個のファイルをコピーしました。
C:\>attrib +r Win7-32-Backup.vhd
C:\>exit
コピーが終わったら、「Windowsのインストール」のウィンドウを閉じて、再起動する。
以上で、VHDからネイティブブート可能な状態でインストールすることができ、バックアップもとることができた。Windowsのインストールディスクを
抜いて、ハードディスクから起動すると、Dドライブに"Win7-32.vhd"と"Win7-32-Backup.vhd"を確認できるはずだ。
次の仮想ハードディスク(VHD)にインストールしたWindows 7の複数のバックアップを起動時に選択する(bcdeditコマンド)では、
これらのVHDファイルを用いて、複数のVHDからブートできるように設定を行う。
|