À propos du projet
Ce projet est un banc d'essai indépendant et non officiel pour la prise en charge de l'affichage et du GPU dans les microVM microsandbox sur Apple Silicon. microsandbox exécute des microVM Linux mais n'a pas de chemin d'affichage ; ce projet en apporte un dans un fork de son runtime : un scanout virtio-gpu 2D affiché dans une fenêtre macOS native, virtio-input, un presse-papiers texte via vsock, et virtio-snd via CoreAudio. La charge de travail est un bureau Omarchy complet (Hyprland + Quattro), choisi parce qu'un vrai compositeur fait apparaître des problèmes qu'une mire de test ne révélerait pas.
État du GPU : l'invité effectue le rendu avec llvmpipe de Mesa sur le CPU et virtio-gpu transporte les images terminées vers l'hôte. Rien n'est encore accéléré matériellement ; Venus (Vulkan invité sur le GPU du Mac via MoltenVK) est décrit comme la prochaine expérience.
Ce qu'il fournit :
- Une VM de bureau persistante : créer une fois, fermer et rouvrir la fenêtre, ou arrêter et reprendre avec les fichiers et réglages préservés.
- Intégration Mac native : fenêtre d'affichage macOS, entrées clavier et pointeur, synchronisation du presse-papiers texte, et sortie audio.
- Un bureau optimisé pour le rendu logiciel : deux profils d'affichage (léger 1600x900, standard 1920x1080), texte plus grand, fenêtres opaques, et animations, flou et ombres désactivés. Un shim glFlush-vers-glFinish fait attendre le compositeur pour llvmpipe avant chaque commit.
- Applications dès le premier démarrage : Chromium, Nautilus, Foot, polices CJK et Fcitx5 Pinyin, avec des associations par défaut fonctionnelles pour le navigateur et le gestionnaire de fichiers.
- Partage de fichiers explicite : un répertoire Shared inscriptible monté sur ~/Shared, accessible depuis la barre supérieure et la barre latérale du gestionnaire de fichiers.
- Un runtime isolé avec des téléchargements de runtime et de firmware vérifiés par somme de contrôle et un état de VM local au projet.
- Validation enregistrée : tests du lanceur et de la version, vérifications de l'image invitée, tests de fumée Mac, captures d'écran et mesures liées à l'image testée.
Le démarrage rapide nécessite un Mac Apple Silicon avec Hypervisor.framework, Git, Python 3.9+, Homebrew, et des bibliothèques hôtes (slp/krun/virglrenderer, molten-vk, libepoxy). Commandes : bin/setup télécharge et vérifie le runtime et le firmware épinglés ; bin/doctor vérifie la prise en charge de l'hôte ; bin/run crée le bureau et ouvre sa fenêtre native. Le premier lancement télécharge une image invitée publiée d'environ 6 Go. Chaque VM utilise par défaut 4 vCPU, 4G de RAM et un disque inscriptible de 16G. Le checkout doit se trouver à un chemin court car les chemins de socket du runtime doivent tenir dans 104 octets.
Les opérations quotidiennes incluent bin/run (créer, reprendre ou rouvrir), bin/run --no-display, bin/pause, bin/stop, bin/msb list, bin/screenshot, et bin/doctor. Plusieurs bureaux nommés peuvent fonctionner simultanément avec des ports VNC distincts. La réinitialisation est explicite via bin/reset --name work --yes. La touche Command du Mac correspond à Super dans Omarchy ; les raccourcis incluent Command+Entrée pour un terminal, Command+K pour les raccourcis, Command+Maj+Entrée pour le navigateur, Command+Maj+F pour le gestionnaire de fichiers, et Ctrl+Espace pour basculer la saisie anglais/chinois Pinyin.
VNC est disponible à vnc://127.0.0.1:5901 pour le bureau par défaut ; l'écouteur invité n'a pas d'authentification et n'est transféré que vers le loopback. Les images du presse-papiers ne sont pas prises en charge. Les variables de configuration incluent NAME, PROFILE, CPUS, MEMORY, ROOT_DISK, SHARED_DIR, VNC_PORT, TAG, MSB_GPU_DISPLAY, plus les surcharges avancées MSB, MSB_LIBKRUNFW_PATH et MSB_HOME.
Les commandes de validation incluent bin/check, bin/smoke --profile light, bin/smoke --profile standard, bin/frame-check et bin/publish --check. Les diagnostics incluent bin/measure-display et bin/display-shot, qui s'attachent à l'unique emplacement de visionneuse display.sock et ferment toute visionneuse native existante pour cette VM.
Les constats enregistrés par le projet incluent : avec NO_VIRGL, le périphérique virtio-gpu rejette chaque commande 2D sur macOS, de sorte que l'hôte ne reçoit jamais d'image, et le fork ajoute un mode 2D uniquement ; Hyprland décide s'il doit attendre le rendu à partir du nom du pilote DRM, donc sur virtio-gpu il scanne des images llvmpipe à moitié dessinées, corrigé par un shim glFlush-vers-glFinish ; une VM de bureau peut être mise en pause et reprise en environ 30 ms mais pas checkpointée car virtio-gpu et virtio-snd ne peuvent pas se mettre au repos ; et msb compilé localement contre le SDK macOS 27 ne peut pas prendre de checkpoints HVF.
État amont : les changements d'affichage ont été proposés à microsandbox et msb_krun en août 2026 et retirés sans revue le 2026-09-23 comme trop volumineux à examiner et trop en retard. Le fork est conservé comme véhicule de test plutôt que proposé dans son ensemble. Le projet n'est ni affilié à ni approuvé par microsandbox, libkrun, Omarchy ou Hyprland. Il complète omarchy-microsandbox, un plugin Omarchy pour gérer des VM ; ici le bureau Omarchy lui-même s'exécute dans la VM. Sous licence MIT, avec le runtime et les logiciels invités inclus conservant leurs licences amont.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.