Skip to content

MS_VHDBoot

nishi_74322014 edited this page Sep 1, 2026 · 1 revision

VHD boot

概要

  • 仮想マシンが使用する仮想ディスク(VHD:Virtual Hard Disk)から
    ブートする機能。
  • Windows Server 2008 R2 と Windows 7(Ultimate/Enterprise)から
    サポートされた。

移行メモ(綴り): 元ページの「Virtual Hard Disc」は
正しくは「Virtual Hard Disk」なので修正した。

補足(用途と現在): VHD boot は
1 台の PC に複数の OS を、パーティションを切らずに共存させる
ための機能で、検証環境の作り直しが容易という利点がある
(不要になったら VHD ファイルを消すだけ)。
現在も Windows 10/11 の Enterprise / Education / Pro で利用でき、
.vhdx 形式にも対応している。
ただし BitLocker、休止状態(ハイバネーション)が使えない
という制約があるため、常用の OS には向かない。
用途が検証環境であれば、現在は
Hyper-Vの仮想マシンや WSL2 で足りることが多い。

手順(移行)

http://www.atmarkit.co.jp/ait/articles/1004/22/news101.html

Hyper-V で使用していた VHDを PC の VHD Boot へ移行する手順のメモ

VHD Boot 用の VHDファイルの下準備

  • AHCI ドライバ(Msahci.sys)を有効にする
    VHD Boot 用の VHDファイルを Hyper-V 仮想マシンに接続して
    OS を起動し、以下の通りレジストリを修正する。

    • キー:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msahci
    • 値の名前:Start
    • 値:0
  • OS をシャットダウンし、Hyper-V 仮想マシンから切断して
    VHD Boot 用の VHDファイルを取り出す。

移行メモ(衍字): 元ページの「OSAHCI ドライバ」は
「AHCI ドライバ」の誤りと解して修正した。

補足(なぜこの操作が要るか): Hyper-V 上の仮想マシンは
IDE コントローラでディスクを見ているため、AHCI ドライバが
無効(Start=3:手動)のままになっている。
この VHD を実機で直接ブートすると、実機の SATA(AHCI)を
認識できず **起動直後にブルー スクリーン(INACCESSIBLE_BOOT_DEVICE)**に
なる。Start=0(ブート時に読み込む)にしておくことで、
実機側のコントローラを最初から認識できるようにしている。
逆方向(実機 → 仮想)でも同じ理屈で問題が起きる
P2Vを参照)。

VHD Boot 用の Boot Loader オブジェクトを作成する

  • Boot Loader オブジェクト image を作成する

    bcdedit /create /d "Windows7 Devenv - VHD Boot" /application OSLOADER
    

    「エントリ {GUID} は正常に作成されました。」の GUID をコピペしておく。

  • 作成した Boot Loader オブジェクトを参照

    bcdedit /enum OSLOADER
    

移行メモ(誤字): 元ページのコマンド例にある
"Winodws7 Devenv - VHD Boot"」は表示名の誤字と解して
Windows7」に修正した(動作には影響しない)。

起動に必要なパラメタを設定する

  • ブートパーティションとシステムパーティションの指定

    bcdedit /set {GUID} device VHD=[C:]\xxx\xxx.vhd
    bcdedit /set {GUID} osdevice VHD=[C:]\xxx\xxx.vhd
    
  • ブートローダーのパス(ドライブを指定する必要はありません)

    bcdedit /set {GUID} path \Windows\system32\winload.exe
    
  • OS のシステムルートのパス(ドライブを指定する必要はありません)

    bcdedit /set {GUID} systemroot \Windows
    
  • ブートローダーのロケール

    bcdedit /set {GUID} locale ja-JP
    
  • HAL の再認識を有効にする

    bcdedit /set {GUID} detecthal yes
    
  • ブートメニューの編集(メニュー一覧の最後に追加)

    bcdedit /displayorder {GUID} /addlast
    

補足(UEFI 環境では path が違う): 上記の
\Windows\system32\winload.exeBIOS(レガシ)ブート
場合の指定である。
UEFI ブートの環境では \Windows\system32\winload.efi
指定する必要がある。
記事が書かれた 2010 年当時は BIOS ブートが一般的だったが、
現在の PC はほぼ UEFI なので、この差異に注意する。

bcdedit コマンドのサマリ

bcdedit /create /d "*vhd boot name*" /application OSLOADER
bcdedit /enum OSLOADER
bcdedit /set {GUID} device VHD=[C:]\Windows\xxx.vhd
bcdedit /set {GUID} osdevice VHD=[C:]\Windows\xxx.vhd
bcdedit /set {GUID} path \Windows\system32\winload.exe
bcdedit /set {GUID} systemroot \Windows
bcdedit /set {GUID} locale ja-JP
bcdedit /set {GUID} detecthal yes
bcdedit /displayorder {GUID} /addlast

手順(新規)

http://www.atmarkit.co.jp/ait/articles/1004/22/news101_2.html

移行メモ(未記述): 「手順(新規)」は元ページでも
参照 URL のみで、手順の本文は書かれていない。原文のまま残す。

参考

vwnet.jp

本 Wiki 内


Tags: インフラストラクチャ, Windows, 仮想化

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally