qemu-thunderbolt
Ветка QEMU, которая добавляет слой горячего подключения PCIe в стиле Thunderbolt. Устройства за ним остаются обычными PCI-устройствами QEMU; слой управляет тем, видит ли гость их подключёнными, и отправляет уведомления о горячем подключении.
- QEMU
- Thunderbolt
- PCIe
- macOS
- Статус
- Экспериментальный: пять коммитов поверх master QEMU от июля 2026 года, в ветке
tb-bus. Проверено на гостях macOS: обнаружение и удаление дисплея, горячее подключение и отключение NVMe, монтирование, запись, извлечение и повторное подключение USB-накопителя с сохранностью данных. - Лицензия
- GPL-2.0-or-later, как QEMU;
thunderbolt-vga.cсохраняет лицензию MIT кода stdvga, от которого он произошёл. - Платформы
- QEMU
qemu-system-x86_64с машиной q35; гости macOS.
Какую задачу решает
Некоторые гости не могут использовать прямое горячее подключение PCIe для устройства. Основная цель проверки — macOS: она видит устройство через видимый гостю слой Thunderbolt, даже когда прямое горячее подключение PCIe того же устройства недоступно. Тогда реальные и виртуальные устройства можно добавлять в работающий гость и удалять из него.
Основные возможности
thunderbolt-root-port: корневой порт PCIe со своей шинойthunderbolt-bus; его свойствоconnectedотключает и снова подключает весь порт.thunderbolt-pcie-pci-bridge: мост PCIe–PCI для туннелируемых PCI-устройств, с ACPI-свойствами, относящимися к Thunderbolt.thunderbolt-vga: совместимый с stdvga дисплей с горячим подключением; обычное устройствоVGAне изменено и по-прежнему не подключается на ходу.- Примеры для дисплея, USB-накопителя за контроллером xHCI и NVMe-диска — всё из монитора QEMU.
- qtest для горячего подключения дисплея и документация в
docs/specs.
Как это работает
Гость стартует на машине q35 со своим обычным загрузочным дисплеем и пустым thunderbolt-root-port. В мониторе 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
Требования
- QEMU, собранный из ветки
tb-busрепозитория. - Тип машины q35; в примерах используется
qemu-system-x86_64. - Загрузочный дисплей остаётся обычным
VGA; дисплей Thunderbolt добавляется после загрузки.
Эта страница кратко пересказывает README и документацию репозитория по состоянию на октябрь 2026 года. Первоисточник — сам репозиторий.