サービスを開始したばかりです。サイトとサービスはまだ改善中のため、不正確な点や不具合があるかもしれません。あらかじめお詫び申し上げます。誤りや想定どおりに動かない点にお気づきですか? ご連絡ください。すぐに修正します。

← プロジェクト一覧
JA
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とドキュメントの要約です。正式な情報源はリポジトリそのものです。