But: faire démarrer un Linux arm64 sur disque externe à partir d’un mac M1 ou plus.
Bon, il est impossible de démarrer un disque externe sur un apple arm64 (les M1 et suivant). Impossible donc de créer un disque externe qu’on puisse lancer sur une machine Apple arm64.
Donc il faudra avoir une machine virtuelle utilisant l’accélération locale (le CPU arm64 de la machine) avec une racine sur le disque externe et exploitant les cartes graphiques, donc avec un support openGL.
- La version capable d’utiliser OpenGL (UTM) ne marche que si elle est installée sur une machine précise (pas de mobilité) et surtout ne permet pas d’utiliser un périphérique extérieur
- qemu installé par brew ne fonction que sur une machine et ne connait pas openGL
===> compilation de qemu. Souci:
- Si on compile qemu, il faut avoir une signature apple pour avoir l’accélération hvf (si!!). Le péquin classique (appelé pigeon chez apple) doit payer pour avoir la signature. Mais si on est une association de gentils profs, c’est gratos. Bon, ça c’est fait.
- qemu compilé comme cela ne permet pas d’utiliser openGL dans la machine invitée.
Bref il a falllu récupérer les patchs de UTM concernant openGL, les appliquer sur les sources qemu, compiler le tout avec les options qui vont bien, patcher les binaires et librairies pour que l’application puisse s’installer où on veut par simple dépliage de l’archibe, et faire signer le tout.
Cela donne cette application (ils appellent ça comme ça chez apple)
La commande pour lancer une machine virtuelle sur un disque externe USB est la suivante:
diskutil umountDisk /dev/disk4
~/qemuapesam.app/Contents/MacOS/qemu-system-aarch64 \
-machine virt \
-cpu host \
-accel hvf \
-m 4096 \
-smp 4 \
-bios ~/qemuapesam.app/Contents/Resources/share/qemu/edk2-aarch64-code.fd \
-device qemu-xhci \
-device usb-kbd \
-device usb-mouse \
-device virtio-gpu-pci \
-display cocoa,gl=core \
-monitor stdio \
-device virtio-net-device,netdev=net0 \
-netdev user,id=net0 \
-audiodev coreaudio,id=snd0 \
-device ich9-intel-hda \
-device hda-output,audiodev=snd0 \
-drive if=none,file=/dev/disk4,format=raw,cache=writeback,id=hd0 \
-object rng-random,id=rng0,filename=/dev/urandom \
-device virtio-rng-pci,rng=rng0 \
-device virtio-blk-pci,drive=hd0
Il suffit du coup de faire un script qui déplie l’archive dans le repertoire $HOME, puis qui démonte la clef et lance la commande comme ci dessus. C’est une alternative que j’ai trouvé bcp plus pratique que Asahi qui nécessite une installation sur la machine.
Voilà, du coup j’ai une debian trixie arm64 sur un disque SSD qui fonctionne sur un mac M1 de manière extrèmement rapide.
J’en ai suffisamment bavé donc enjoy!!
PS: Je dois avouer que Claude m’a fait gagner énormément de temps.
…