ESXi 8.0 on Intel NUC 12

## はじめに
自宅ラボ用に購入した Intel NUC 12 に ESXi 8.0 を入れてみたのでインストール手順などを記載する
また、2 NIC 構成で色々試すことも検討しており USB NIC の追加手順も記載する

## 使用機器

- Intel NUC 12
    - [NUC12WSHi5](https://www.intel.co.jp/content/www/jp/ja/products/sku/121626/intel-nuc-12-pro-kit-nuc12wshi5/specifications.html)
    - 12th Gen Intel(R) Core(TM) [i5-1240P](https://www.intel.co.jp/content/www/jp/ja/products/sku/132221/intel-core-i51240p-processor-12m-cache-up-to-4-40-ghz/specifications.html)
        - 12core (P-core 4, E-core 8) 16threads
- Memory
    - DDR4 SO-DIMM(260pin) DDR4-3200
    - 32GB * 2 = 64GiB
- Disk
    - M.2 NVMe PCIe Gen4x4
    - 1TB
- USB NIC
    - [BUFFALO LUA4-U3-AGTE-BK](https://www.buffalo.jp/product/detail/lua4-u3-agte-bk.html)
    - USB3.0
    - 1000BASE-T
- 費用 (税込) *2022.12月時点での費用目安
    - 本体: 7.68万円
    - メモリ: 2.80万円
    - Disk: 1.25万円
    - USB NIC: 0.16万円
    - 合計: 11.89万円

また、インストールメディア作成で MacBook と USB メモリを使用する。

## 実施手順

### ESXi 8.0 Download
vmware のサイトにログインして下記リンクからダウンロードする (要アカウント登録(無料))

https://customerconnect.vmware.com/jp/evalcenter?p=free-esxi8

### インストールメディア作成
ダウンロードした ESXi のインストールメディアを USB メモリで作成する

[7.0.3f で Intel-ne1000 driver がサポートされた](https://docs.vmware.com/en/VMware-vSphere/7.0/rn/vsphere-esxi-70u3f-release-notes.html#intel-ne1000_0-9-0-1vmw-703-0-50-20036589-resolved)ので、以前まで Intel NUC で対応が必要だったオンボード NIC を使用するための[コミュニティドライバー](https://flings.vmware.com/community-networking-driver-for-esxi)の組み込み対応が不要になった

[VMware Docs USB フラッシュ ドライブのフォーマットによる ESXi インストールまたはアップグレードの起動](https://docs.vmware.com/jp/VMware-vSphere/7.0/com.vmware.esxi.install.doc/GUID-33C3E7D5-20D0-4F84-B2E3-5CD33D32EAA8.html#GUID-33C3E7D5-20D0-4F84-B2E3-5CD33D32EAA8)を参考に、本環境では Mac で実施したため `diskutil` での実施方法を記載する

2022.12.29 時点で落としたバージョン： VMware-VMvisor-Installer-8.0-20513097.x86_64.iso で実施する

- USB メモリを Mac に接続する
- USB メモリを特定する
    - コマンド： `diskutil list`
```bash:実行例(/dev/disk2の場合)
$ diskutil list
...
/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *31.0 GB    disk2
   1:             Windows_FAT_32 ⁨KIOXIA⁩                  31.0 GB    disk2s1
```
- diskutil で初期化する
    - コマンド： `diskutil eraseDisk MS-DOS "ESXI" MBR <usb memory device>`
```bash:実行例(/dev/disk2の場合)
$ diskutil eraseDisk MS-DOS "ESXI" MBR disk2
Started erase on disk2
Unmounting disk
Creating the partition map
Waiting for partitions to activate
Formatting disk2s1 as MS-DOS (FAT) with name ESXI
512 bytes per physical sector
/dev/rdisk2s1: 60462208 sectors in 1889444 FAT32 clusters (16384 bytes/cluster)
bps=512 spc=32 res=32 nft=2 mid=0xf8 spt=32 hds=255 hid=2048 drv=0x80 bsec=60491776 bspf=14762 rdcl=2 infs=1 bkbs=6
Mounting disk
Finished erase on disk2
```

- USB メモリをアンマウント
    - コマンド： `diskutil unmountDisk /dev/<usb memory device>`
```bash:実行例(/dev/disk2の場合)
$ diskutil unmountDisk /dev/disk2
Unmount of all volumes on disk2 was successful
```
- USB ドライブ全体を ISO イメージで上書きする
    - コマンド： `dd bs=10M if=VMware-VMvisor-Installer-version_number-build_number.x86_64.iso of=/dev/<usb memory device>`
```bash:実行例(/dev/disk2の場合)
$ cd ~/Downloads/
$ sudo dd bs=10M if=./VMware-VMvisor-Installer-8.0-20513097.x86_64.iso of=/dev/disk2
Password:
61+1 records in
61+1 records out
649199616 bytes transferred in 226.013744 secs (2872390 bytes/sec)
```
- USB メモリを取り出す
    - コマンド： `diskutil eject /dev/<usb memory device>`
```
$ diskutil eject /dev/disk2
Disk /dev/disk2 ejected
```


### ESXi 8.0 Install

作成したブータブル USB メモリを Intel NUC に挿入して起動する

このままインストールを開始すると**パープル画面**になり **HW feature incompatibility detected; cannot start** と表示されて止まる。

![スクリーンショット 2022-12-29 18.15.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/5b2e226b-38a5-c375-5c44-492842891b35.png)

これは Intel NUC 12 から CPU アーキテクチャが Pコア、Eコアと2種類でヘテロなアーキテクチャとなったため発生するらしい

これに対応するために ESXi インストール開始直後に、`SHIFT+O`を押して `cpuUniformityHardCheckPanic=FALSE` を入力して`Enter`を押す

![スクリーンショット 2022-12-31 20.36.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/b41f84b8-7971-b8aa-5bd2-ad3c907716e9.png)


下記画面が出てインストールを開始できる (`Enter`)

![スクリーンショット 2022-12-29 16.41.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/c18cc01e-4466-08cc-a373-5bea23c93407.png)

EULA が出るので `F11` で承諾する

![スクリーンショット 2022-12-29 16.42.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/f52b1c6d-977d-2dfa-9d0c-fa4000b9b82f.png)

Install 先のディスクを選択して`Enter`を押す

![スクリーンショット 2022-12-29 16.44.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/a02fed5a-42c8-f3db-cef7-0c3b76c3a427.png)

キーボードレイアウトを選択する

![スクリーンショット 2022-12-29 16.45.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/888d9978-5a37-4ec0-ff17-e0addcf0ce1a.png)

root ユーザのパスワードを設定する

![スクリーンショット 2022-12-29 16.46.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/17397a45-3cfc-463d-51d8-9b61f583bdf2.png)

ディスクが再パーティションされることを同意する

![スクリーンショット 2022-12-30 23.52.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/06dbfd98-1586-c049-12e2-c3404882a802.png)


再起動スタート画面になるので、`Enter`を押して再起動する
![スクリーンショット 2022-12-29 16.50.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/c5b0ca1b-fed0-3313-1b95-1447cc23f486.png)

ESXi が起動したら、`SHIFT+O`を押して `cpuUniformityHardCheckPanic=FALSE` を入力して`Enter`を押す

![スクリーンショット 2022-12-29 16.54.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/86df2c48-d7fc-92e3-fd79-0af991ec1835.png)

起動すると画面に`To manage this host, got to:` とあるので、出力された IP アドレスにブラウザでアクセスする (DHCP のネットワークではない場合は`F2`を押して IP アドレスを設定する)

ブラウザでアクセスすると下記のような画面となるので、`root` `<rootパスワード>`を入力してログインする

![スクリーンショット 2022-12-29 17.00.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/2f738773-c581-6789-ad71-cfca7e0bc6c7.png)

ログインすると下記のような画面となる

![スクリーンショット 2022-12-29 17.02.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/95540950-74ef-47fc-bed6-bd122a4cce4c.png)

### ライセンス認証

`ホスト` > `管理` > `ライセンス` で無償評価版のライセンスを割り当てるため、`ライセンスの割り当て`をクリックする
![スクリーンショット 2022-12-29 17.05.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/88be9b60-b65d-32ee-e871-b0d82260edf4.png)

ライセンスを入力して`ライセンスの確認`をクリックして有効が確認されたら`ライセンスの割り当て`をクリックする

![スクリーンショット 2022-12-29 17.05.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/87785950-a68d-c19f-7815-b9685a21d05d.png)

認証後は有効期限が Never (実行しない) となる

![スクリーンショット 2022-12-29 17.10.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/53791bfc-3ad3-82e5-ce57-83b7114d5928.png)

### カーネルオプション永続化
このままだと、起動のたびに`SHIFT+O`で設定を入れて起動しないといけないので、カーネルオプションを esxcli で設定をする。
まずは esxcli で設定するために SSH を有効化する

![スクリーンショット 2022-12-29 17.20.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/6f52870e-2070-bb63-7153-abed9f1ca38c.png)

SSH でログインして `esxcli system settings kernel set -s cpuUniformityHardCheckPanic -v FALSE`を設定してリブートをしてみて、`SHIFT+O`なしでも問題なく起動できるようになることを確認する

```
[root@localhost:~] esxcli system settings kernel set -s cpuUniformityHardCheckPanic -v FALSE
[root@localhost:~] esxcli system settings kernel list | grep cpuUni
cpuUniformityHardCheckPanic              Bool    FALSE               FALSE                              TRUE                Panic if CPU uniformity hard check fails
[root@localhost:~] reboot
```

### USB NIC 追加

[USB Network Native Driver for ESXi](https://flings.vmware.com/usb-network-native-driver-for-esxi) で対応する ESXi バージョンのものをダウンロードする
※本環境では「ESXi800-VMKUSB-NIC-FLING-61054763-component-20826251.zip」を使用する

![スクリーンショット 2022-12-29 23.51.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/4ad6cf2b-6bcd-269b-c7cd-0be5843acb2c.png)

ダウンロードしたファイルを ESXi へアップロードする

```bash
% sftp root@192.168.x.x
(root@192.168.x.x) Password: 
Connected to 192.168.x.x.
sftp> cd /tmp/  
sftp> put ESXi800-VMKUSB-NIC-FLING-61054763-component-20826251.zip
Uploading ESXi800-VMKUSB-NIC-FLING-61054763-component-20826251.zip to /tmp/ESXi800-VMKUSB-NIC-FLING-61054763-component-20826251.zip
ESXi800-VMKUSB-NIC-FLING-61054763-component-20826251.zip                                                                                               100%  347KB   1.2MB/s   00:00    
sftp> exit
```

`esxcli software vib install -d <ダウンロードしたファイル>` でインストールして、`reboot`する

```sh
[root@localhost:~] esxcli software vib install -d /tmp/ESXi800-VMKUSB-NIC-FLING-61054763-component-20826251.zip
Installation Result
   Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective.
   Reboot Required: true
   VIBs Installed: VMW_bootbank_vmkusb-nic-fling_1.11-1vmw.800.1.20.61054763
   VIBs Removed: 
   VIBs Skipped: 
[root@localhost:~] reboot
```

ホスト > 管理 > パッケージ で `vmkusb-nic-fling` が追加されたことを確認できる

![スクリーンショット 2022-12-30 1.05.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/237005d5-2b3c-f5df-56d2-dd5452d41529.png)


ネットワーク > 物理 NIC に `vusb0` が追加されたことが確認できる

![スクリーンショット 2022-12-30 0.36.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/6a4a96d7-edbe-326e-260c-e641c38f6f3a.png)

#### 注記1. Upgrade 時に削除が必要な場合がある
過去アップグレードを実施した際に [USB NIC ドライバがアップグレードの邪魔になった](https://qiita.com/suzuyui/items/684a95e0c9d5db647d2e#usb-nic-driver-dependencyerror)時があったので、
そのような場合は、`esxcli software vib remove -n vmkusb-nic-fling` で削除する

#### 注記2.  [InstallationError] 'Could not find a trusted signer: certificate is not yet valid' が出た場合
USB NIC インストール時に`'Could not find a trusted signer: certificate is not yet valid'`が出た場合は、
`--no-sig-check` オプションをつけることで避けることは可能

## まとめ
実施手順を記載した
P-Core, E-Core にヘテロなコア構成になった CPU だと ESXi がうまく対応してくれてなく、同一なコアとして認識させる形になっている
また、Hyper-Threding が無効となっていて論理コアが 16 ではなく 12 コアで認識されていたり、微妙な感じになった
ESXi 側の対応を期待したい…

![スクリーンショット 2022-12-30 23.32.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/94e22e69-2c04-e109-1af6-83732eb9b29a.png)


## 参照

[VMware Docs USB フラッシュ ドライブのフォーマットによる ESXi インストールまたはアップグレードの起動](https://docs.vmware.com/jp/VMware-vSphere/7.0/com.vmware.esxi.install.doc/GUID-33C3E7D5-20D0-4F84-B2E3-5CD33D32EAA8.html#GUID-33C3E7D5-20D0-4F84-B2E3-5CD33D32EAA8)

https://williamlam.com/2022/09/esxi-on-intel-nuc-12-pro-wall-street-canyon.html

https://www.virten.net/2022/11/esxi-7-and-8-installation-fails-with-fatal-cpu-mismatch-on-feature/