방금 서비스를 시작했습니다. 사이트와 서비스는 아직 다듬는 중이라 부정확한 내용이나 미흡한 점이 있을 수 있습니다. 미리 양해 부탁드립니다. 오류를 발견하셨거나 예상대로 작동하지 않는 부분이 있나요? 알려 주시면 빠르게 고치겠습니다.

← 전체 프로젝트
KO
TAKT 밖의 작업

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와 문서를 요약한 것입니다. 정확한 정보는 저장소 자체를 기준으로 합니다.