最近 Windows10 の再インストールをした際に、HDD の MBRとGPTを確認しないでトラブったのでメモ。
Win7からWin10にアップグレードして使い続けているサブのデスクトップ機の積もり積もった垢を落とそうと、思い切ってクリーンインストールしてみた。そのインストールプログラムを USBメモリの efi環境から起動したため、インストール後に SSDから起動した時そのままでは「O/Sが見つからない」エラーで起動できなかったので、SSDに対して
mbr2gpt.exe を実行して MBRフォーマットから GPTフォーマットに変換して起動した。
その Win10環境をしばらく使っていたが、ちょっとだけ以前のアプリ(インストールディスク紛失!)を使いたくなったので、空いていた HDDに今までの Windows10 のバックアップイメージを復元した。ところが一旦は起動したものの途中何故か 起動しなくなってしまった。後から考えれば、マザボの BIOS設定が(明示的に設定を直した記憶はないが)、レガシーBIOSから UEFI起動になってしまったんだが、その時はそんな事は思い及ばずに、ブートレコードが書き換わったと思い込んで修復しようとしたが何故か出来ない。
仕方ないので最初からカットアンドトライで一つずつ確かめたところ、最終的にはこの HDDも MBR > GPT 変換で起動できるようになった。ということで概ねの経過をメモしておく。(bootエラーに関する Webの情報では意外と MBRか EFIかを明示せずに説明しているページが多いが、間違って修復しようとすると私のようにハマるのでまず最初に MBR or GPT のチェックをするのが吉。)
1. 修復メディアやインストールメディアで コマンドプロンプトを立ち上げて
diskpart を実行し
list disk で起動ディスクの状態を調べる。図のように起動ディスクの行の最後が
* になっていたら GPT形式になっているので BIOSの起動設定は 「レガシーBIOS」ではなく「UEFI起動」を選択する。
2. 多くのページでは(UEFI=GPTの場合の)修復方法として以下のようなコマンドをたたけと書いてある。
>bootrec /fixmbr
>bootrec /fixboot
>bootrec /scanos
>bootrec /rebuildbcdしかし、MBRのまま上記を実行しても /rebuildbcd のところで「要求されたシステムデバイスが見つかりません」とエラーが出て進めない。
上記 1.項の手順で GPT/MBRを確かめて 起動ディスクの行に * が付いていなかったら、diskpart は exit で終了しておいて
> mbr2gpt /convert /disk:n /allowFULLOSを実行して起動ディスクを MBR > GPT に変換する。(nは起動ディスクの番号で数字、上の図の場合は"0")
因みに、インストールディスクの「修復」などではこのようなエラーは修復できないし、何の情報も表示されない。せめて 「UEFI起動になっているのに起動ディスクはGPT形式ではない」旨の表示くらいはして欲しいものだ。
最後に、ここまでの操作で回復パーティション(Windows RE)が認識されなくなっている事が多いので、以下を実行する。
reagentc /infoこれで、
Windows REの状態: Enabled
Windows REの場所:(回復パーティションの場所)
となっていればいいが Disabled となっていたら以下を実行する。
reagentc /enableそうしておいて 再び
reagentc /infoを実行し Enabled となったことを確認する。
一応参考ページのURLはこちら
http://triplescomputers.com/blog/casestudies/repair-a-corrupted-efiuefi-boot-sector-and-bcd/ だが、ここでは mbr2gpt の代わりに すべて diskpart のコマンドで GPT変換をしているので GPT変換操作の詳細が分かる。