Windows は EFI が入っているパーティションのことを ESP: EFI System Pertition と呼んでいるようだ。diskpart で list volume したときに「システム」と書かれているボリュームが起動中のシステムの ESP になる。通常、ESP は FAT32 フォーマットになっており、トップレベルに EFI というディレクトリがある。通常は自動的にドライブレターがつくことはなく、非表示のボリュームとなっている。
変なディスクがシステムパーティションになっているときの変更方法
先日、Windows が起動しなくなったときになんやかんやしていたら、以下にように D: ドライブがシステムパーティションになってしまった。NTFS でも ESP になれるんか、という発見もありつつ、気持ちが悪いので是正したいと思った。別にそのままでも問題はないが……
以下の手順でやるのが比較的安全だと思われる。
- 本来のEFIパーティションに対し bcdboot で EFI ファイルを作る
- マザーボードのUEFI画面(BIOS画面)に入り、ブート対象に表示されている Windows Boot Manager を、インストールしたものに切り替える
- 起動したら diskpart で list volume して、意図したボリュームが「システム」になっているか確認する
- 古いほうのEFIを消す
本来のEFIパーティションに対し bcdboot で EFI ファイルを作る
bcdboot についての公式ドキュメント: https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/bcdboot
まず、本来の EFI パーティションをマウントしなければならない。diskpart でドライブレターを割当る。
> diskpart DISKPART> list volume # 同じディスクのボリュームが近くに表示されるみたいなことはないので # 勘で見つけるしかない DISKPART> select volume 6 ボリューム 6 が選択されました。 DISKPART> assign letter B DiskPart はドライブ文字またはマウント ポイントを正常に割り当てました。 DISKPART> exit > B:
そして、割当たドライブレターを /s オプションの引数として渡して bcdboot を実行する。以下のようにする
bcdboot c:\windows /l ja-jp /s b:
これで b: に割当てたパーティションはESPとして現在のシステムを起動するようになったはず。
マザーボードのUEFI(BIOS)画面で起動順を変更する
マザーボードの設定に入り、起動ディスクを変更する。新たに ESP を作っているので、少なくとも2つの Windows Boot Manager と名前がついたものを起動対象として選べるはず。なので、新しく作ったほうの Windows Boot Manager を選ぶ。
そして起動させてみる。
一応、ブートの挙動を書いておくと
- マザーボードのファームウェア(UEFI/BIOS)がディスクをスキャンしてEFIアプリケーションを探す
- これがマザーボードの設定の起動ディスクに表示される
- マザーボードは選択されたEFIアプリケーションを起動する。Windows では Windows Boot Manager
- Windows Boot Manager は BCDストアを読み、起動すべきシステムを選択する。 (通常起動や、休止からの起動、メモリテストなど)。ここでは通常起動 (Windows Boot Loader )
- Windows Boot Loader は Windows OS 本体をブートさせる
起動して確認する。
diskpart で list volume して、意図したボリュームが「システム」になっているか確認する。
この状態で古いほうの ESP は不要になったので、とりあえずリネームとかして置いておけば良い。