这个项目能做什么

本项目是一个独立、非官方的测试平台,用于在Apple Silicon上的microsandbox微虚拟机中实现显示和GPU支持。microsandbox运行Linux微虚拟机,但没有显示路径;本项目在其运行时的一个分支中实现了该功能:一个2D virtio-gpu扫描输出显示在原生macOS窗口中,支持virtio-input、通过vsock的文本剪贴板,以及通过CoreAudio的virtio-snd。工作负载是一个完整的Omarchy桌面(Hyprland + Quattro),选择它是因为真正的合成器能暴露测试图案无法发现的问题。 GPU状态:客户机使用Mesa的llvmpipe在CPU上渲染,virtio-gpu将完成的帧传输到主机。目前尚无硬件加速;Venus(通过MoltenVK在Mac GPU上运行的客户机Vulkan)被描述为下一个实验。 它提供的内容: - 持久化桌面虚拟机:创建一次,关闭并重新打开窗口,或停止并恢复,文件和设置均保留。 - 原生Mac集成:macOS显示窗口、键盘和指针输入、文本剪贴板同步以及音频输出。 - 针对软件渲染调优的桌面:两种显示配置(浅色1600x900,标准1920x1080)、更大的文本、不透明窗口,并禁用动画、模糊和阴影。一个glFlush到glFinish的垫片使合成器在每次提交前等待llvmpipe。 - 首次启动即包含应用程序:Chromium、Nautilus、Foot、CJK字体和Fcitx5拼音,并配置了可用的默认浏览器和文件管理器关联。 - 显式文件共享:一个可写的Shared目录挂载在~/Shared,可从顶栏和文件管理器侧边栏访问。 - 隔离的运行时,带有校验和的运行时和固件下载,以及项目本地的虚拟机状态。 - 记录验证:启动器和发布测试、客户机镜像检查、Mac冒烟测试、截图和与测试镜像关联的测量。 快速启动需要一台配备Hypervisor.framework的Apple Silicon Mac、Git、Python 3.9+、Homebrew以及主机库(slp/krun/virglrenderer、molten-vk、libepoxy)。命令:bin/setup下载并验证固定的运行时和固件;bin/doctor检查主机支持;bin/run创建桌面并打开其原生窗口。首次运行会下载约6 GB的已发布客户机镜像。每个虚拟机默认配置4个vCPU、4G内存和16G可写磁盘。检出路径必须短,因为运行时套接字路径必须适合104字节。 日常操作包括bin/run(创建、恢复或重新打开)、bin/run --no-display、bin/pause、bin/stop、bin/msb list、bin/screenshot和bin/doctor。多个命名桌面可以并发运行,使用不同的VNC端口。重置通过bin/reset --name work --yes显式执行。Mac的Command键映射到Omarchy内的Super;快捷键包括Command+Enter打开终端、Command+K查看快捷键、Command+Shift+Enter打开浏览器、Command+Shift+F打开文件管理器,以及Ctrl+Space切换英文/中文拼音输入。 VNC可在vnc://127.0.0.1:5901用于默认桌面;客户机监听器无认证,仅转发到回环。不支持剪贴板图像。配置变量包括NAME、PROFILE、CPUS、MEMORY、ROOT_DISK、SHARED_DIR、VNC_PORT、TAG、MSB_GPU_DISPLAY,以及高级覆盖MSB、MSB_LIBKRUNFW_PATH和MSB_HOME。 验证命令包括bin/check、bin/smoke --profile light、bin/smoke --profile standard、bin/frame-check和bin/publish --check。诊断包括bin/measure-display和bin/display-shot,它们连接到唯一的display.sock查看器插槽,并关闭该虚拟机的任何现有原生查看器。 项目记录的发现包括:使用NO_VIRGL时,virtio-gpu设备在macOS上拒绝每个2D命令,因此主机永远不会收到帧,分支添加了仅2D模式;Hyprland根据DRM驱动程序名称决定是否等待渲染,因此在virtio-gpu上它会扫描出半绘制的llvmpipe帧,通过glFlush到glFinish垫片修复;桌面虚拟机可以暂停并在约30毫秒内恢复,但不能检查点,因为virtio-gpu和virtio-snd无法静默;以及针对macOS 27 SDK本地构建的msb无法获取HVF检查点。 上游状态:显示更改于2026年8月提议给microsandbox和msb_krun,并于2026年9月23日因太大而无法审查且远远落后而被撤回。该分支保留为测试工具,而不是整体提议。本项目与microsandbox、libkrun、Omarchy或Hyprland无关联或认可。它补充了omarchy-microsandbox(一个用于管理虚拟机的Omarchy插件);这里Omarchy桌面本身运行在虚拟机内。根据MIT许可,包含的运行时和客户机软件保留其上游许可。