最近Arch Linuxのインストール中に# rm -r /boot/*
をよくやらかすので対処方法を記録しておきます。
環境
- EFIブート
- /boot にEFIパーティションがマウントされている
- /boot/grub/ にGRUBがインストールされている
- Arch Linux
- Windows 10
手順
Windows REを用意する
- 別のWindows PCで「回復ドライブ」を実行してUSBメモリにイメージを書き込む
- Windowsのインストールディスクで代用する(重い・遅い)
- なんとかして回復パーティションを起動する(望み薄)
Windows REのコマンドプロンプトでコマンドを実行する
> dir C: # ターゲットとなるWindows環境がC:にマウントされていることを確認する(されていなかったらdiskpartでassign)
> diskpart
--- DiskPart ここから ---
> list disk # ディスクのリストを確認する
> sel disk 0 # EFIパーティションがあるディスクを選択
> list part # パーティションのリストを確認する
> sel part 1 # EFIパーティションを選択
> assign letter=a # ドライブレターを割り当て(いまどきFDドライブがついたPCを使っている場合はH:あたりに割り当てる)
> exit
--- DiskPart ここまで ---
> mkdir A:\EFI\Microsoft\Boot # ブートローダーを格納するディレクトリを作る
> xcopy /s C:\Windows\Boot\EFI\*.* G:\EFI\Microsoft\Boot # ブートローダーの基本データをコピー
> cd G:\EFI\Microsoft\Boot # ブートローダーのディレクトリに移動
> bcdedit /createstore BCD
> bcdedit /store BCD /create {bootmgr} /d "Windows Boot Manager"
> bcdedit /store BCD /create /d "Windows 10" /application osloader # ここでGUID(UUID)が表示される。選択して右クリックでコピー
> bcdedit /store BCD /set {bootmgr} default {<GUIDをここに挿入>}
> bcdedit /store BCD /set {bootmgr} path \EFI\Microsoft\Boot\bootmgfw.efi
> bcdedit /store BCD /set {default} device partition=c:
> bcdedit /store BCD /set {default} osdevice partition=c:
> bcdedit /store BCD /set {default} path \Windows\System32\winload.efi
> bcdedit /store BCD /set {default} systemroot \Windows
> exit # 終了
起動確認
BIOS(UEFI?)の起動メニューを表示してWindows Boot Manager
を選択して起動を実行する。
GRUBの設定
無事起動が確認できたらLinuxに戻る。
以下を実行。
$ sudo grub-mkconfig # 30_os_proberあたりを見てWidows Boot Managerが認識されていることを確認する。
$ sudo grub-mkconfig -o /boot/grub/grub.cfg # 設定ファイルを書き込み
最終確認
再起動してLinux、Windows両方を起動できることを確認する。