프로젝트 소개

이 프로젝트는 Apple Silicon에서 microsandbox 마이크로VM의 디스플레이 및 GPU 지원을 위한 독립적이고 비공식적인 테스트베드입니다. microsandbox는 Linux 마이크로VM을 실행하지만 디스플레이 경로가 없으며, 이 프로젝트는 런타임 포크에 이를 추가합니다. 즉, 네이티브 macOS 창에 표시되는 2D virtio-gpu 스캔아웃, virtio-input, vsock을 통한 텍스트 클립보드, CoreAudio를 통한 virtio-snd입니다. 워크로드는 완전한 Omarchy 데스크톱(Hyprland + Quattro)이며, 이는 실제 컴포지터가 테스트 패턴으로는 드러나지 않는 문제를 드러내기 때문에 선택되었습니다. GPU 상태: 게스트는 CPU에서 Mesa의 llvmpipe로 렌더링하고 virtio-gpu가 완성된 프레임을 호스트로 전달합니다. 아직 하드웨어 가속은 없으며, Venus(MoltenVK를 통한 Mac GPU의 게스트 Vulkan)가 다음 실험으로 설명됩니다. 제공 사항: - 영구 데스크톱 VM: 한 번 생성하고 창을 닫았다 다시 열거나, 파일과 설정을 보존한 채 중지하고 재개할 수 있습니다. - 네이티브 Mac 통합: macOS 디스플레이 창, 키보드 및 포인터 입력, 텍스트 클립보드 동기화, 오디오 출력. - 소프트웨어 렌더링에 맞춘 데스크톱: 두 가지 디스플레이 프로필(라이트 1600x900, 표준 1920x1080), 더 큰 텍스트, 불투명 창, 애니메이션·블러·그림자 비활성화. glFlush-to-glFinish 심이 컴포지터가 각 커밋 전에 llvmpipe를 기다리게 합니다. - 첫 부팅부터 제공되는 애플리케이션: Chromium, Nautilus, Foot, CJK 폰트, Fcitx5 Pinyin, 작동하는 기본 브라우저 및 파일 관리자 연결. - 명시적 파일 공유: ~/Shared에 마운트된 쓰기 가능한 Shared 디렉터리로, 상단 바와 파일 관리자 사이드바에서 접근 가능. - 체크섬이 적용된 런타임 및 펌웨어 다운로드와 프로젝트 로컬 VM 상태를 갖춘 격리된 런타임. - 기록된 검증: 런처 및 릴리스 테스트, 게스트 이미지 검사, Mac 스모크 테스트, 테스트된 이미지에 연결된 스크린샷과 측정값. 빠른 시작에는 Hypervisor.framework, Git, Python 3.9+, Homebrew, 호스트 라이브러리(slp/krun/virglrenderer, molten-vk, libepoxy)가 있는 Apple Silicon Mac이 필요합니다. 명령: bin/setup은 고정된 런타임과 펌웨어를 다운로드하고 검증합니다. bin/doctor는 호스트 지원을 확인합니다. bin/run은 데스크톱을 생성하고 네이티브 창을 엽니다. 첫 실행은 약 6GB의 게시된 게스트 이미지를 다운로드합니다. 각 VM은 기본적으로 4 vCPU, 4G RAM, 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, 영어/중국어 Pinyin 입력 전환용 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 뷰어 슬롯에 연결하고 해당 VM의 기존 네이티브 뷰어를 닫습니다. 프로젝트가 기록한 발견 사항: NO_VIRGL을 사용하면 virtio-gpu 장치가 macOS에서 모든 2D 명령을 거부하므로 호스트는 프레임을 전혀 받지 못하며, 포크는 2D 전용 모드를 추가합니다. Hyprland는 DRM 드라이버 이름을 기준으로 렌더링 대기 여부를 결정하므로 virtio-gpu에서는 절반만 그려진 llvmpipe 프레임을 스캔아웃하며, 이는 glFlush-to-glFinish 심으로 수정됩니다. 데스크톱 VM은 약 30ms 만에 일시 중지 및 재개할 수 있지만 virtio-gpu와 virtio-snd가 정지할 수 없어 체크포인트할 수 없습니다. 또한 macOS 27 SDK에 대해 로컬로 빌드된 msb는 HVF 체크포인트를 수행할 수 없습니다. 업스트림 상태: 디스플레이 변경 사항은 2026년 8월에 microsandbox와 msb_krun에 제안되었고, 검토하기에 너무 크고 너무 뒤처져 있다는 이유로 2026-09-23에 검토 없이 철회되었습니다. 포크는 전체로 제안되기보다 테스트 수단으로 유지됩니다. 이 프로젝트는 microsandbox, libkrun, Omarchy 또는 Hyprland와 제휴하거나 승인받지 않았습니다. VM 관리를 위한 Omarchy 플러그인인 omarchy-microsandbox를 보완하며, 여기서는 Omarchy 데스크톱 자체가 VM 내부에서 실행됩니다. MIT 라이선스이며, 포함된 런타임과 게스트 소프트웨어는 각자의 업스트림 라이선스를 유지합니다.