Boot Campで起動画面から直接Windows Recovery Environment(Windows 回復環境)を呼び出す方法

# 記事を書いた経緯

僕はBoot Campを使ってWindows 10をMacBook Proに入れています。
Windows Recovery Environmentを起動する必要がある場面に遭遇した時、Boot CampではWindows Recovery Environmentを起動時に呼び出すキーコンビネーションが存在しないため、Windows 10を一旦起動して、その後にShiftキーを押しながら電源メニューを開いて再起動を押す方法しか見つからず、他にいい方法はないのか探したところ、rEFIndを使って呼び出す方法を見つけたので、備忘録的な感じで書くことにしました。

# rEFIndのインストール
- Apple T2チップを搭載したMacをお使いの方は、まず[このページ](https://support.apple.com/ja-jp/HT208198 "Apple サポートページ: 起動セキュリティユーティリティについて")を参考に、**`安全な起動`**の項目を`セキュリティなし`に、**`外部起動`**の項目を`外部メディアからの起動を許可`に変更してください。
- macOS 10.12以降をお使いの方で、ターミナルで`csrutil status`を実行して、`enabled`と出てきた方は、先に[こちら](https://support.intego.com/hc/ja/articles/115003523252-%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E6%95%B4%E5%90%88%E6%80%A7%E4%BF%9D%E8%AD%B7-System-Integrity-Protection-SIP-%E3%81%AE%E7%84%A1%E5%8A%B9%E5%8C%96)を参考にSIPを無効化してください。

1. [ここ](https://www.rodsbooks.com/refind/getting.html "The rEFInd Boot Manager: Getting rEFInd") のページに掲載されている、`A binary zip file`のリンクからrEFIndをダウンロードします。
<img width= 800 alt="Screenshot_2020-06-06 The rEFInd Boot Manager Getting rEFInd.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224212/699fccb1-ab83-5aa3-f9f4-644baf0f3a7d.png">

2. ダウンロードしたら、解凍します。
3. 解凍したら、以下のコマンドを実行して、インストールします。
 - 本記事では、rEFIndのzipを保存した場所は`~/Downloads`、ダウンロードしたバージョンは最新版の`0.12.0`とします。

   ```bash
   hoge@hogeMac:~$ sudo mountesp && sudo rm -rf /Volumes/ESP/Boot /Volumes/ESP/BOOT
   hoge@hogeMac:~$ cd ~/Downloads
   hoge@hogeMac:~/Downloads$ unzip ./refind-bin-0.12.0.zip
   hoge@hogeMac:~/Downloads$ cd ./refind-bin-0.12.0
   hoge@hogeMac:~/Downloads/refind-bin-0.12.0$ ./refind-install --usedefault # usedefaltオプションをつけると/ESP/EFI/BOOTにインストールされるので色々と楽です。
   Not running as root; attempting to elevate privileges via sudo....
   ShimSource is none
   Installing rEFInd on macOS....
   Installing rEFInd to the partition mounted at /Volumes/ESP
   Found rEFInd installation in /Volumes/ESP/EFI/BOOT; upgrading it.
   Copied rEFInd binary files
   (中略)
   sed: 1: "/Volumes/ESP//EFI/BOOT/ ...": invalid command code E # インストールは正常にできているのでスルーして大丈夫です。
   ```
- 以上でインストールは完了です。

# rEFIndの設定
rEFIndインストール直後、EFIという名前のボリュームがマウントされていると思います。マウントされていないという方は、`sudo mountesp`を実行することでマウントができます。マウントされた状態で、`/Volumes/ESP/EFI/BOOT/refind.conf`の末尾に以下の内容を追記します。


```conf:/Volumes/ESP/EFI/BOOT/refind.conf
menuentry "macOS" {
    icon \EFI\BOOT\icons\os_mac.png
    volume "Preboot"
    loader \hogefuga-fugafuga\System\Library\CoreServices\boot.efi
    enabled
}

menuentry "Windows 10" {
    loader \EFI\Microsoft\Boot\bootmgfw.efi
    enabled
    submenuentry "Windows Recovery Environment" {
        loader \EFI\Microsoft\Boot\bootmgfw.efi
	    options "/RecoveryBCD"
    }
}

scanfor external,optical,manual,biosexternal,cd

showtools shell, gdisk, csr_rotate, bootorder, memtest, apple_recovery, windows_recovery, about, hidden_tags, reboot, shutdown
csr_values 10,77

```

- `loader \hogefuga-fugafuga\System\Library\CoreServices\boot.efi`の、`hogefuga-fugafuga`の部分は、環境によって異なります。`diskutil mount Preboot && ls /Volumes/Preboot`を実行して出てきた文字列に変えてください。
- デフォルトでは20秒経つと自動的にmacOSが起動するようになっているので、無効化したい方は`refind.conf`の先頭にある`timeout 20`を`timeout 0`にすると無効化できます。

# Windows Recovery Environmentの起動
- Macを再起動すると、rEFIndの画面が出てくるようになると思います。その状態で、矢印キーを使ってWindowsのアイコンへと移動し、移動したらtabキーを押してサブメニューを表示させます。`Windows Recovery Environment`という項目があると思うので、それを選んでエンターキーを押すとWindows Recovery Environmentが立ち上がります。

# Windows Recovery Environmentが起動する仕組み
詳しい仕組みは[こちら](https://docs.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/add-a-hardware-recovery-button-to-start-windows-re "Microsoft 公式サイト: Windows RE を起動するハードウェア recovery ボタンを追加します。") に書いていますが、EFI領域にある`bootmgfw`に、`/RecoveryBCD`というオプションをつけて実行するとWindows Recovery Environmentが立ち上がるようになっているようです。
そのため上記の設定ファイルでは、サブメニューエントリーを作成し、`options`というキーに`RecoveryBCD`を設定しています。そうすることでサブメニューエントリーのWindows Recovery Environmentが起動するようになっている、というわけです。

# セーフモードの起動


# (おまけ)「なんかrEFIndの画面ダセエ」という方へ
rEFIndには、rEFIndの画面に表示されるアイコン類や、rEFIndの画面の背景を自由に変えられる機能があります。
ネットに色々なテーマが公開されていますが、僕がおすすめするテーマは[refind-theme-regular](https://github.com/munlik/refind-theme-regular)と[refind-theme-oled](https://github.com/TCreeper/refind-theme-oled)です。
Macのデフォルトの起動画面が白い方はrefind-theme-regular、黒い方はrefind-theme-oledが良いと思います。

- refind-theme-regular

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224212/9bcaca7d-41a4-855e-0fe0-68cb7dcba81a.png)

- refind-theme-oled

<img width=854 alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224212/f4d7c06a-4e00-976e-4400-73e293493ce7.png">


なお、rEFIndのインストールで`--usedefault`オプションをつけてインストールした場合、`refind.conf`内のinclude文が認識されません。そのため、テーマを導入する際は`refind.conf`の中に各テーマの`theme.conf`の内容を直貼りする必要があります。