Mac mini 2018の外付けSSDにLinuxとWindowsをインストールする手順

**Intel Mac一台しか持っていないけどLinuxもWindowsも使いたい、そしてできればMac miniおよびmacOS本体に変な改造を入れたくない人向け（かな？）**

# 必要となるもの

1. Mac mini 2018（論理上T2 chip搭載の他のIntel Macでもいけそうけど試していないのでなんとも言えない）
2. 外付けSSD
3. USBスティック
4. 周辺機器類：USBで動くキーボード＆マウス、有線LANあるいはUSB WiFiアダプター（Linuxで動くやつに限る）
5. ソフトウェア類：VirtualBox（物理ディスクにアクセスする機能があれば他のVMソフトでも可）、LinuxとWindows 10のISO、rEFIndのISO、ISOをUSBに焼くソフト

# 大まかの流れ

1. 外付けSSDへ直接アクセスするVM環境を構築
1. VMの中でWindowsをインスタール
1. VMの中でLinuxをインストール
1. rEFIndのUSB driveを作成
1. Mac miniでの起動検証
1. WindowsとLinuxの後処理

# 外付けSSDへ直接アクセスするVM環境を構築

ここのサイト[Using a Physical Hard Drive with a VirtualBox VM](https://www.serverwatch.com/guides/using-a-physical-hard-drive-with-a-virtualbox-vm/)を参考にして、ディスクに直接アクセスするバーチャルディスクを作成する

個人の経験では：

1. WindowsにVBoxインストールしていてもVBoxManageを実行しようとするとcommand not found的なのが出てきて、うまくいかなかった、~~原因はわからん~~原因はPATH通っていないため、`C:\Program Files\Oracle\VirtualBox\VBoxManage.exe`でpathを辿っていく必要がある（それでもいざSSDを読み書きしようとするとまだエラーが出てWindowsでの作業を諦めたが。。。）
1. macOSでの作成はターゲットなるディスクをあらかじめunmountする必要があり、作成コマンドにはsuduが要る、なお作成されるVMDKの所有者はrootなのでVBoxをrootで起動しないとVMにそのVMDKを追加できない
1. Linuxでの作成＆追加は特に問題ない
1. VBoxでの新規VM作成の際、OS TypeをMac OS X、OS VersionをmacOS 10.13 High Sierra(64-bit)に設定すると、VBoxが勝手にMac mini 2018(Macmini8,1)の環境をシミュレーションしてくれるので、なんか（体感では）いろいろやりやすくなりそう、きっとそうに違いない

# VMの中でWindowsをインスタール

んまぁ、特に言うことはないな

しいといえばパーティション作成の時にLinux用の容量と（もし必要があれば）データ保存用の容量をあらかじめ空けとくこと

インストールが完了、Windowsのデスクトップが見えたら即シャットダウン、Windows Updateやドライバーインストールなどさせるな

# VMの中でLinuxをインストール

Windowsインストールの時と同じく、データ保存用のパーティションを作る予定があったら、Linuxインストールする前にあらかじめそのパーティションを作っとく、互換性を考えるとexFAT形式がいい

私の場合は1000GBのSSD使って、Windowsに333GB、Linuxに333GB、exFATのパーティション334GBといった感じ

私はLinux Mintとインストールするので、Debian&Ubuntu系のinstallerにお世話になっている。UbuntuのinstallerはWindowsを検出すると「Windowsと共存する」的な選択肢が出てくる、私はこれを選んだ、なぜかというと便利だから（特に考えていない）

もちろん自分でパーティションを設定するのもOK

Windows同様、インストールが完了したら即シャットダウン、System Updateなどの諸設定はまだしなくていい

PS：Macのハードウェアはやや特殊で、Appleからの制限もあるので、できればkernelの新しいdistroを使うほうが各種ハードが正常に動く確率が上がる。この記事が書かれた時点（2022年2月22日）ではLinux MintのUpdate Managerにて入手できる最新kernelは5.13（Ubuntu 21.10と同じ）で、今思えばkernel 5.15搭載のUbuntu 22.04 Betaにしたほうがよかったのでは？と後知恵を愚痴る私がいる

# rEFIndのUSB driveを作成

このサイト[The rEFInd Boot Manager: Getting rEFInd](https://www.rodsbooks.com/refind/getting.html)から「A USB flash drive image file」をダウンロード、解凍してそのISOファイルをUSBスティックに焼く

# Mac miniでの起動検証

外付けSSDとUSBスティックをMac miniに挿入、Mac miniの画面出力をThunderbolt 3ではなく内蔵HDMIにし、Mac miniの電源を入れるとOptionキーを押し続ける、MacのBoot Managerが出たらその起動項目を確認、私の場合はMacintosh HD、EFI Boot、EFI Bootの3つがある、Macintosh HDはmacOSの起動、残った2つのEFI BootはUSBスティック内のrEFIndと外付けSSD内のGrub2
![Mac Boot Managerの画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502913/9e2f2c27-4ac3-6720-d35e-277824906302.png)
もしLinuxインストールの時「Windowsと共存」じゃなくて自分でパーティションを設定してWindows Boot ManagerがGrub2に内包されない場合はもう1つEFI Bootの項目が増えるかもしれない

各種EFI Bootを踏むとどうなるかを説明：

1. MacのBoot ManagerではGrub2を起動できないため、Grub2を踏んだ場合、画面真っ黒→ファンが一瞬フル回転→再起動あるいはシャットダウン、という結末
1. rEFIndを踏んだ場合、rEFIndの画面が表示される、そこでさらに起動したいOSを選ぶ感じ
1. Windows Boot Managerを踏んだ場合、青いWindowsロゴが表示され、Windows起動へ

これでどのEFI Bootがどこへ向かっているかは調べられるはず

そして肝心のrEFIndの画面、私の場合はこのようになっている
![rEFIndの画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502913/320e06eb-055d-3b3d-b262-441d904fb466.png)
上の行の大きいアイコン、左から：

1. macOS起動
1. Windows 10起動（青いロゴ表示時になんかエラー出たけど特に問題なくWindowsに入ったので気にしない）
1. Grub2経由でのLinux起動（ただしGrub2はやはり画面表示が出ないので、真っ黒な画面＆何も見えない状態でGrub2を操作して起動へ進むか、20sくらい黙ってGrub2がtimeoutするまで待つか）
1. んー、これなんだっけ（忘れた）。。。まぁフォーカスをそこに移ると下に英語説明があるので読めばわかると思うけど、薄い記憶によると別に怪しいものじゃないはず
1. Grub2経由せずLinux Mintへ起動←3番目の20s待つよりこれのほうが早い
1. Windows 10 **起動できない**
1. Windows 10 **起動できない**

下の行の小さいアイコンについては説明文を読んでくれ、右側のシャットダウンと再起動以外はほぼ使わないだろう

# WindowsとLinuxの後処理

## Windows 10

rEFInd経由でWindows 10へ起動、初めての起動では画面出力が内蔵HDMIしかできないので注意

起動したらWindows Updateを動かしてWindows本体を最新にする、これでThunderbolt 3での画面出力やWiFi接続、内蔵スピーカーが復活するはず、途中再起動する場合もあるけど、大体再起動しても自動的にWindows 10に入るはずなので、毎回Optionキー押してrEFIndに入ってWindowsを選ぶ必要ないと思うけど、もしmacOSに入ったらrEFIndに起動しよう

そしてWindows Updateにはmajor update以外に、option updateというのがある、その中にオプション的なドライバーがあるのでそれ全部インストールする、これで内蔵Bluetoothが使えるようになる、他の効果や影響はまだ感じ取れていない（Thunderbolt 3が完全体になるのかな？→eGPU繋いて試してみたい）

Windows 10での設定はこれで大体終わる、Windows PCとして普通に使えるようになった

PS：AppleがBootCampのために用意した、WindowsでMacを動かす必要なドライバー全部入りツール「Windows support software」があるけど、私が以前試した結果、Mac miniにdGPUないのになぜかAMDのGPUドライバーも入れらるという怪しい挙動なので、今回は使わない、全部Windows Updateに任せた。MacBook ProやiMacなどAMD GPU搭載のMacはWindows Updateやる前にWindows support softwareを一回実行したほうがいいかも

## Linux

とりあえずシステムとソフトウェアとkernelを最新にする、今回私が使っているのはLinux Mint 20.3なので、基本Ubuntu 20.04.3と同じ（デフォルトのkernel 5.4でもThunderbolt 3での画面出力ができるのは素直に驚き）、配布している最新kernelは5.13。それに更新してもWiFiと内蔵スピーカーが使えない、Bluetoothは使えた。

動かないハードに関してはこのサイト[Home - t2linux wiki](https://wiki.t2linux.org/)にいろいろ方法を記載されている。私はGuides→DKMSのところを試して、内蔵スピーカーとなんかThunderbolt系Ethernetのヤツが復活した（でもスピーカーの音質はmacOSよりだいぶ悪い、WindowsでもmacOSよりは劣化するけどこれよりはマシな気がする）。他にもWiFiとかいろいろあるけど、めんどくさくてやっていない、そしてこのサイトに内容はT2 Chip搭載の全てのMacを対象にしている、ユーザー量を考えるとかなりMacBook、特にMacBook Proのほうに偏る（まぁそれもそうだよね）、ざっと見てみるとMac miniには関係ない内容はあっちこっちに結構ある（バックライトとかTouch Barとか、内蔵スピーカーに関してもたぶんMacBookやiMacなどのステレオスピーカー前提で調整したものでモノラルのMac miniに最適化されていないだよう）

私はUSB WiFiアダプターやBluetoothヘッドホン持っているし、ディスプレイ経由でアナログ音声出力もできるみたいだし、まぁ変ないじりをやらなくてもいいかなって思っている

でもやはり最新kernelは追随していくわ。t2linuxのサイトによると彼らの成果は5.15か5.16にmergeされるみたいで、新kernelを入れればこういうめんどくさいチューニング作業はしなくて済む→こうなれたらいいなぁ