GPTがBIOSから認識されなくなった?けどなんか直った
EFIブートのWindowsでパーティションいじったらBIOSにGPTディスクとして認識されなくなった、けどよくわからないままに復活した話。謎い。
回復パーティションの増殖
ここ数日Windowsタブレットを買った流れでADKとかWinPEとかを調べていて、ふとメインマシンのパーティション構成を見るとなぜか回復パーティションが二つもある。
多分8から8.1にアップグレードしたときに回復パーティションのサイズが足りなくて*1、かといってCを切りなおすわけにもいかず追加されたのだろう。Win10にアップグレードするとどうなるのかねえ。
一応reagentcでWinREのパーティションを確認すると2番目の回復パーティションが使われていたので、紛らわしい前者は削除することに。diskpartで delete part overwrite
するだけ。
起動しない
翌日、PCを起動してみるとWindowsが起動しない。WinREすら出てこない、というかEFI版のブートローダがBIOSに認識されていない。
きっかけは昨日のパーティション削除だろうけど、削除しただけでそうなるか?と思いながら手探り調査。
- インストールCDではEFIブートする。でもbcdbootやreagentcでいじっても効果なし。 (今になって思うと、そもそもBCDやreagentcの構成には問題がなかった)
- EFI Shellで見るとProtective MBR が見えるだけでGPTとして認識されていない。でもWinREやLinuxでは見える。
- diskpartやgdiskで見ても特に異常はない。消した場所にパーティション作ってみたり、gdiskでProtective MBRを作りなおしてみても変化なし。
BIOSがなぜかMBRだと思いこんでるのだとすると、Hybrid MBR としてMBR側にEFIシステムパーティションを登録しておけば、ブートローダにたどり着けるのでは?と思い、gdiskでそのように構成してみる。
これでブートローダは認識されたので、一応EFI Shellで見てみると・・・何故かGPTで認識してる。なんだそりゃと思いながら Protective MBRに戻してみる。これでも問題なくGPTで認識してる。あれー?
というわけで
頭上に疑問符を浮かべながら後片付けをしています。
あと空いた300MBの使い道にちょっと悩んでいます。回復ドライブのようにWindows本体のブートローダから独立したWinREでも入れておこうかと思ったんですが、それが無理で増殖していたんだから駄目ですね。EFI Shellのバイナリでも入れておこうかな。
ちなみに下のスレが似たような状況に見えますが、これも初期化したら直ったとかいう。
[SOLVED] EFI system partition fails to boot / Newbie Corner / Arch Linux Forums
今度再発したらまずはMBRをいじってみるか・・・。
*1:8のboot.wimは205MB、8.1のboot.wimは271MB