(Cette configuration est compatible Pi400)
La page VMWare Flings.
Quelques projets: https://williamlam.com/2020/10/how-to-run-raspberry-pi-os-as-a-vm-on-esxi-arm.html
3 étapes majeures sont nécessaires:
- update du bootloader et de l'EEPROM du Pi4
- boot UEFI
- installation ESXI
Récupération des fichiers
Raspberry Pi Imager pour l'update du bootloader et de l'EEPROM.
VMWare Installer ISO est l'installeur actuel de VMWare ARM. A date, il s'agit de la version 7.0.0 (2021-08-06) build 18427252
Mise à jour de l'EEPROM
Après l'avoir installé, on démarre Pi Imager, puis on (re)formate la carte en choisissant Erase depuis le menu Operating System. Pour être sûr de ne pas écraser autre chose, on insérera la carte après avoir cliqué sur le bouton "Choose SD". Puis on cliquera sur Write, et on éjectera la carte à l'issue de cette opération.
On choisit alors l'OS Raspberry Pi OS Lite (32-bit) à partir de l'entrée Raspberry Pi OS (other), puis on sélectionne la carte SD de destination comme précédemment (c'est-à-dire en insérant la carte après avoir cliqué sur le bouton Choose SD card.
Cette opération effectuée, on insère la micro-SD dans le Pi4, on démarre le système, on vérifie qu'on a du réseau, et on se logue en utilisateur pi avec le mot de passe raspberry. Puis on exécute la commande suivante pour voir si des mises à jour sont disponibles:
sudo rpi-eeprom-update
Si c'est le cas, on rappelle la même commande avec le switch -a et on redémarre comme le système le demande.
Après le redémarrage, on pourra se convaincre de la mise à jour en exécutant une dernière fois la commande rpi-eeprom-update.
Finalement, on éteint le système (poweroff) et on sort la micro-sd.
Boot UEFI
On va maintenant préparer le système à booter en UEFI. Deux archives sont nécessaires :
Après les avoir décompressées quelque part, on reformate, au moyen de l'utilitaire de disques, la partition boot de la carte micro-sd pour y mettre les fichiers de boot UEFI. On peut aussi se contenter de réutiliser la partition /boot de la carte; dans ce cas, on passera la première des étapes suivantes:
- copier tous les fichiers contenus dans firmware-master/boot à la racine de la partition UEFI de la carte.
- supprimer les quatre fichier kernel*.img
- copier le contenu du dossier RPi4_UEFI_Firmware_v1.29 au même endroit, en n'oubliant pas le fichier miniuart-bt.dtbo du dossier overlays.
Dans le cas d'un Pi4 avec 4Go de RAM au lieu de 8, il faudra éditer le fichier config.txt pour ajouter l'option "gpu_mem=16".
C'est tout. On peut maintenant sortir la carte micro-sd et la réinsérer dans le Pi4, mais on ne va pas le démarrer tout de suite.
Préparer la clef d'installation VMWare
On peut utiliser Etcher pour ça: choisir l'image ISO précédemment téléchargée, ignorer l'avertissement (partition de boot non présente), insérer la clef, et la flasher. On ignorera l'avertissement suivant:

Installation d'ESXi
Tout est maintenant prêt pour tenter une première installation. L'opération consistera à configurer le boot UEFI, entre autre pour booter sur la clef USB, puis à installer vSphere après l'avoir préconfiguré.
On branche donc la clef USB et on démarre le Pi4.
Boot UEFI
Au démarrage du Pi4, on appuie sur la touche Escape pour entrer dans la configuration UEFI, et on effectue les modifications suivantes:
- faire sauter la limite de 3Go de RAM en allant dans le menu Device Manager/Raspberry Pi Configuration/Advanced Configuration et en indiquant Disabled pour "Limit RAM to 3GB", puis F10 pour enregistrer la modification,
- choisir la console graphique depuis le menu Device Manager/Console Preference Selection,
- donner la priorié au boot à la clef USB à partir du menu Boot Maintenance Manager/Boot Options/Change Boot Order
- sauvegarder les changements par F10
Copie des fichiers
- à partir du menu d'accueil, sélectionner Continue après avoir repéré les touches Maj et O
- immédiatement au lancement de l'installation d'ESXi, appuyer sur les deux touches indiquées précédemment
- un écran "Loading ESXi installer" est apparu, avec un prompt au bas de l'écran
- pour limiter la taille de la partition système à 8GB, indiquer: runweasel cdromBoot autoPartitionOSDataSize=8192
- appuyer sur Entrée pour lancer l'installation proprement dite
- l'installation commencera par charger les fichiers nécessaire en mémoire, puis demandera un mot de passe, une disposition de clavier, et un emplacement d'installation; en l'occurrence, il s'agira de la clef USB elle-même (elle sera donc repartitionnée et formatée).
Utilisation
A l'issue de l'installation, on est invité à se rendre sur l'URL https://<ip_du_serveur> pour vérifier que tout fonctionne. Après s'être logué en utilisateur root avec le mot de passe indiqué à l'installation, on se retrouve sur la page suivante:

On peut alors tester le déploiement d'une version Debian/ARM, qu'on trouvera sur cette page (fichier mini.iso). Pour copier cette image ISO sur notre vSphere, on se rend dans le menu Stockage/datastore1, puis on clique sur "Charger", et on indique le chemin vers le fichier téléchargé précédemment.
On peut alors créer notre VM:
- cliquer "Créer/Enregistrer une VM"
- Sélectionner un type de création: Créer une machine virtuelle
- Sélectionner un nom et un système d'exploitation invité: indiquer un nom (DebianARMtest), la compatibilité VMWare, la famille d'OS (Linux) et la version (Debian 11 64bits)
- Sélectionner un stockage: datastore1 (si aucun autre datastore n'est disponible)
- Personnaliser les paramètres: modifier les paramètres en fonction de la quantité de mémoire et de d'espace disque disponible
On vérifie les paramètres, et on termine la création de cette VM.

On aurait pu le faire précédemment, mais on va maintenant ajouter un lecteur CD avec l'ISO de notre Debian/ARM. Il suffit de modifier les paramètres de la VM, de lui assigner un lecteur CD avec cette image, et de vérifier que la case "connecté" est bien cochée.
On peut alors démarrer cette VM et commencer à installer Debian.
Booter sur un disque SSD
Voir:
- https://virtualizationreview.com/articles/2021/02/05/sata-esxi.aspx
- https://williamlam.com/2018/10/useful-m-2-nvme-accessories-for-vsphere-vsan-vmfs-home-labs.html
C'est bien gentil tout ça, mais au point où on en est, on a besoin de deux ou trois périphériques de masse:
- la carte micro-sd avec le premier boot UEFI
- la clef USB avec l'installation d'ESXi
- optimalement, un disque SSD USB pour étendre le datastore
On cherche alors un moyen de se débarrasser de la clef USB, et enchaîner le boot directement sur le disque SSD. Dans la suite du chapître, on utilise les variables suivantes:
- SRC=/dev/sdd
- DST=/dev/sde
On va maintenant dupliquer le contenu de la clef USB sur le disque SSD. Pour commencer, on va lister les partitions:
root@proxmoxlab:~# sfdisk -d /dev/sdd (....) /dev/sdd1 : start= 64, size= 204800, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, uuid=D460FCAE-2D7E-4CF2-B46E-063AE6EE8D31, name="BOOT" /dev/sdd5 : start= 208896, size= 8386560, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, uuid=7C37D2BD-056E-4F32-84E5-62F1E0DDAAA9, name="BOOTBANK1" /dev/sdd6 : start= 8597504, size= 8386560, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, uuid=DB244997-4650-46BF-8843-2F4135FF5BFF, name="BOOTBANK2" /dev/sdd7 : start= 16986112, size= 16777216, type=4EB2EA39-7855-4790-A79E-FAE495E21F8D, uuid=860B50F1-CF00-4032-8F65-8D63FDD946F4, name="OSDATA" /dev/sdd8 : start= 33765376, size= 87079891, type=AA31E02A-400F-11DB-9590-000C2911D1B8, uuid=AA7B5185-83E4-4855-9D61-012A0FA9EC9F, name="datastore1"
Tout d'abord, on copie la structure des partitions du disque source sur le disque destination (pour afficher la table des partitions: sfdisk -d $SRC, pour la sauvegarder au format binaire: sgdisk --backup=/tmp/esxi_source_usb.sgdisk $SRC):
#DONT MESS WITH SRC AND DST !!! gdisk --replicate=$DST $SRC
Il ne reste plus qu'à cloner les partitions. En l'occurrence, la table des partitions contient sdx1 (boot UEFI), sdx5 (bootbank1), sdx6 (bootbank2), sdx7 (OsData) et sdx8 (datastore):
for i in 1 5 6 7 8; do dd if=${src}${i} of=${dst}{i} bs=4M; done
Il n'y a plus qu'à éteindre le RPi, débrancher la clef USB, et démarrer. Si l'UEFI est bien configuré, le système devrait se lancer.
Troubleshoot
Toutefois, après les opérations précédentes, le datastore n'était pas accessible.