TAKTのほかに
qemu-thunderbolt
QEMUにThunderbolt風のPCIeホットプラグ層を追加するブランチです。その配下のデバイスは通常のQEMU PCIデバイスのままで、この層がゲストから見た接続状態を制御し、ホットプラグの通知を送ります。
- QEMU
- Thunderbolt
- PCIe
- macOS
- ステータス
- 実験段階:2026年7月時点のQEMU masterの上に5つのコミットを重ねたもので、
tb-busブランチにあります。macOSゲストで検証済みです:ディスプレイの認識と取り外し、NVMeのホットプラグと取り外し、USBストレージのマウント、書き込み、イジェクト、再接続(データは保持)。 - ライセンス
- QEMUと同じくGPL-2.0-or-laterです。
thunderbolt-vga.cは派生元のstdvgaコードのMITライセンスを引き継いでいます。 - プラットフォーム
- QEMU
qemu-system-x86_64のq35マシン。macOSゲスト。
解決する課題
ゲストによっては、あるデバイスに直接のPCIeホットプラグを使えません。主な検証対象はmacOSです。同じエンドポイントを直接PCIeホットプラグできない場合でも、ゲストから見えるThunderbolt層を通じてデバイスを認識できます。これにより、稼働中のゲストに実デバイスや仮想デバイスを追加し、取り外せるようになります。
主な機能
thunderbolt-root-port:専用のthunderbolt-busを持つPCIeルートポート。connectedプロパティでポート全体を切断・再接続できます。thunderbolt-pcie-pci-bridge:トンネリングされたPCIエンドポイント用のPCIe-PCIブリッジで、Thunderbolt関連のACPIプロパティを持ちます。thunderbolt-vga:ホットプラグ可能なstdvga互換ディスプレイ。通常のVGAデバイスは変更されず、ホットプラグ不可のままです。- ディスプレイ、xHCIコントローラ配下のUSBストレージ、NVMeドライブの例。いずれもQEMUモニターから操作します。
- ディスプレイのホットプラグを確認するqtestと、
docs/specsのドキュメント。
仕組み
ゲストは通常の起動用ディスプレイと空のthunderbolt-root-portを持つq35マシンで起動します。QEMUモニターでは、device_addがポートのバスにエンドポイントを接続し、device_delが取り外します。qom-set … connected falseとtrueでポート全体の抜き差しができます。ゲストが見るACPIの記述とPCIeホットプラグのシグナリングはルートポートが提供し、エンドポイントのデバイスモデルは変更されません。
(qemu) device_add thunderbolt-vga,id=tbvga0,bus=tbrp0,addr=0x00 (qemu) device_del tbvga0 (qemu) qom-set /machine/peripheral/tbrp0 connected false
要件
- リポジトリの
tb-busブランチからビルドしたQEMU。 - q35マシンタイプ。例では
qemu-system-x86_64を使います。 - 起動用ディスプレイは通常の
VGAのままにし、Thunderboltディスプレイは起動後に追加します。
このページは、2026年10月時点のリポジトリのREADMEとドキュメントの要約です。正式な情報源はリポジトリそのものです。