# Install ESXi 7.0 on Mac mini 2018
## 手順
### 1. ESXiインストールディスクの作成
手順はMac mini 2012 Lateの時とほぼ同じで問題ないが、10G版のNICを購入していた場合は[Atlantic](https://my.vmware.com/en/group/vmware/downloads/details?downloadGroup=DT-ESXI67-MARVELL-ATLANTIC-1020&productId=742)のドライバをバンドルする必要がある。
### 2. ESXiインストール
1. 起動時にリンゴマークが出たらAltキーを押下. EFIと表示されたディスクから起動する
2. 内臓のSSDにはインストールできないので、Thunderbolt 3経由でストレージを接続しておき、そこへインストールする
- USBでの接続はNG. ESXi 7.0からはUSBで起動かつ内臓HDD/SSDがない場合、[degraded mode](https://blogs.vmware.com/vsphere/2020/07/vsphere-7-system-storage-when-upgrading.html)で起動しlogのみならずdataも保持の対象とならない
- `dmesg | grep data`: `No persistent storage available for system locks and data. ESXi is operating with limited system storage space. Logs and system data will be lost on reboot`
- ESXi 6.x系からのアップグレードでもUSBに作成されていたDatastoreは削除再利用の対象となってしまう
- ESXi 7.0インストール後にBootメディアと同じメディアにDatastoreを作成しても、当該Datastoreは永続ボリュームとして見做されない
- `ScratchConfig.ConfiguredScratchLocation`として指定しても無意味
- Thunderbolt 3接続のNVMeは内臓HDD/SSDの代替となる。NVMe自体は[こちらの記事](https://www.virtuallyghetto.com/2019/06/thunderbolt-3-enclosures-with-single-dual-quad-m-2-nvme-ssds-for-esxi.html)で紹介されているようにIntel社製など利用可能なメーカーが限られる点に注意
- 格安のIntaiellというメーカのNVMeは認識してくれなかった. Crutialも同様らしいが、過去のnvme.v00をコピーしてくることで認識可能な様子
- [この記事](https://www.virtuallyghetto.com/2019/05/quick-tip-crucial-nvme-ssd-not-recognized-by-esxi-6-7.html)によれば
3. あとは画面の指示に従う
### 3. Datastore追加(USBデバイス利用の場合)
USBデバイスをDatastoreとして使用したい場合、当該デバイスを接続した状態で起動しても、起動してきたときにはデバイスファイルが消えている状態で立ち上がってくる。
```
WARNING: NMP: nmpUnclaimPath:1806: Physical path "vmhba32:C0:T0:L0" is the last path to NMP device "Unregistered Device". The device has been unregistered.
WARNING: ScsiPath: 9088: Remove path: vmhba32:C0:T0:L0
ScsiAdapter: 3520: Unregistering adapter vmhba32
DMA: 733: DMA Engine 'vmhba32' destroyed.
```
usbarbitraryとやらが悪さをしているようだと[この記事](https://kb.vmware.com/s/article/1036340?lang=ja)あたりで気づき当該ワードを含めて検索したところ[このブログ記事](https://chiita01.hatenablog.com/entry/2017/12/31/ESXi_6.x_USB_%E3%83%87%E3%83%BC%E3%82%BF%E3%82%B9%E3%83%88%E3%82%A2%E4%BD%9C%E6%88%90)が見つかった。以下抜粋
```
# デバイス名確認
ls /dev/disks/
# usbarbitrator停止
/etc/init.d/usbarbitrator stop
# デバイス名確認
ls /dev/disks/
# 確認差分を mpx.vmhba35:C0:T0:L0 とするとき
partedUtil mklabel /vmfs/devices/disks/mpx.vmhba35\:C0\:T0\:L0 gpt
eval expr $(partedUtil getptbl /vmfs/devices/disks/mpx.vmhba35\:C0\:T0\:L0 | tail -1 | awk '{print $1 " \\* " $2 " \\* " $3}') - 1
partedUtil setptbl /vmfs/devices/disks/mpx.vmhba35\:C0\:T0\:L0 gpt "1 2048 上のevalで算出された値 AA31E02A400F11DB9590000C2911D1B8 0"
vmkfstools -C vmfs6 -S USB_Datastore /dev/disks/mpx.vmhba34:C0:T0:L0:1
# 再起動時usbarbitratorにより当該USB_Datastoreが遮蔽されるのを防ぐ
chkconfig usbarbitrator off
# 再起動によりシステムへの変更が喪失するのを防ぐ
/sbin/auto-backup.sh
```
### 4. ESXi上でのMacの起動
iGPUの有効化にはesxi個別画面からPCIパススルーを有効化した後、VCSA画面上でDynamic DirectPath I/Oを有効化する必要がある。
https://williamlam.com/2020/06/passthrough-of-integrated-gpu-igpu-for-apple-mac-mini-2018.html
設定の永続化には`esxcli system settings kernel set -s vga -v FALSE`の実行が必要。
## Links
https://www.virtuallyghetto.com/2020/04/update-on-esxi-on-apple-mac-mini-2018-mac-pro-2019.html
https://www.blog.slow-fire.net/2020/12/28/esx-7-u1c%E3%81%ABthunderbolt-10g%E7%B7%B4%E3%82%8A%E3%81%93%E3%81%BF%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%81%AE%E4%BD%9C%E6%88%90/
https://kb.vmware.com/s/article/2004784?lang=en_us
https://chiita01.hatenablog.com/entry/2017/12/31/ESXi_6.x_USB_%E3%83%87%E3%83%BC%E3%82%BF%E3%82%B9%E3%83%88%E3%82%A2%E4%BD%9C%E6%88%90
https://blogs.vmware.com/vsphere/2020/07/vsphere-7-system-storage-when-upgrading.html