ブートローダーが消失してしまったお話

ブートローダー消えた…。

パソコンからディスクを取り外したら、その中にWindows10のブートローダーが入っていたらしく…見事起動しなくなりました!

Windowsは入っているものの、ブートローダーだけなくなりどうにもならなく…。

さらに悪いことに、メインのSSDはMBR(マスターブートレコード)でパーティションを作ってしまったため、ブートローダーが復旧してもUEFIでブートできなくなり…関連してなのか電源も切れなくなりました。

1時間半ほど溶かしてしまったので、復旧方法をメモしました。

注意事項

プライベートのデータだったためdiskを操作するコマンドをそのまま実行していますが、お仕事でのトラブルであれば、まずはディスクのフルイメージコピーの取得を真っ先にやるべきです。取得方法は本題からそれるのでここには書きません。

何はともあれコマンドプロンプトを起動する

ブートできないと何もできないので、どうにかしてコマンドプロンプトを起動させます。Windows10のインストールメディアをパソコンに刺し、そこからブート後に復旧オプションを選び、高度なオプション(だったかな?)コマンドプロンプトを選択します。

メモ帳を開き落ち着く

そのまま notepad とコマンドを打つと、メモ帳が開くのでいつものWindowsで少し安心できます。メモ帳のメニューから「開く」で「PC」をクリックするとローカルディスクC:\などが見えていれば特に問題なくブートローダーだけなかったという事がわかります。

ブートローダーをインストールするVolumeを作るために空きパーティションを確保する

ブートローダーをインストールするにはパーティションを作る必要があります。過去メインSSDは1TBすべてデータ領域(NTFS)としたため(そのNTFS内では空きがあるが)パーティションとしては全く空きがない状態です。

そこで、コマンドプロンプトから diskpart コマンドを実行します。
list disk コマンドでディスクの一覧を取得します。
select disk 0 コマンドでメインのSSDを選択します。番号の0はサイズ等から推定してください。
もう一度 list disk コマンドを実行すると、 アスタリスクでdisk 0が選択されたことがわかります。
次にlist volume コマンドを実行します。
空きパーティションを作りたいVolumeを選び、select volume 0 コマンドを実施します。
再度list volumeコマンドでvolume 0が選択された事を確認します。
ここでvolumeから空きをねん出するため、shrink desired = XX (単位はMB)を入力します。最初は100MBにしましたが恐らくGPT化する際に最低でも100以上必要なため、1GBとか一気に取得した方がよさそうです。
空きが出来たらCriate partition primary コマンドを実行します。Criate partition EFIコマンドはGPTでないと作成できませんでしたので、今回は行いません。

パーティションを確保したらブートローダーをインストールする

パーティションが作れたらdiskpartを抜ける前に、今作ったVolumeを選択し、assign letter=Q と入力し、ドライブレター「Q」を割り当てます。「Q」は重複しなければ何でもよいです。

diskpartからexitし、コマンドプロンプトに戻ったら、bcdboot C:¥Windows /l ja-jp /s Q: と入力しブートローダーをインストールします。
/lオプションはロケールです。英語のままだと起動画面が文字化けしますが2回目の起動時は自動で直るので入れ忘れても気にする必要はありません。
/sはインストール先のドライブレターを指定します。

ここまでできたら起動確認

ここまで出来たら通常通りWindowsを起動して確認します。
Windows通常起動後、コマンドプロンプトを使った作業は常に管理者権限で実施しました。

GPTに変換する

このままだとMBRのままなのでGPTに変換します。もしパーティションに100MB空きがなかったり、100MBあってもギリギリな場合は先ほどと同じく、diskpartからshrink desiredコマンドを実施し空きを作っておきます。

このあと、mbr2gpt /convert /disk:0 /allowFullOSコマンドを実施しMBRをGPTに変換しますが、はじめはうまくいきませんでした。
どうもブートパーティションにアクセス可能でないといけないらしく、通常起動後にブートパーティションにドライブレターを割り当てます。
先ほどと同じくdiskpartコマンドでもよく、GUIから割り当てても構いません。

念のため次のコマンドで再度ブートローダーをインストールしてしまいましたが恐らく不要でした。
bcdboot c:\Windows /f bios /s q:

最後に次の通りmbr2gptコマンドを実施し、再起動したら完了です!
mbr2gpt /convert /disk:0 /allowFullOS

おわりに

疲れました…。どこからブートしてるのかよく考えてからディスクを外そう!
明日の自分へ:今日はこのままパソコン落とすから、何かあったらこれを見ようね。