VMware ESXi arm editionで各種Linuxディストリビューションを試す+USBブートしてみる


始めに

VMwareのESXiのarm editionがraspberry pi 4で動作するようになりました。インストール方法は公式に詳しく出ているので、それに沿って行えばできます。しかし、そこからvmを作成するのに右往左往したので、メモに残します。ただ、実験的に方法を探っただけで、公式的なやり方とは思えないので、公式があるようでしたらコメントいただけるとありがたいです。
あと、USBブートが意外と簡単にできたので、それもレポートします。

参考ページ

ESXi arm edition公式

Ubuntu 20.10 aarch64

CentOS 8 aarch64 generic image

Fedora 33 aarch64 image

用意するもの

  • raspberry pi 4版ESXi arm edition 公式に従ってインストール、動作確認をしてください。このページの左のDownloadボタンの上のメニューから「Fling-on-Raspberry-pi.pdf」を選択してダウンロードすると、詳細なインストラクションがあります。なお、インストールにはPi4 8GB or 4GB、SDカード、USB接続のSSD/HDDが必要となります。
  • Linux PC vmイメージのさばけるHDDの容量があって、qemuがインストールされている必要があります。筆者はRaspberry Pi 4にHDDをつけてUbuntuを動作させている環境で行いました。
  • Windows PC 各種作業用

VMのクリエイト① Ubuntu編

Ubuntuにはaarch64のインストーラISOイメージがあり、機能するので、通常の方法でインストール可能です。FedoraもインストーラISOがあり、インストールするのですが、grabのインストールに失敗し、動きません。

(1) まずUbuntu 20.10 aarch64から、インストーラISOを作業用PCにダウンロードします。

(2) ブラウザのESXi画面左からStorageを選択して、Data Store browserを開きます。

Uploadを開いてダウンロードしたISOファイルをアップロードします。

(3) VMのCreateをします。Virtural Machines->Create/Register VMを選択します。

Create a new virtural machineを選択してnext

適当な名前と、ESXi 7.0 virtural machine、Linux、Ubuntu Linux (64bit)を選択してnext

次は適当なストレージを選択して(多分1つしかない)next
次でISOファイルを選択します。
まずCPUは適当に2くらいにします。多分4は無理です。(ずっとESXiがとっている)メモリは4GB版なら2GBくらいにしておきます。HDDは使用しているディスクと相談の上、小さすぎないようにします。実験であればデフォルトでOK。
下の方のCD/DVD Drive 1の選択肢をDatastore ISOファイルにします。ファイル選択画面になるので、先ほどアップロードしたファイルを選択します。

Connectにチェックが入っていることを確認してnext

next、finishで終わりです。多分virturalboxとかの経験ある人は特に問題ないと思います。

(4)新しくCreateされたVMを起動します。クリックしてPower on、指示に従ってください。

VMのクリエイト② CentOS編

CentOSでは、探したところaarch 64はインストーラISOが無く、インストールされたディスクrawイメージが配布されています。これをESXiに持っていく必要があるのですが、ここで試行錯誤して起動成功させました。まず、イメージとしてraspberry pi用のイメージはNGのようです。どうやらブートが特殊でブートしません。Arm一般向けのgenericイメージが動作しました。以下、手順です。

(1)前準備、ESXiのsshポートを開きます。ESXiブラウザ画面左NavigatorのManageを開きます。項目の中からTSM-SSHを選択し、Startを押します。Runningになればsshできます。
ログインの仕方も癖があります。teratarmを開いて、ホストを選択後、ユーザー名(ここではroot)を書いたあと、その下にパスワードを入れてもダメです。メニューの下の方にあるキーボードインタラクティブ認証を使う を選択してください。次にパスワードを入れる画面になるので、パスワードを入れるとログインできます。あとでコンソールを使います。

VMデータを置くストレージは以下の場所になります。

# cd /vmfs/volumes/datastore1/

(1)作業用Linux PCにrawイメージをダウンロードして解凍します。

$ wget https://people.centos.org/pgreco/CentOS-Userland-8-stream-aarch64-generic-Minimal/CentOS-Userland-8-stream-aarch64-generic-Minimal-sda.raw.xz
$ unxz CentOS-Userland-8-stream-aarch64-generic-Minimal-sda.raw.xz

(2) qemuを使って、VMware用のディスクイメージであるvmdkファイルを作成します。

$ qemu-img convert -f raw -O vmdk CentOS-Userland-8-stream-aarch64-generic-Minimal-sda.raw centos.vmdk

(3)SCP を使ってvmdkファイルをESXiに転送します。(0)のsshポートが開いていることに注意してください。

$ scp centos.vmdk root@<ESXiのアドレス>:/vmfs/volumes/datastore1/

(4) (1)で開いたESXiのsshコンソールに行き、転送したファイルがあることを確認してください。そして以下を実行。

# vmkfstools -i centos.vmdk centos_2.vmdk
Destination disk format: VMFS zeroedthick
Cloning disk 'centos.vmdk'...
Clone: 100% done.

これは、qemuで作成できる.vmdkファイルがESXiでは動作しないバージョンのため変換が必要とのことです。

(5)これでやっとブラウザからの作業になります。VMのCreateをします。Virtural Machines->Create/Register VMを選択します。OSはCentOS 8を選択してください。Customize Settingsで、Hard Disk 1の右端にある×を押して消去します。代わりに新しいハードディスクを登録します。Add hard disk->Existing hard diskでファイルを選択できるようになるので、変換後のvmdk(この場合centos_2.vmdk)を選択してください。あとはいいように調整をして、Createを完了してください。あとは、VMを選択して起動すればOSが起動するはずです。

Fedora 33

CentOSと全く同じ方法で起動しました。
ファイルは以下を使用しました。

$ wget https://dl.fedoraproject.org/pub/fedora/linux/releases/33/Workstation/aarch64/images/Fedora-Workstation-33-1.3.aarch64.raw.xz

ESXiのUSB HDDからの起動

公式のESXiインストールでは、次回ブートもSDカードが必要となります。せっかくRaspberry Pi 4がUSBブート可能なのにもったいないと思いまして、少し検討をしました。最初はESXiのHDDのpartitionを少しずつずらしてスペースを作り、SDカードのブートを入れようとしましたが、gpartedでは歯が立たない。よく観察すると、HDD BOOTパーティションがあり、bootableフラッグも設定されています。中をのぞくとEFIのブート関連が入っており、直下はEFIディレクトリのみです。もしかしたら、ここにRaspberry Piのブート、つまりSDカードの中身を入れればうまくいくかと思い、やってみたところ、SDカード無しでブートしました。ちょっと便利になりました。
上の文章でやり方わからない人のために。
(1) Linux PCにSDカードの中身をコピーしておきます。USBメモリ等を使用してください。
(2) Linux PCにESXiのHDDを接続します。fdisk -lで確認します。

$ sudo su
# fdisk -l

 接続したHDDのデバイス名を確認します。ここでは/dev/sdbとします。

(3) /dev/sdb1をマウントします。コピーしてきたSDカードのファイルが/home/pi/boot/の下にあるとすると、以下のようになります。

# mount /dev/sdb1 /mnt
# cp -r /home/pi/boot/* /mnt
# umount /mnt

取り外して、sdカード無しでブートするかどうか試して下さい。

終わりに

VMwareは仕事でユーザとして使ったことがあるくらいであったため、最悪壊してもいいホストOS環境を構築できて、いろいろ実験できるのはなかなか楽しいものです。個人的にはvirtualboxのホストがPi4にできるといいかも、と思っております。