[メモ] ラズパイ4Bへ vmware ESXi on Arm Flingのインストール

# 概要

- ラズパイ4Bで、vmware ESXi on Arm Flingを使用する。
- オンボードのWifiは使えないので、有線LANを使う。
- ラズパイのUEFI関連のファイルも、SATA-USB変換＋SSD (またはHDD)に入れるので、インストール・設定後は、起動用microSDは不要。
- インストーラー起動時にオプション(`autoPartitionOSDataSize=8192`)を設定しないと、使用できる領域が減る。


# 参考
- [ESXi Arm Edition](https://flings.vmware.com/esxi-arm-edition) - October 06, 2020 v1.0
- https://www.virtuallyghetto.com/category/esxi-arm


# 環境
- Raspbery Pi 4B (4GB/8GB) - 4GB以上でないと、はじかれる
    - SATA-USB3.0変換ケーブル
    - SSD(240GB) / HDD(1TB) --- 以下、SSDと書いてあるが、HDDもOK。
    - 有線LAN接続 (オンボードのWifiは使えない)
    - (冷却用ファン) 
- インストール時に必要なもの
    - microSD(1) (RaspberryPi OS - ラズパイのEEPROMの更新と、USBBoot設定に使用)
    - microSD(2) (UEFI boot用)
    - USB Flash (VMWare installer - VMware-VMvisor-Installer-7.0.0-16966451.aarch64.isoを焼く)
    - ディスプレイ接続
    - キーボード
- Windows 10で、microSD / USBフラッシュの準備をした。


# 手順

## Windowsで作業
### ファイルのダウンロード
- ラズパイのファームウェア<br>https://github.com/raspberrypi/firmware/archive/1.20200902.zip
- ラズパイ4の UEFI <br>https://github.com/pftf/RPi4/releases/download/v1.20/RPi4_UEFI_Firmware_v1.20.zip
- RaspberryPi OS <br>https://www.raspberrypi.org/downloads/ から. 必要あれば。
- VMware-VMvisor-Installer-7.0.0-16966451.aarch64.iso <br>https://my.vmware.com/group/vmware/downloads/get-download?downloadGroup=ESXI-ARM 
<br><font color='red'>vmwareへの登録が必要</font>

<!--
https://download3.vmware.com/software/vmw-tools/esxi-on-arm/ESXi-Arm-Fling-Doc.pdf
https://download3.vmware.com/software/vmw-tools/esxi-on-arm/Fling-on-Raspberry-Pi.pdf
-->




### microUSB / USBフラッシュの準備

#### VMWare ESXi イントーラ
[Rufus](https://rufus.ie/)で作成した。
1. USBフラッシュメモリをPCに挿す
2. Rufus起動
3. Device で、書き込み先を選択
4. [SELECT]を押して、`VMware-VMvisor-Installer-7.0.0-16966451.aarch64.iso`を選択<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75594/98af1922-a906-4c17-a1d9-25465df17e52.png)
5. [START]をおして書き込み開始<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75594/f0f25874-0e97-f40f-2b96-b11c7f0875e3.png)
6. データが全部消えるよ、って警告が出るので、問題なければ、[OK]

<!-- ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75594/13dbfaf3-a2be-6b4b-4269-19e07afdd5df.png) -->



#### microSD - Raspbian OS 
- いつも通り。Raspberry Pi Imager などで

#### microSD - UEFI boot 
1. FAT32 でフォーマット ([SD formatter](https://www.sdcard.org/jp/downloads/formatter/) は、32GBまでのカードなら、FAT32でフォーマットしてくれるが、それ以上だと、exFATだったような..)
2. ラズパイのファームウェア `firmware-1.20200902.zip` を解凍
3. "boot"フォルダの中身をmicroSDのルートにコピー
4. kernel*.img (4ファイル)を削除
5. ラズパイ4の UEFI `RPi4_UEFI_Firmware_v1.20.zip` を解凍して、microSDにコピー(上書きする)
6. <font color='red'>`config.txt` の最後の行に以下を追加</font>
    
    ```
    gpu_mem=16
    ```

## ラズパイにて
### EEPROMの更新とUSB Boot設定
1. Raspberry Pi OS の microSDで、起動
2. パッケージ更新・再起動<br>`sudo apt update && sudo apt upgrade -y && sudo reboot`
3. 再起動後、`sudo raspi-config`
4. `3 Boot Options` > `B5 Boot ROM Vesion` > `E1 Latest` > `Reset boot ROM to defaults?` で `<Yes>`
5. 一度終了して、再起動. (次回起動時 EEPROMがフラッシュされる。)
6. `sudo rpi-eeprom-update`で、バージョン確認

    ```shell-session:こんな感じ
    pi@raspberrypi:~ $ sudo rpi-eeprom-update 
    BCM2711 detected
    VL805 firmware in bootloader EEPROM
    BOOTLOADER: up-to-date
    CURRENT: Thu 03 Sep 2020 12:11:43 PM UTC (1599135103)
     LATEST: Thu 03 Sep 2020 12:11:43 PM UTC (1599135103)
     FW DIR: /lib/firmware/raspberrypi/bootloader/stable
    VL805: up-to-date
    CURRENT: 000138a1
     LATEST: 000138a1
    pi@raspberrypi:~ $ 
    ```
7. 再度、`sudo raspi-config`
8. `3 Boot Options` > `B4 Boot Order` > `B1 USB Boot`<br>`USB device is default boot device`とでればOK.
9. 一度再起動する。
9. `sudo poweroff` でシャットダウン。

### vmware ESXiインストールの準備

以下をラズパイに挿す。

- UEFIのmicroSD (起動用)
- USBフラッシュ(VMWareインストーラ)
- SATA-USB3ケーブル+SSD(インストール先)
- キーボード
- HDMIディスプレイ
- 有線LAN

### UEFI設定 ("3GiB memory limit" を `Disabled` にする)

1. 電源を入れて、UEFI microSDから起動する際、ESCをぽちぽち押して、UEFIの設定画面へ
3. `Device Manager` > `Raspberry Pi Configuration` > `Advanced Configuration` > `Limit RAM to 3 GB` を `<Disabled>` にする
4. [F10] 'Y' を押して、設定保存
5. [ESC]を3回押して、`Reset`を選択して、[Enter]


### ESXi-Armインストーラ起動
↑から続き
1. ESCをぽちぽち押して、UEFIの設定画面へ
2. `Boot Manager` > (VMWare Installer USB)を↑↓で選んで、[Enter]
3. 起動し始めたら、<font color='red'>すぐに SHIFT+o を押して、起動オプション設定表示</font>
4. <font color='red'>`autoPartitionOSDataSize=8192` を追記して</font>、[Enter]<br> `> runweasel cdromBoot autoPartitionOSDataSize=8192`<br>これをやらないと、ESXiシステムのパーティションが120GBくらいとられる

### ESXi-Armインストール

1. Welcome to the VMware ESXi on Arm Fling Installation
<br>=> [Enter]
2. End User License Agreement (EULA)
<br>=> [F11] 
3. Select a Disk to Install or Upgrade
<br>=> ↑↓でインストール先のディスクを選んで、[Enter]
4. Please select a keyboard layout
<br>=> US Default (またはJapanese) で [Enter]
5. Enter a root password
<br>↑↓で移動。入力後、[Enter]
<br>Password must be at least 7 characters long. => 7文字以上
<br>Password does not have enough character types. =>数字・記号とか入れる?
6. Confirm Install
<br>[F11] を押してインストール開始
7. Installation Complete
<br>[Enter] を押して再起動。 (再起動後 ESCをおして、UEFI設定に入る)


### とりあえず、ESXi を起動させる
↑から続き
1. ESCをぽちぽち押して、UEFIの設定画面へ
2. USBフラッシュ(VMwareESXiインストーラ)を抜く
3. `Boot Manager` >  (VMwareをインストールしたディスク)を↑↓で選んで、[Enter]
4. 何もせず、起動完了するまで待つ。

### (お好みで)固定IPに設定する
デフォルトは、DHCPなので、

1. [F2]を押して、ログイン
2. `Configure Management Network` > `IPv4 Configuration`
3. [↑][↓]で、"Set static IPv4 address and network configuration:" を選んで [Space]キー
4. ↓をうめたら、[Enter]キー

    ```
    IPv4 Address
    Subnet Mask
    Default Gateway
    ```
5. [ESC]をおして、Apply changes and restart management network? で、[Y] を押す
6. もう一度、[ESC]をおして、Logout


### Webブラウザから、アクセス
1. アドレスバーに IP アドレスを入れる。[詳細設定]をクリックして、<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75594/be1299cf-f0ac-703c-0899-f9795fdaf5f2.png)
2. xxx.xxx.xxx.xxxにアクセスする（安全ではありません）をクリック<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75594/ab50265a-a9c0-a170-441e-51018dffb73e.png)
3. ESXiのログイン画面が表示。ユーザ名:`root`で、パスワードを入力して、[ログイン] ボタンクリック<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75594/c21ff669-9f1e-4bf6-750e-e59343c84294.png)
4. こんな感じ<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75594/b2ae2b79-0d1a-a4d3-1deb-87c6fec65464.png)
5. とりあえず、シャットダウン<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75594/7e7c4051-e843-d7ee-fecd-b09198e167bb.png)
6. 確認画面で、ボタンぽち<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75594/40a73990-d532-704f-281b-6be4205ff653.png)



### ラズパイのUEFIファイルを、SSDにコピーして、SSDから起動できるようにする
ここでは、`F：`ドライブがmicroSDのドライブ。

1. ESXi ArmをインストールしたSSD(たしか、5つのうち、2つパーティションがエクスプローラで見える、がここはさわらない)、と　UEFI boot microSDカードを Windowsに接続する
2. Win+R で、`diskpart`
3. `lis dis`で、接続されてるディスクを表示
4. `sel dis 1` で、ESXi ArmをインストールしたSSD　を選択
5. `sel par 1` で、1つ目のパーティションを選択
6. `assign LETTER=P` で、`P:`ドライブ(例)にアサインする (閉じずにこのまま)
7. 管理者で、`cmd`を開き、UEFIのmicroSDカードの中身を、`P:\`にコピーする

    ```powershell:例：FドライブからPへコピー
    xcopy /E F:\*.* P
    ```

8. diskpartにもどり、`remove LETTER=P`として、マウント解除。
9. `exit`でdiskpartを抜ける


```powershell:実行例
Microsoft DiskPart version 10.0.19041.1

Copyright (C) Microsoft Corporation.
On computer: PC-90800

DISKPART> lis dis

  Disk ###  Status         Size     Free     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  Disk 0    Online          476 GB      0 B        *
  Disk 1    Online          931 GB  4096 KB        *
  Disk 2    Online         3724 MB  4032 KB

DISKPART> sel dis 1

Disk 1 is now the selected disk.

DISKPART> lis par

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    System             100 MB    32 KB
  Partition 2    Primary           4095 MB   102 MB
  Partition 3    Primary           4095 MB  4198 MB
  Partition 4    Unknown              8 GB     8 GB
  Partition 5    Unknown            915 GB    16 GB

DISKPART> sel par 1

Partition 1 is now the selected partition.

DISKPART> assign LETTER=P

DiskPart successfully assigned the drive letter or mount point.

DISKPART>
...
// ここで、別のウィンドウでファイルコピーをする。
...

DISKPART> remove LETTER=P

DiskPart successfully removed the drive letter or mount point.

DISKPART> exit
```



```powershell:例ファイルコピー
Microsoft Windows [Version 10.0.19041.572]
(c) 2020 Microsoft Corporation. All rights reserved.

C:\WINDOWS\system32>dir P:
 Volume in drive P has no label.
 Volume Serial Number is 5121-71B6

 Directory of P:\

09/01/2020  02:13 PM    <DIR>          EFI
               0 File(s)              0 bytes
               1 Dir(s)     104,224,768 bytes free

C:\WINDOWS\system32>xcopy /E F:\*.* P:\
F:\bcm2708-rpi-b.dtb
F:\bcm2708-rpi-b-plus.dtb
F:\bcm2708-rpi-b-rev1.dtb
F:\bcm2710-rpi-2-b.dtb
.
. ファイルたくさん
.
F:\overlays\w1-gpio-pullup.dtbo
F:\overlays\w1-gpio.dtbo
F:\overlays\w5500.dtbo
F:\overlays\wittypi.dtbo
235 File(s) copied

C:\WINDOWS\system32>exit
```


### SSD起動の設定をする
以下を接続

- SATA-USB3ケーブル+SSD(インストール先)
- キーボード
- HDMIディスプレイ
- 有線LAN

1. ラズパイをUSB boot設定しておく (Raspberry Pi OSの`raspi-config`で)
2. ESCをぽちぽち押して、UEFIの設定画面へ
3. `Boot Maintenance Manager` > `Boot Options` > `Delete Boot Option` (起動デバイスの削除)
4. 起動するSSD<font color='red'>以外</font>にチェックをつける (スペースキーで、チェックON/OFF)
5. `Commit Changes and Exit` で、[Enter]
6. [ESC]を2回押して、`Continue`を選択して、[Enter]
7. 一度起動したら、シャットダウンして、電源ONで起動するか、確認

# その他