Sobre el proyecto

Este proyecto es un banco de pruebas independiente y no oficial para el soporte de pantalla y GPU en microVM de microsandbox sobre Apple Silicon. microsandbox ejecuta microVM Linux pero no tiene ruta de pantalla; este proyecto incorpora una en un fork de su runtime: un scanout 2D de virtio-gpu mostrado en una ventana nativa de macOS, virtio-input, un portapapeles de texto sobre vsock y virtio-snd a través de CoreAudio. La carga de trabajo es un escritorio Omarchy completo (Hyprland + Quattro), elegido porque un compositor real saca a la luz problemas que un patrón de prueba no mostraría. Estado de la GPU: el invitado renderiza con llvmpipe de Mesa en la CPU y virtio-gpu transporta los fotogramas terminados al host. Nada está acelerado por hardware todavía; Venus (Vulkan del invitado sobre la GPU del Mac mediante MoltenVK) se describe como el siguiente experimento. Qué ofrece: - Una VM de escritorio persistente: créala una vez, cierra y vuelve a abrir la ventana, o detén y reanuda con archivos y ajustes preservados. - Integración nativa con Mac: ventana de pantalla de macOS, entrada de teclado y puntero, sincronización del portapapeles de texto y salida de audio. - Un escritorio ajustado para renderizado por software: dos perfiles de pantalla (ligero 1600x900, estándar 1920x1080), texto más grande, ventanas opacas y animaciones, desenfoque y sombras desactivados. Un shim de glFlush a glFinish hace que el compositor espere a llvmpipe antes de cada commit. - Aplicaciones desde el primer arranque: Chromium, Nautilus, Foot, fuentes CJK y Fcitx5 Pinyin, con asociaciones funcionales de navegador predeterminado y gestor de archivos. - Uso compartido de archivos explícito: un directorio Shared escribible montado en ~/Shared, accesible desde la barra superior y la barra lateral del gestor de archivos. - Un runtime aislado con descargas de runtime y firmware verificadas con checksum y estado de VM local al proyecto. - Validación registrada: pruebas del lanzador y de la versión, comprobaciones de la imagen del invitado, pruebas de humo en Mac, capturas de pantalla y mediciones vinculadas a la imagen probada. El inicio rápido requiere un Mac con Apple Silicon con Hypervisor.framework, Git, Python 3.9+, Homebrew y bibliotecas del host (slp/krun/virglrenderer, molten-vk, libepoxy). Comandos: bin/setup descarga y verifica el runtime y el firmware fijados; bin/doctor comprueba el soporte del host; bin/run crea el escritorio y abre su ventana nativa. La primera ejecución descarga una imagen de invitado publicada de aproximadamente 6 GB. Cada VM usa por defecto 4 vCPU, 4G de RAM y un disco escribible de 16G. El checkout debe estar en una ruta corta porque las rutas de socket del runtime deben caber en 104 bytes. Las operaciones diarias incluyen bin/run (crear, reanudar o reabrir), bin/run --no-display, bin/pause, bin/stop, bin/msb list, bin/screenshot y bin/doctor. Se pueden ejecutar varios escritorios con nombre de forma concurrente con distintos puertos VNC. El reinicio es explícito mediante bin/reset --name work --yes. La tecla Command del Mac se asigna a Super dentro de Omarchy; los atajos incluyen Command+Enter para una terminal, Command+K para atajos, Command+Shift+Enter para el navegador, Command+Shift+F para el gestor de archivos y Ctrl+Space para cambiar la entrada entre inglés y Pinyin chino. VNC está disponible en vnc://127.0.0.1:5901 para el escritorio predeterminado; el listener del invitado no tiene autenticación y solo se reenvía a loopback. No se admiten imágenes en el portapapeles. Las variables de configuración incluyen NAME, PROFILE, CPUS, MEMORY, ROOT_DISK, SHARED_DIR, VNC_PORT, TAG, MSB_GPU_DISPLAY, además de las anulaciones avanzadas MSB, MSB_LIBKRUNFW_PATH y MSB_HOME. Los comandos de validación incluyen bin/check, bin/smoke --profile light, bin/smoke --profile standard, bin/frame-check y bin/publish --check. Los diagnósticos incluyen bin/measure-display y bin/display-shot, que se conectan a la única ranura de visor display.sock y cierran cualquier visor nativo existente para esa VM. Los hallazgos registrados por el proyecto incluyen: con NO_VIRGL el dispositivo virtio-gpu rechaza todos los comandos 2D en macOS, por lo que el host nunca recibe un fotograma, y el fork añade un modo solo 2D; Hyprland decide si esperar al renderizado a partir del nombre del controlador DRM, así que en virtio-gpu escanea fotogramas de llvmpipe a medio dibujar, corregido con un shim de glFlush a glFinish; una VM de escritorio se puede pausar y reanudar en unos 30 ms pero no se puede checkpoint porque virtio-gpu y virtio-snd no pueden quiescerse; y msb compilado localmente contra el SDK de macOS 27 no puede tomar checkpoints HVF. Estado upstream: los cambios de pantalla se propusieron a microsandbox y msb_krun en agosto de 2026 y se retiraron sin revisión el 2026-09-23 por ser demasiado grandes para revisar y estar muy atrasados. El fork se mantiene como vehículo de prueba en lugar de proponerse como un todo. El proyecto no está afiliado ni respaldado por microsandbox, libkrun, Omarchy o Hyprland. Complementa a omarchy-microsandbox, un plugin de Omarchy para gestionar VM; aquí el propio escritorio Omarchy se ejecuta dentro de la VM. Licenciado bajo MIT, con el runtime incluido y el software del invitado conservando sus licencias upstream.