Home > Archives > 2021年12月04日

2021年12月04日

Hyper-V でハマった

最近メイン PC を再構築したので,再構築前の Win10 環境を VM として動かそうと Win10 の Hyper-V を使ってみたらハマったのでメモ.

とりあえず,disk2vhd を使って古い環境の Win10 でシステムの入った SSD を謎のパーティションごと vhdx ファイルに吐き出しておいた.Linux で dd で丸ごとやっても良いかもだけど,disk2vhd なら Win10 で動くしデータのない部分はイメージに保存されないのでコンパクト.

新環境の方では VM を動かすための Hyper-V の機能を「Windows の機能の有効化または無効化」から有効化.有効化したら再起動.

再起動したら,Hyper-V で古い環境の vhdx から新しい VM 作って起動.「Hyper-V クイック作成」だと VM 作るの簡単っぽい.vhdx ファイルの複製を必ず作るっぽいけど.

そしてここで VM が起動しない罠にハマる.残念.

あーだこーだしてみた結果,結論としては「古い環境が UEFI じゃなく BIOS 起動だった」というのと「"Hyper-V クイック作成" だと第2世代の VM(UEFIブート)しか作られない」というのとが原因.古いほうが UEFI ブートだったなら多分ここらで素直に起動できたんだろう.

ということで,最終的な解決法:まず,Hyper-V マネージャーの「操作 → 新規 → 仮想マシン」から VM の作成を開始して,途中で世代の指定があるのでそこで第1世代を指定する.次に,その VM の DVDドライブに Win10 のインストールディスクを入れて起動して,リカバリ用のコマンドプロンプトの起動に進んで bootrec /fixmbr, bootrec /fixboot, bootrec /scanos の三点セットと bootrec /rebuildbcd をしてみたら無事に起動可能になった.

なお,第2世代の VM のまま bootrec /rebuildbcd をしたら「要求されたシステムデバイスが見つかりません」を食らって問題解決しなかった.あと,VM のオプション設定で世代(起動方法)は変えられないので,世代の変更は VM の構築し直しでしかできない.ついでに,diskpart コマンドで clean ってやるとディスクの構成情報が即座に消えるので,fdisk の気分でいると痛い目を見る.

ということで,「Hyper-V 使うなら,起動方法にわせて適切な世代の VM を作れ」という教訓.

Home > Archives > 2021年12月04日

Search
Feeds

Page Top