- OpenBSD/arm64 が Apple Hypervisor 環境でゲストOSとして動作可能に
- 一連のコミットにより グラフィックス処理とネットワーク機能 が修正・改善され、カーネルパニックと X11 のブラックスクリーン問題を解決
- これで Apple Virtualization 環境で完全に動作し、最新の Apple Silicon Mac で利用可能
Apple HypervisorでのOpenBSD/arm64サポート
Helg Bredowによるviogpu修正
sys/dev/pv/viogpu.c ファイルで viogpu_wsmmap() 関数が修正
- 従来はカーネル仮想アドレス(kva)を返していたが、現在は bus_dmamem_mmap(9) を通じて物理アドレスを返す
- この修正により、QEMUでX11を実行した際に発生していた ブラックスクリーン問題 と Apple Hypervisor 上での カーネルパニック が解消
- フレームバッファをホストメモリへ転送する前に bus_dmamap_sync(9) の呼び出しを追加
- これにより、別のCPUで動作中のホストがフレームバッファ更新を認識可能に
- 修正レビューとフィードバックは kettenis@ が担当し、承認(ok)は sf@ が付与
Stefan Fritschによるvirtioネットワーク修正
sys/dev/pv/if_vio.c ファイルで VIRTIO_NET_F_MTU 機能 のサポートを追加
- ハイパーバイザーから hardmtu 値を取得し、現在の MTU を同じ値に設定
- virtio 標準は明確ではないが、Linuxと同じ方式 を採用
- ETHER_MAX_HARDMTU_LEN を上限として使用し、従来の MAXMCLBYTES より正確に処理
- ハイパーバイザーがこれより大きい MTU を要求した場合、VIRTIO_NET_F_MTU 機能なしで再ネゴシエーション を実施
- このコミットにより OpenBSDがApple Virtualization環境で完全に動作
- 入力とテストは helg@ が担当し、承認(ok)は jan@ が付与
ユーザー案内とテスト推奨
- この変更は 最新のApple Silicon Macモデルのユーザー に特に有用
- 現在 スナップショット版 でテスト可能で、ユーザーフィードバックを募集
1件のコメント
Hacker News のコメント
仕様が曖昧なため Linux はそのまま動くが、OpenBSD ではハード MTU 制限を扱うために別パッチを入れる必要があった。
M4/M5 チップのシングルスレッド性能のおかげで、OpenBSD ゲストは pf 設定のテストや隔離されたメールサーバーの運用に最適な環境だ。
これで viogpu を安定して使えるようになり、高速な VM インストール時にシリアルコンソールだけを使っていたやり方から脱却できる。
Helg と Stefan に大きな拍手を送りたい。
このバグのせいで arm64 では OpenBSD が X を起動するとフリーズしていたが、7.3 バージョンのフレームバッファ変更以降に生じた問題だった。
唯一の回避策はカーネルドライバを無効化することだったが、これでもっと多くの人が問題なく OpenBSD を試せるようになると思う。
OpenBSD はかなり前から Hypervisor.framework + QEMU の組み合わせでも動作していた。
これが実際の問題なら改善があるのか気になる。
逆に、ゲストは 4GiB RAM があると信じているが、実際にはアクセス時にだけホストが割り当てるという仕組みのほうがずっと単純だ。
VM はコンテナとはまったく別物だ。
他のハイパーバイザープロトコル(libvirtd、bhyve など)にも対応してほしい。
ホストが数学的に侵入不可能なほど隔離されるのか知りたい。鍵管理用途には理想的かもしれない。
適切なハードウェアがあれば十分に隔離できる。
関連内容は BSDCan 2025 の発表 でも扱われている。
RDP/VNC しか使えない状況なので、今回の改善でフレームバッファが動くようになることを期待している。