qemu-thunderbolt
QEMU에 Thunderbolt 방식의 PCIe 핫플러그 계층을 추가하는 브랜치입니다. 그 뒤의 장치는 일반 QEMU PCI 장치로 남고, 이 계층이 게스트에게 장치가 연결된 것으로 보일지를 제어하며 핫플러그 알림을 보냅니다.
- QEMU
- Thunderbolt
- PCIe
- macOS
- 상태
- 실험 단계: 2026년 7월 QEMU master 위에 올린 커밋 다섯 개로,
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와 문서를 요약한 것입니다. 정확한 정보는 저장소 자체를 기준으로 합니다.