検証用に大量の物理・仮想マシンを並べたりする時によく使われる、クローニングという手法。
仮想マシンだと特に簡単にコピー出来るので、さくっと出来て嬉しいことが多い反面、気をつけなくてはいけないこともあるワケで。
そんな中には、従来のBIOS環境だと気にする必要が無かった、UEFI環境ならではのネタもあるワケです。
そんな中で今回ネタにするのは、割とありがちな「ディスクのシリアルID書き換えたら起動しなくなった」という話。
自分も初めてやらかした時は「あちゃ~」という感じだったので。
◇
まず、前提。
状況:
UEFIで起動する環境でブートドライブのシリアル番号を変更すると起動しなくなる。
解決策:
Step1:bcdbootで修理する。
Step2:それで駄目なら、bootrecで修理する。
当方が色々やらかした範囲では、ブートドライブのシリアル変更のみならbcdbootの自動修復で100%回復している。
何も考えずに直してくれるのでこれが一番ラク。
但し万が一これがコケた時に備えて、後で本来正当なbootrecのやり方もメモっておく。
◇
以下、まずはbcdbootでやる方法。
1:
起動がコケてるマシンをWindows Install DVD(またはUSBメモリ等)で起動し、コマンドプロンプトを開く。
システムによってはInstall DVDよりも起動優先度が高いデバイスが存在する為、必要ならばBIOS(UEFI)画面に入って起動優先度を変更する。
DVDから起動したらインストールオプションから左下「コンピューターを修復する」を選択し、「トラブルシューティング」→「詳細オプション」→「コマンドプロンプト」。
2:
diskpartでWindows SystemのあるボリュームにC:を割り当てる。
select disk 0
→ list volume
→ 一覧からWindows本体が入っているパーティションの番号をチェックし、select volume 番号
(例えばselect volume 3)
大抵の場合Infoに「ブート」と入っている
→ assign letter=C:
→ exit
3:
bcdbootでC:から起動するエントリを作成する。
bcdboot C:¥Windows /l ja-JP
4:
DVDを抜いてシステムを再起動する。
以上。
実はこのうち3.のC:を割り当てる作業をせず、4.でオプション無のままでbcdbootコマンドを打つだけでも、結構な確率で起動する状態に戻せる。
とはいえ時々コケることもあるので、ドライブレターを振っておいた方が幸せな模様。
◇
それでは次に、bootrecコマンドを使う場合。
以下の例は修復フルセット。
1:
起動がコケてるマシンをWindows Install DVD(またはUSBメモリ等)で起動し、コマンドプロンプトを開く。
2:
diskpartでWindows SystemのあるボリュームにC:を割り当てる。
3:
diskpartでBoot PartitionにF:を割り当てる。
select disk 0
→ list volume
→ 一覧からBootパーティションの番号をチェックし、select volume 番号
(例えばselect volume 0)
大抵の場合Labelは「システムで予約済み」、Infoに「システム」と入っている
→ assign letter=F:
→ exit
4:
Bootフォルダに入ってbootrecコマンドで再構築する
F:
→ 環境依存で以下のうちどれか、dir等でBootフォルダを探す
cd ¥EFI¥Microsoft¥Boot
cd ¥ESD¥Windows¥EFI¥Microsoft¥Boot
cd ¥Boot
→ bootrec /fixboot
→ bootrec /fixmbr
→ bootrec /rebuildbcd
5:
DVDを抜いてシステムを再起動する。
◇
以上、こんな感じでほぼ何とかなる筈。
ちなみにマルチブート構成ではrebuildbcdで複数のWindowsが認識され自動でエントリに追加される筈だが、時々取りこぼしも出る模様。
所詮自動修復なので、その辺りは手修正しましょうということで。
あと、シリアル書換でなくトラブル対応でも良く出てくるbootrec /fixbootだが、そういう場合はWindows Systemの入っているボリューム(上の例だとC:)がActiveにマークされていることを確認することをお忘れ無く。Systemの入っているボリュームがActiveになっていないとこのコマンドはエラーになってくれるので。