Mac mini 2018(Bootcamp)でのeGPU環境構築

Mac mini(late 2018)を購入し、BootcampでのeGPU環境を構築したのでメモ
以下、Appleサポート外の内容のため自己責任でお願いします。
### 1.環境
- Mac mini (2018, 10GbE, i7)
- 外付けSSD(USB3.0)
- Gigabyte Aorus Gaming Box GTX 1070 (eGPU)

macOSで楽曲制作用のライブラリなどで大量に容量を使いたかったので、何としてもWindowsは外付けのストレージで使いたかった。
内蔵ストレージにWindowsを住まわせる場合は若干勝手が変わってくると思います。

### 2. 用意するもの
外付けSSDに環境を構築するに当たって3度くらいインストールをやり直した。。。
用意するものは以下。

- USBメモリーなどの外付けストレージ
- Windowsマシン
- Rufus(Windows用ソフト)
- Windows 10 April 2018 UpdateのISO

最初のトライではWindows 10 October 2018 UpdateのISOを用意して行なったが、エラーが頻発し起動したりしなかったりを繰り返しました。
現状April 2018 UpdateのISOを用いた方が安定しているように思います。

### 3. Bootcampドライバーのダウンロード
これはMac mini側からドライバーをダウンロードしてください。
Bootcampアシスタントがダウンロードするドライバーはハードウェア依存らしく、Mac mini上で行わないと、固有のハードウェアのドライバーがインストールされません。
ダウンロード方法に関しては以下などを参考にしてみてください。
[参考]https://applech2.com/archives/45687797.html

### 4. Windowsのインストール
ここではお手軽に[Rufus](https://rufus.ie/ja_JP.html)というソフトを用いてインストールしました。

Windowsマシンが無い人はWindowsインストールメディアを用いてコマンドプロンプトを起動し、そこからインストールを進めていくことも可能だと思います。
[参考] https://apple.stackexchange.com/questions/218105/is-it-possible-to-use-boot-camp-with-windows-10-from-an-external-hdd/307931#307931

Rufusを起動すると設定ウィンドウが出てきます。
1. デバイスの欄
そのままの状態だとUSBメモリ等以外の外付けストレージが出てきませんが、<code>Alt + F</code>を入力すると表示されるようになるはずです。
パーティション構成はGPT UEFIを選択してください。
2. ブートの種類の欄
選択ボタンよりWindowsのISOを選択、またブートのオプションにてWindows To Goを選択。
3. ボリュームラベル
任意のラベル名をつけてください
4. ファイルシステム
NTFSを選択。クラスタサイズはデフォルトのままで。

以上を設定したら開始して終了を待ちます。

### 5. dismコマンドにてドライバーのインストール
今回一番はまったポイントな気がする。

一度そのままの状態でWindowsを起動し、Bootcampサポートソフトウェアをインストールしようとしたところ、インストールが途中でハングして終わりませんでした。
まずいくつかのドライバーをインストールした状態で起動する必要があるようです。

こちらもWindowsマシン上での作業です。
画面左下のWindowsマークを右クリックし、PowerShellを管理者権限で実行します。
以下のコマンドを入力して実行します。

~~<code> dism  /Image:W:¥  /Add-Driver  /Driver:T:¥WindowsSupport¥^$WinPEDriver^$  /Recurse  /ForceUnsigned </code>~~

追記: Powershellのエスケープ文字がわからなかったから適当に調べて書いたけど、キャレットに特に何の意味もなかった。
バッククオート<code>`</code>が正しいみたい。
以下の書き方でも良いと思う。
<code> dism  /Image:W:¥  /Add-Driver  /Driver:'T:¥WindowsSupport¥$WinPEDriver$'  /Recurse  /ForceUnsigned </code>

/Image:W: はWindowsをインストールしたドライブのドライブレター、 /Driver:T: は先ほどBootcampドライバーをダウンロードしたUSBメモリーのドライブレターを入れてください
ドライバーのパスは任意で変更してください。Bootcampドライバーをダウンロードしたディレクトリの中にある<code>$WinPEDriver$</code>というフォルダのパスを指定してください。

### 6. Mac miniにて初期起動
<em><strong>追記</strong>: T2セキュリティチップの設定を書いておくのを忘れました。T2を搭載しているMacは初期設定では外部ドライブなどからのブートができないようになっています。
以下を参照してまずセキュリティの設定を変えてください。</em>
[参考]https://support.apple.com/ja-jp/HT208198

起動時にOption長押し、ブートセレクタからWindowsのEFIを選択。

起動してもろもろの初期設定が終わったら、Bootcampサポートソフトウェアをインストール、その後一度シャットダウンします。

### 7. eGPUの接続、NVIDIAドライバーのインストール
まず初回ドライバーインストール前のeGPU接続タイミングですが、起動する前に接続をしないでください。
またWindowsの起動が終わってから接続してもハングしてしまいます。
Windows起動時のロゴが現れたのち、ぐるぐる回る点が2時の方向になったときに接続してください。
また接続するポートはEthernetの横、一番左側のThunderbolt 3ポートを使用しました。

無事に起動出来たら、NVIDIAのサイトより任意のドライバーをダウンロード、インストールし、再起動してください。
以降はeGPUを接続したまま起動しても大丈夫だと思います。

### 8. 余談
eGPUを接続したままWindowsを起動すると、IntelのiGPUがロードされないまま起動されます。
なので、この状態でGPUの接続を解除すると画面が帰らぬ人となってしまいます。
これを防ぐためにはiGPUを同時に有効にする必要がありますが、iGPUを有効にするときにはドライバインストール前に行ったように、起動中のWindowsロゴ画面の特定タイミングでeGPUを接続します。

Mac mini(2018)のThunderbolt 3ポートは2つのTitan Ridgeコントローラーに2個ずつ接続されています。
eGPUは帯域を多く使用します。そのため、同一コントローラーに多くの帯域を消費する他の機器を接続すると動作が不安定になる可能性があるので、左から2番目のポートは空けています。
一番右のポートにはUSB-Cのハブをつなげていますが、今のところ不具合はなさそうです。

少々トリッキーな個所もありますが、比較的eGPUのしやすい筐体だと思います。
それではよいeGPUライフを。

<strong>追記</strong>
USB-CハブをeGPUの隣のポートに挿して見たところ、そのまま落ちてしまいました。
eGPUの接続が死んで何が表示されているのかわかりませんが、おそらくBSODでしょう。
そのままリブートされた後は、挿したままの状態で特に問題なく動作しているように見えます。
hot plugしなければある程度使えるのかもしれません。