このプロジェクトについて

本プロジェクトは、Apple Silicon上のmicrosandboxマイクロVMにおけるディスプレイとGPUサポートのための、独立した非公式テストベッドである。microsandboxはLinuxマイクロVMを実行するがディスプレイパスを持たない。本プロジェクトはそのランタイムのフォーク内でディスプレイパスを実装する。macOSネイティブウィンドウに表示される2D virtio-gpuスキャンアウト、virtio-input、vsock経由のテキストクリップボード、CoreAudio経由のvirtio-sndである。ワークロードは完全なOmarchyデスクトップ(Hyprland + Quattro)であり、これはテストパターンでは表面化しない問題を実際のコンポジタが明らかにするために選ばれた。 GPUの状況:ゲストはMesaのllvmpipeでCPU上でレンダリングし、virtio-gpuが完成したフレームをホストへ運ぶ。まだ何もハードウェアアクセラレーションされておらず、Venus(MoltenVK経由でMac GPU上のゲストVulkan)が次の実験として説明されている。 提供するもの: - 永続的なデスクトップVM:一度作成し、ウィンドウを閉じて再度開くか、ファイルと設定を保持したまま停止および再開できる。 - ネイティブMac統合:macOSディスプレイウィンドウ、キーボードとポインタ入力、テキストクリップボード同期、オーディオ出力。 - ソフトウェアレンダリング向けに調整されたデスクトップ:2つのディスプレイプロファイル(軽量1600x900、標準1920x1080)、より大きなテキスト、不透明ウィンドウ、アニメーション・ブラー・シャドウの無効化。glFlush-to-glFinishシムにより、コンポジタは各コミット前にllvmpipeを待つ。 - 初回起動からのアプリケーション:Chromium、Nautilus、Foot、CJKフォント、Fcitx5 Pinyin、動作するデフォルトブラウザとファイルマネージャの関連付け。 - 明示的なファイル共有:~/Sharedにマウントされた書き込み可能なSharedディレクトリで、トップバーとファイルマネージャのサイドバーから到達可能。 - 分離されたランタイム:チェックサム付きのランタイムとファームウェアのダウンロード、プロジェクトローカルのVM状態。 - 記録された検証:ランチャーとリリースのテスト、ゲストイメージチェック、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の公開ゲストイメージをダウンロードする。各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でファイルマネージャ、Ctrl+Spaceで英語/中国語Pinyin入力の切り替えが含まれる。 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は約30 msで一時停止と再開ができるが、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ライセンスの下で提供され、含まれるランタイムとゲストソフトウェアはそれぞれのアップストリームライセンスを保持する。