ゲストとしてWindows2008 R2 x64を実行し、ホストとしてHyper-V R2x64を実行している仮想マシンがあります。
仮想マシンのvhdファイルのクローンを作成しました。次に、Windows 7 Enterprise X64 SP1(ハードウェア仮想化を使用)であるラップトップコンピューターで直接起動します。
そのために、BCDエントリを設定しました:
bcdedit /copy {current} /d "Boot_From_VHD"
エントリは{1230b942-0833-11e1-abb2-d1169c7203ba}に正常にコピーされました
bcdedit /set {1230b942-0833-11e1-abb2-d1169c7203ba} device vhd=[E:]\vhd\myvhd.vhd
bcdedit /set {1230b942-0833-11e1-abb2-d1169c7203ba} osdevice vhd=[E:]\vhd\myvhd.vhd
bcdedit /set {1230b942-0833-11e1-abb2-d1169c7203ba} detecthal on
bcdedit /enum
を実行すると、エントリが表示されます。
Windows Boot Loader
-------------------
identifier {1230b942-0833-11e1-abb2-d1169c7203ba}
device vhd=[E:]\vhd\myvhd.vhd
path \Windows\system32\winload.exe
description Boot_From_VHD
locale en-us
inherit {bootloadersettings}
osdevice vhd=[E:]\vhd\myvhd.vhd
systemroot \Windows
resumeobject {1230b940-0833-11e1-abb2-d1169c7203ba}
nx OptIn
detecthal Yes
再起動すると、ブートメニューにエントリが表示されます。新しく作成したエントリを選択すると、Windowsのロゴが数秒間表示され、次にBSODが表示されます。
このBSODは、chkdsk
を実行することを提案しているだけなので、あまり役に立ちません。 64ビットの16進数も配置されますが、エラーメッセージは表示されません。
問題を解決する方法はありますか?
PS:ハードウェアの変更の可能性を除いて、システムをそのまま維持したいと思います。 sysprep /generalize
を実行していません。すべてのユーザー、ホスト名などがリセットされるためです。
私はついに問題を解決しました。
BSODはエラーSTOP: 0x0000007B
、つまりinaccessible boot device
。
これは私を行方不明のドライバーの道に置きます。実際、Hyper-VマシンはIDEエミュレーションを使用しており、私のラップトップはeSataドライブを使用しているのに対し、イメージではIDEドライバーのみが使用可能であると思います。
この問題を解決するために、OSを実行するラップトップで、次の手順を使用して DISM/add-driverコマンド を使用します::
次のように入力して、ラップトップのすべてのドライバーをイメージに追加します。
dism /image:g: /add-driver /driver:c:\windows\inf /recurse
ダウンロードした最新のドライバーも追加します。
dism /image:g: /add-driver /driver:c:\somewhere\drivers /recurse
これには数分かかりましたが、操作後、私のvhdにはすべてのドライバーが含まれています。ターゲットのラップトップでコマンドを実行して、実際のハードウェアのドライバーがすべて追加されていることを確認することが重要だと思います。
最後に、再起動して正しいブートエントリを選択すると、ブートされます:)
新しいハードウェアが検出されたため、何度か再起動する必要がありましたが、最終的にシステムが仮想から物理に移行されました。