>>12のWindows 7 90-Day Eval VHD(Win7ENT90DAYS.vhd)で物理マシンをVHDブートして使う方法
#以下無駄に長いので興味ない人はスルーで
Windows 7 90-Day Eval VHDは仮想マシンでしか使えないような制限は一切かかっていないので
VHDブートの設定をしてやれば物理マシンでも使用可能
ただし日本語化できるとは言えWindows 7 90-Day Eval VHDは英語版なので
最初から日本語版の
>>24 =
>>8をダウンロードしてインストールする方がおすすめ
またWindows 7 90-Day Eval VHDは32bitなので64bitが使いたい人も
>>8で
一応
>>8やRC版以前のWin7のインストールDVDが手元にない状況でも
XPやVistaのPCでWindows 7 90-Day Eval VHDからVHDブートしてWin7が使える手順を確認したので紹介
Windows 7 90-Day Eval VHDで物理マシンをVHDブートする場合の一番の注意点は
Windows 7 90-Day Eval VHDのような容量可変タイプのVHDを物理マシンのVHDブートに使うと
VHDブートしている間だけVHDのサイズが最大容量まで増えるという点
Windows 7 90-Day Eval VHDのWin7ENT90DAYS.vhdは容量可変タイプで最大容量が127GBに設定されているので
Win7ENT90DAYS.vhdで物理マシンをVHDブートする場合
そのままではWin7ENT90DAYS.vhdを置くパーティションに最低127GBの空きが必要
空き容量が足りない場合
An initialization failure occurred while attempting to boot from a VHD.
The volume that hosts the VHD does not have enough free space to expand the VHD.
*** STOP: 0x00000136 (0x00000000, 0xC000007F, 0x00000000, 0x00000000)
でブートが停止する
あと物理マシンをVHDブートした場合にはVHD内部にページファイル(pagefile.sys)を作れないのでその分の空き容量も必要
(続き)
このためディスク容量に余裕のない場合Win7ENT90DAYS.vhdの最大容量を減らす対策が必要
VHDの中身を維持したまま最大容量を減らす方法はいくつか考えられるけど
VHDをマウント → VHD内部のパーティションを縮小 → VHD Resizeで最大容量を減らす
という手順が比較的簡単と思うので紹介
VHD Resize
ttp://vmtoolkit.com/files/folders/converters/entry87.aspx #VHD Resizeは動作に.NET Framework 2.0が必須なのでXPユーザーは注意
VHD Resizeをダウンロードするには右上の「Welcome to vmToolkit」→「Join」からユーザー登録する必要があるが
登録はあくまでも形式的なもので実際には存在しないようなメールアドレス(たとえば
[email protected])でも登録可能
また登録を済ませるとすぐにダウンロードできるようになる
あとダウンロードしたファイル(VhdResize-1.0.42.zip)にはインストーラ(VhdResizerSetup.msi)が含まれているが
インストールしなくてもVhdResizerSetup.msiから7-Zip等でファイルを取り出して以下のように名前を変更すれば
任意の場所に置いて使用可能
#インストールしなかった場合レジストリは不使用
_6746824A63F0429DA06F3C6D47982BDA → VhdResize.exe (49,152 bytes)
_BA3A433DCBA24CA89FDF1617E21DFE53 → vhd.dll (20,992 bytes)
なおVHD ResizeでVHDの最大容量を減らせるのはVHDの後方に未使用領域がある場合だけなので
Win7ENT90DAYS.vhdのように全体を使い切っている場合には
何らかの手段でVHDをシステムにマウントしてパーティションを操作できるソフトを使って未使用領域を作る必要がある
Win7ENT90DAYS.vhdの使用量は7GB程度(2GBは物理マシンのVHDブート時には使われないページファイル)なので
最大容量を10GB程度まで減らしても使用可能
#実際に10GBまで減らして構成の異なる複数の物理マシンをVHDブートして問題なく使えることを確認
(続き)
XPやVistaでVHDをマウントするのにはVirtual Server 2005のコンポーネントの一部のVHD Mount(vhdmount.exe)が使える
Microsoft Virtual Server 2005 R2 SP1 - Enterprise Edition - 日本語
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=bc49c7c8-4840-4e67-8dc4-1e6e218acce4&DisplayLang=ja Virtual Server全体をインストールする必要はなくセットアップの途中でVHD Mountだけを選んでインストール可能
またコマンドプロンプトで
C:\> setup.exe /c /t .
でVirtual Server 2005 Install.msiを取り出して
C:\> msiexec /i ".\Virtual Server 2005 Install.msi" /qn ADDLOCAL=VHDMount
としても%ProgramFiles%\Microsoft Virtual Server\Vhdmount\以下にvhdmount.exeと必要ファイルだけがインストールされる
VHDをマウントする時はコマンドプロンプトから
C:\> "%ProgramFiles%\Microsoft Virtual Server\Vhdmount\vhdmount" /p ファイル名
#初めてVHDをマウントする時にドライバ(Microsoft Virtual Server Storage Devices)がインストールされるので少し時間がかかる
VHDをアンマウントする時は
C:\> "%ProgramFiles%\Microsoft Virtual Server\Vhdmount\vhdmount" /u /c ファイル名
#マウント中の更新内容を保存する場合
または
C:\> "%ProgramFiles%\Microsoft Virtual Server\Vhdmount\vhdmount" /u /d ファイル名
#マウント中の更新内容を保存しない場合
なお以下のような設定をするとGUI操作でVHDがマウント可能になるので参考まで
VHDファイルをダブルクリックでマウントする
ttp://o2studio.blog81.fc2.com/blog-entry-193.html
(続き)
Win7をVHDブートするためにはWin7のbootmgrとbcdedit.exeが必要
#Vistaのbootmgrやbcdedit.exeはVHDブートには対応していないので注意
またXPの場合にはBCDを含むBootフォルダとブートセクターを書き換えるためのbootsect.exeも必要になる
bootmgrとbcdedit.exeとBootフォルダはWin7ENT90DAYS.vhdの中に含まれているが
bootsect.exeはVista以降のインストールDVD等にしか含まれていないため手元にない場合はEasyBCDから流用するのが簡単
#bootsect.exeはどのバージョンでもOK
EasyBCD
ttp://neosmart.net/dl.php?id=1 EasyBCDをインストールすると"%ProgramFiles%\NeoSmart Technologies\EasyBCD\bin\"にbootsect.exeがインストールされる
なおEasyBCDはVista世代のソフトなのでVHDブートの設定には使えない
bootmgrとBootフォルダはWin7ENT90DAYS.vhd内部の「System Reserved」パーティションから
bcdedit.exeは\Windows\System32からコピーする
#ちなみに「System Reserved」パーティションは物理マシンのブートには不要
(続き)
XPの場合
bootmgrとBootフォルダは不可視属性のシステムファイルなのでコマンドプロンプトからxcopyを使ってコピーするのが無難
ドライブ文字は環境によって変わるが
XPのntldrがあるパーティション C:
「System Reserved」パーティション E:
Win7のWindowsフォルダを含むパーティション F:
として説明するとコマンドプロンプトから
C:\> xcopy /h /k E:\bootmgr C:\
C:\> xcopy /e /h /i /k E:\Boot C:\Boot
で「System Reserved」パーティションからbootmgrとBootフォルダを属性を変更せずにコピー
C:\> copy F:\Windows\System32\bcdedit.exe C:\WINDOWS\system32\
でWin7のWindowsフォルダからbcdedit.exeをXPのWindowsフォルダにコピー
C:\> copy "%ProgramFiles%\NeoSmart Technologies\EasyBCD\bin\bootsect.exe" C:\WINDOWS\system32\
でEasyBCDのフォルダからbootsect.exeをXPのWindowsフォルダにコピー
(続き)
Vistaの場合
Win7のbootmgrを上書きしてそのままずっと使ってもライセンス的なこと以外では特に問題ないと思われるが
以下の手順では一応Vistaのbootmgrをbootmgr.bakとしてバックアップ
また必要に応じて現在のBootフォルダまたはBCDのバックアップを取っておく
XPの説明と同じように
Vistaのbootmgrがあるパーティション C:
「System Reserved」パーティション E:
Win7のWindowsフォルダを含むパーティション F:
とするとコマンドプロンプトで
C:\> xcopy /h /k C:\bootmgr C:\bootmgr.bak #Vistaのbootmgrをboot.bakとしてバックアップ
C:\> xcopy /h /k /r /y E:\bootmgr C:\bootmgr #Win7のbootmgrをVistaのbootmgrに上書きコピー
C:\> copy F:\Windows\System32\bcdedit.exe C:\Windows\System32\bcdedit7.exe
#Vistaのbcdedit.exeと区別するためにWin7のbcdedit.exeをbcdedit7.exeとしてVistaのWindowsフォルダにコピー
以上で必要な準備は整って後はVHDでブートできるようにWin7のbcdedit.exeでBCDを書き換える
以下Bootフォルダを含むパーティションをC:
上限容量を減らしたVHDファイルをWin7ENT90DAYS_resized.vhdとしてBootフォルダと同じ場所に置いたと仮定
(続き)
XPの場合
コピーしたBootフォルダ内のBCDに必要な設定はほぼ入っているので最小限の書き換えを行なう
C:\> bcdedit /set {bootmgr} device partition=C:
C:\> bcdedit /set {default} device vhd=[C:]\Win7ENT90DAYS_resized.vhd
C:\> bcdedit /set {default} osdevice vhd=[C:]\Win7ENT90DAYS_resized.vhd
#ドライブ文字は必ず[]でくくること
#またパスやファイル名に空白がある場合はvhd="[C:]\...\Win7ENT90DAYS_resized.vhd"のように""でくくる
C:\> bcdedit /create {ntldr} /d "Windows XP"
C:\> bcdedit /set {ntldr} device partition=C:
C:\> bcdedit /set {ntldr} path \ntldr
C:\> bcdedit /displayorder {ntldr} /addfirst
C:\> bcdedit /default {ntldr}
BCDの編集が終わったら最後にブートセクターをbootmgr用に書き換える
C:\> bootsect /nt60 all
以上の作業が終わってからリブートするとOS選択画面になって
"Windows 7"を選べばWin7ENT90DAYS_resized.vhdからVHDブートでWin7を使えるようになる
Win7が不要になった場合にはコマンドプロンプトから
C:\> bootsect /nt52 all
を実行してブートセクターをntldr用に書き換えればntldrで管理されているXP等だけがブートできるようになる
bootmgrやBootフォルダは無視されるので残しておいても特に実害はない
なおBootフォルダを削除する場合所有権の変更等が必要になるので注意
(続き)
Vistaの場合
BCD自体はWin7と互換性があるのでWin7のbcdedit.exe(bcdedit7.exe)を使って必要な設定を追加する
C:\> bcdedit7 /copy {current} /d "Windows 7"
C:\> bcdedit7 /set {********-****-****-****-************} device vhd=[C:]\Win7ENT90DAYS_resized.vhd
C:\> bcdedit7 /set {********-****-****-****-************} osdevice vhd=[C:]\Win7ENT90DAYS_resized.vhd
この後リブートするとOS選択画面になって
"Windows 7"を選べばWin7ENT90DAYS_resized.vhdからVHDブートでWin7を使えるようになる
Win7が不要になった場合は
C:\> bcdedit7 /delete {********-****-****-****-************}
でエントリーを削除するだけ
Vistaのbootmgrに戻す場合は
C:\> xcopy /h /k /r /y C:\bootmgr.bak C:\bootmgr
C:\> del /ah /f C:\bootmgr.bak
Win7の場合
既にWin7がインストールしてある環境でWin7ENT90DAYS.vhdを物理マシンのブートに使う必要はあまりないと思うけど
Win7の場合「ディスクの管理」(diskmgmt.msc)の「操作(A)」から「VHDの接続」ができるし
画面下側の「ディスク *」の部分を右クリックすれば「VHDの切断」もできるので必要な外部ソフトはVHD Resizeだけ
またBCDもVistaと同じように現在のWin7のエントリーをコピーしてdeviceとosdeviceを書き換えるだけでOK
必要なくなれば bcdedit /delete 〜 でVHDブートのエントリーを削除する
(続き)
以上の手順は全てソフトのインストールも含めて実際にVHDブートするまでは一度もOSをリブートさせないで作業することが可能
#慣れたOS上で全ての作業を完結できるのはそれなりに意味のあることかと
なお上限容量を減らしたVHDを使った場合に物理マシンでも仮想マシンでも
VHDブート時に「Setup is starting services」の画面あたりでエラーが出てブートできなくなることがあったけど
もう一度同じ手順で上限容量を減らしたVHDを作ると正常にブートできたりしたので原因は不明
あとブートに使うVHDの置き場所は基本的にはどこでもよくて
BCDの設定にはその時点で見えているドライブ文字とフルパスを書き込めばOK
ただし複数ドライブの環境で元のOSとは違う物理ドライブにVHDを置いていた場合
VHDブートに失敗したりそもそもOS選択画面まで行けなくなる場合があったので
ブートに使うVHDはBootフォルダがあるドライブに置くのが無難
以下Win7ENT90DAYS.vhdのメモみたいなもの
・最初はテーマがWindows 7 BasicになっていてAeroが無効になっているのでAeroを使うにはテーマの変更が必要
・UltimateとEnterpriseの初期インストール状態での違いはスタートメニューにゲームが最初から登録されているかどうか程度
・ProやEnterpriseでスタートメニューにゲームをすべて表示させるには
「コントロールパネル」→「プログラム」→「Windowsの機能の有効化または無効化」で「ゲーム」をチェックして「OK」
・物理マシンをVHDブートで使ってもほとんど制約はないがたとえばWindowsエクスペリエンスインデックスが
「記憶装置のパフォーマンスを測定できませんでした。
システムが仮想ハードディスクから起動されていると、このディスクを正確に評価できません。」
のエラーで結果を出せなかったりする
・物理マシンのブートに使う場合「System Reserved」は不要なので
初期セットアップが終わったらVHDをマウントしてパーティションを削除してしまってもOK
EPMのようなソフトを使えば削除してできた空き領域を統合して使うことも可能(「ディスクの管理」では不可)
ただし初期セットアップを行なう前に「System Reserved」を消してしまうとエラーになるようなので注意
(続き)Win7 Enterprise英語版を日本語化する指針
初期設定は以下のように選択
Country or region: Japan
Time and currency : Japanese (Japan)
Keyboard layout: Microsoft IME
Time zone: (UTC +9:00 Osaka, Sapporo, Tokyo)
日本語化する場合Windows Updateから「Japanese Language Pack - Windows 7 (KB972813)」をインストール
ただしJapanese Language Packは最初にWindows Updateのリストに出ているパッケージをひと通りインストールして
一旦リブートしてからでないとうまくインストールできないようなので注意
日本語表示に切り替えるにはJapanese Language Packインストール後に
「Control Panel」→「Clock, Language, and Region」→「Change display language」で
「Region and Language」の「Keyboards and Language」タブを表示させて
「Choose a display language:」を「English」から「日本語」に変えて「OK」を押して一旦ログオフする
あとWin7ENT90DAYS.vhdのWin7 Enterpriseは英語版のため
標準では日本語配列のキーボードが英語配列として認識されてしまうので以下と同様の手順でドライバを更新する
Windows XP に接続したキーボードが 101 英語キーとして認識される
ttp://support.microsoft.com/kb/418323/ja #「日本語 PS/2 キーボード (106/109 キー Ctrl + 英数)」は
#Win7ENT90DAYS.vhdでは「Japanese PS/2 Keyboard (106/109 Key Ctrl + Eisuu)」
または以下のレジストリを書き換えてリブートしても可
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\i8042prt\Parameters]
"LayerDriver JPN"="kbd106n.dll"
"OverrideKeyboardIdentifier"="PCAT_106KEY"
"OverrideKeyboardSubtype"=dword:00000002
(最後)Win7のdiskpartを使ってVHD内部に未使用領域を作る方法
Win7のdiskpartにはパーティションの縮小機能に加えてVHDのマウント・アンマウント機能も付いているので
Win7のインストールDVDを持っていてVHD MountやEPMのようなソフトをインストールしたくない場合
DVDブートしてコマンドプロンプトで作業可能
#VHD resizeは.NET Framework 2.0必須のためWin7のインストールDVDでのブート時は使用不可
以下「X:\Sources>」はWin7のインストールDVDからブートしてコマンドプロンプトを立ち上げた状態
#「X:」はRAMディスクでドライブ文字は常に固定
X:\Sources> diskpart
DISKPART> list volume #現在の状況を確認
DISKPART> select vdisk file=C:\Win7ENT90DAYS.vhd #VHDを選択
DISKPART> attach vdisk #VHDをマウント
DISKPART> list volume #VHDがマウントされたことを確認
DISKPART> select volume * #サイズが126GBのボリュームの数字を選択
DISKPART> list volume #選択したボリュームの先頭に*が付いたのを確認
DISKPART> shrink desired=***** #縮小したいサイズをMB単位で指定
DISKPART> list volume #サイズが減ったことを確認
DISKPART> exit #コマンドプロンプトに戻る
またX:\Windows\System32\にbcdedit.exeとbootsect.exeが含まれているので必要に応じてコピー
「System Reserved」パーティションからの必要ファイルのコピーもこの時に可能
以上