QEMU
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
QEMU는 다양한 컴퓨터 아키텍처를 에뮬레이션하는 자유-오픈 소스 소프트웨어이다. 사용자 모드 및 시스템 에뮬레이션 모드를 제공하며, 여러 운영 체제를 지원한다. QEMU는 가상 머신을 위한 하이퍼바이저 지원도 제공하며, KVM, Xen, HAXM 등의 가속기를 활용하여 성능을 향상시킨다. 또한, 다양한 디스크 이미지 형식을 지원하며, QEMU 객체 모델(QOM)을 통해 동적으로 유형을 등록하고 객체를 인스턴스화하는 기능을 제공한다.
더 읽어볼만한 페이지
- X86 에뮬레이터 - 도스박스
도스박스는 윈도우 XP 이후 DOS 기반 게임 실행을 위해 개발된 자유 소프트웨어로, CPU, 그래픽 및 사운드 하드웨어를 에뮬레이션하며, 명령어 줄 인터페이스를 통해 설정하거나, 스크린샷 캡처 및 동영상 녹화 기능을 지원한다. - 안드로이드 에뮬레이션 소프트웨어 - RetroArch
RetroArch는 Libretro API를 통해 다양한 에뮬레이터 코어들을 로드하여 여러 게임 콘솔, 아케이드, PC 게임을 에뮬레이트하는 오픈 소스 프론트엔드이다. - 안드로이드 에뮬레이션 소프트웨어 - EPSXe
ePSXe는 PlayStation 1 게임을 에뮬레이션하는 소프트웨어로, 다양한 플랫폼 지원 및 플러그인 설정을 통한 사용자 환경 최적화가 가능하며 지속적인 업데이트를 통해 기능이 개선되어 왔다. - 리눅스 에뮬레이션 소프트웨어 - MAME
MAME은 니콜라 살모리아가 개발하여 다양한 아케이드 게임 하드웨어를 에뮬레이트하여 PC 등에서 구동 가능하게 하는 에뮬레이터로, 정확성을 중시하며 BSD-3-Clause 및 GPL-2.0 이상의 이중 라이선스를 채택했고 한국에서는 '마메'라고 불린다. - 리눅스 에뮬레이션 소프트웨어 - EPSXe
ePSXe는 PlayStation 1 게임을 에뮬레이션하는 소프트웨어로, 다양한 플랫폼 지원 및 플러그인 설정을 통한 사용자 환경 최적화가 가능하며 지속적인 업데이트를 통해 기능이 개선되어 왔다.
| QEMU - [IT 관련 정보]에 관한 문서 | |
|---|---|
| QEMU 정보 | |
| 개요 | |
| 종류 | 하이퍼바이저, 에뮬레이터 |
| 개발자 | QEMU 팀: 피터 메이델(Peter Maydell) 외 |
| 저자 | 파브리스 벨라드(Fabrice Bellard) |
| 지원 운영체제 | 리눅스, 마이크로소프트 윈도우, macOS 및 기타 유닉스 플랫폼 |
| 프로그래밍 언어 | C |
| 라이선스 | GPL-2.0-only |
| 웹사이트 | QEMU 공식 웹사이트 |
| 최신 릴리스 | |
| 최신 버전 | 9.0.0 |
| 최신 릴리스 날짜 | 2024년 4월 23일 |
| 최신 프리뷰 버전 | 해당 정보 없음 |
| 최신 프리뷰 날짜 | 해당 정보 없음 |
| 기타 | |
| 플랫폼 | 크로스 플랫폼 |
| 지원 상태 | 개발 중 |
| 유형 | TYPEⅡ 하이퍼바이저 |
![]() | |
![]() | |
2. 운영 모드
QEMU는 다음과 같은 여러 운영 모드를 가지고 있다:[5]
; 사용자 모드 에뮬레이션
: 이 모드에서 QEMU는 다른 명령어 집합으로 컴파일된 단일 리눅스, 다윈/맥 오에스 X 프로세스를 실행할 수 있다.[5] 시스템 콜은 엔디언과 32/64비트 미일치를 위해 주소 변환 된다.[58][5] 와인과 DOSEMU는 QEMU의 주요 대상이다.[58] 빠른 크로스 컴파일 및 크로스 디버깅이 사용자 모드 에뮬레이션의 주요 대상이다.[5]
: 사용자 에뮬레이션 환경은 비특권 모드의 에뮬레이션 및 리눅스의 시스템 콜 명령을 네이티브 시스템 콜로 변환한다. 이 환경은 내장 기기의 크로스 컴파일이나 비x86 환경에서 Wine을 구동하기 위해 사용 가능하다.
; 시스템 에뮬레이션
: QEMU는 프로세서와 가상 주변 기기들을 포함한 완전한 컴퓨터 시스템을 에뮬레이트하는 시스템 에뮬레이션 모드를 제공한다.[5] 이 모드는 한 컴퓨터에서 여러 개의 가상 컴퓨터를 가상으로 호스팅하는 데 사용될 수 있다.[5] QEMU는 리눅스, Solaris, Microsoft Windows, DOS, BSD 등 다양한 게스트 운영 체제를 부팅할 수 있으며,[6] x86, x86-64, MIPS, ARMv7, ARMv8, PowerPC, RISC-V, SPARC, ETRAX CRIS, MicroBlaze 등 여러 명령어 집합 에뮬레이션을 지원한다.[6]
: 시스템 에뮬레이션 환경은 주로 Windows나 리눅스 등의 운영 체제(OS)를 구동하는 것을 목적으로 이용되며, OS의 동작 확인용으로 QEMU를 동봉하는 경우가 있다. 휴대 전화용 플랫폼 Android의 SDK에도 이용되고 있다. QEMU의 특징은 중간 코드를 거쳐 동적 컴파일을 수행함으로써, x86, PowerPC, SPARC, ARM 등 많은 호스트 CPU에 대해 많은 타겟 CPU를 고속으로 에뮬레이션할 수 있다는 점이다.[58] x86 시스템 에뮬레이션 환경에서는 BIOS의 동작 환경은 Bochs와 호환된다.
: QEMU는 다음과 같은 다양한 PC (PC/AT 호환기) 하드웨어를 에뮬레이트한다:
:* 인텔 440FX 호스트 PCI 브리지 및 PIIX3 PCI to ISA 브리지
:* 인텔 Q35 및 ICH9 칩셋
:* Cirrus CLGD 5446 PCI VGA 카드 또는 Bochs VESA 확장 기능을 갖춘 더미 VGA 카드 (하드웨어 레벨, 모든 비표준 모드 포함).
:* Red Hat QXL VGA 또는 VirtIO GPU
:* 시뮬레이션된 VMware SVGA II (버그 포함)
:* PS/2 마우스와 키보드
:* 하드 디스크 및 CD-ROM 지원을 갖춘 2개의 PCI IDE 인터페이스
:* SATA 컨트롤러
:* SCSI 컨트롤러
:* SAS 컨트롤러
:* 플로피 디스크
:* ISA 네트워크 어댑터
:* 인텔 E1000 네트워크 어댑터
:* Realtek 8139 네트워크 어댑터
:* VirtIO 블록 스토리지/SCSI/네트워크
:* 시리얼 포트
:* Creative Sound Blaster 16 사운드 카드
:* ENSONIQ AudioPCI ES1370 사운드 카드
:* Adlib(OPL2) - Yamaha YM3812 호환 칩
:* 인텔 82801AA AC97 호환 사운드 카드
:* HD 오디오 사운드 카드
:* CS4231A 호환 사운드 카드
:* PCI UHCI USB 컨트롤러 및 가상 USB 허브.
: QEMU는 -s 옵션을 지정하면 tun 장치를 통해 호스트상의 GDB에 연결하여 가상 머신의 동작 상황을 감시하는 등, 인서킷 에뮬레이터(ICE)와 같은 사용도 가능하다. 또한, QEMU는 VNC 및 SPICE 서버의 기능이 내장되어 있어 원격 머신 제어가 가능하다.
: macOS용으로는, [https://apps.apple.com/jp/app/utm-virtual-machines/id1538878817?mt=12 UTM Virtual Machines]라는 GPU 가상화 지원 기능까지 갖춘 고속 구현이 있다.
; 하이퍼바이저 지원
: QEMU는 가상 머신을 위한 가상 머신 관리자(VMM) 또는 장치 에뮬레이션 백엔드 역할을 하는 하이퍼바이저 지원 모드를 제공한다.[7] 이 프로젝트는 리눅스의 KVM을 비롯하여, Xen, 애플의 HVF, 윈도우의 WHPX 및 NetBSD의 NVMM 등 다양한 하이퍼바이저를 지원한다.[7] 과거에는 액셀러레이터로 kqemu가 제공되었으나, 버전 0.11에서 폐지되고 KVM으로 대체되었다. kqemu는 QEMU를 더 빠르게 동작시키는 모듈로, x86 또는 x64 (64비트 CPU)를 지원하며 커널 모드의 가상화 모니터로 동작했다.
: 대응하는 가상화 지원 기능이 적어, VMware, VirtualBox보다 저속으로 평가되기도 한다.
2. 1. 사용자 모드 에뮬레이션
QEMU는 다른 명령어 집합으로 컴파일된 단일 리눅스, 다윈/맥 오에스 X 프로세스를 실행할 수 있다.[5] 시스템 콜은 엔디언과 32/64비트 미일치를 위해 주소 변환 된다.[58][5] 와인과 DOSEMU는 QEMU의 주요 대상이다.[58] 빠른 크로스 컴파일 및 크로스 디버깅이 사용자 모드 에뮬레이션의 주요 대상이다.[5]사용자 에뮬레이션 환경은 비특권 모드의 에뮬레이션 및 리눅스의 시스템 콜 명령을 네이티브 시스템 콜로 변환한다. 이 환경은 내장 기기의 크로스 컴파일이나 비x86 환경에서 Wine을 구동하기 위해 사용 가능하다.
2. 2. 시스템 에뮬레이션
QEMU는 프로세서와 가상 주변 기기들을 포함한 완전한 컴퓨터 시스템을 에뮬레이트하는 시스템 에뮬레이션 모드를 제공한다.[5] 이 모드는 한 컴퓨터에서 여러 개의 가상 컴퓨터를 가상으로 호스팅하는 데 사용될 수 있다.[5] QEMU는 리눅스, Solaris, Microsoft Windows, DOS, BSD 등 다양한 게스트 운영 체제를 부팅할 수 있으며,[6] x86, x86-64, MIPS, ARMv7, ARMv8, PowerPC, RISC-V, SPARC, ETRAX CRIS, MicroBlaze 등 여러 명령어 집합 에뮬레이션을 지원한다.[6]시스템 에뮬레이션 환경은 주로 Windows나 리눅스 등의 운영 체제(OS)를 구동하는 것을 목적으로 이용되며, OS의 동작 확인용으로 QEMU를 동봉하는 경우가 있다. 휴대 전화용 플랫폼 Android의 SDK에도 이용되고 있다. QEMU의 특징은 중간 코드를 거쳐 동적 컴파일을 수행함으로써, x86, PowerPC, SPARC, ARM 등 많은 호스트 CPU에 대해 많은 타겟 CPU를 고속으로 에뮬레이션할 수 있다는 점이다.[58] x86 시스템 에뮬레이션 환경에서는 BIOS의 동작 환경은 Bochs와 호환된다.
QEMU는 다음과 같은 다양한 PC (PC/AT 호환기) 하드웨어를 에뮬레이트한다:
- 인텔 440FX 호스트 PCI 브리지 및 PIIX3 PCI to ISA 브리지
- 인텔 Q35 및 ICH9 칩셋
- Cirrus CLGD 5446 PCI VGA 카드 또는 Bochs VESA 확장 기능을 갖춘 더미 VGA 카드 (하드웨어 레벨, 모든 비표준 모드 포함).
- Red Hat QXL VGA 또는 VirtIO GPU
- 시뮬레이션된 VMware SVGA II (버그 포함)
- PS/2 마우스와 키보드
- 하드 디스크 및 CD-ROM 지원을 갖춘 2개의 PCI IDE 인터페이스
- SATA 컨트롤러
- SCSI 컨트롤러
- SAS 컨트롤러
- 플로피 디스크
- ISA 네트워크 어댑터
- 인텔 E1000 네트워크 어댑터
- Realtek 8139 네트워크 어댑터
- VirtIO 블록 스토리지/SCSI/네트워크
- 시리얼 포트
- Creative Sound Blaster 16 사운드 카드
- ENSONIQ AudioPCI ES1370 사운드 카드
- Adlib(OPL2) - Yamaha YM3812 호환 칩
- 인텔 82801AA AC97 호환 사운드 카드
- HD 오디오 사운드 카드
- CS4231A 호환 사운드 카드
- PCI UHCI USB 컨트롤러 및 가상 USB 허브.
QEMU는 -s 옵션을 지정하면 tun 장치를 통해 호스트상의 GDB에 연결하여 가상 머신의 동작 상황을 감시하는 등, 인서킷 에뮬레이터(ICE)와 같은 사용도 가능하다. 또한, QEMU는 VNC 및 SPICE 서버의 기능이 내장되어 있어 원격 머신 제어가 가능하다.
macOS용으로는, [https://apps.apple.com/jp/app/utm-virtual-machines/id1538878817?mt=12 UTM Virtual Machines]라는 GPU 가상화 지원 기능까지 갖춘 고속 구현이 있다.
2. 3. 하이퍼바이저 지원
QEMU는 가상 머신을 위한 가상 머신 관리자(VMM) 또는 장치 에뮬레이션 백엔드 역할을 하는 하이퍼바이저 지원 모드를 제공한다.[7] 이 프로젝트는 리눅스의 KVM을 비롯하여, Xen, 애플의 HVF, 윈도우의 WHPX 및 NetBSD의 NVMM 등 다양한 하이퍼바이저를 지원한다.[7] 과거에는 액셀러레이터로 kqemu가 제공되었으나, 버전 0.11에서 폐지되고 KVM으로 대체되었다. kqemu는 QEMU를 더 빠르게 동작시키는 모듈로, x86 또는 x64 (64비트 CPU)를 지원하며 커널 모드의 가상화 모니터로 동작했다.대응하는 가상화 지원 기능이 적어, VMware, VirtualBox보다 저속으로 평가되기도 한다.
3. 기능
QEMU는 다양한 아키텍처의 에뮬레이션을 지원한다.[8] IA-32 (x86) PC, AMD64 PC, MIPS R4000, 선 SPARC sun4m, 선 SPARC sun4u, ARM 개발 보드 (Integrator/CP, Versatile/PB), SH4 SHIX 보드, 파워피씨 (PReP 및 파워 매킨토시), ETRAX CRIS 아키텍처를 지원하며, 호스트 시스템과 에뮬레이트 시스템 두 곳에서 다른 아키텍처를 지원한다. 가상 머신은 사용자의 하드 디스크, CD-ROM 드라이브, 네트워크 카드, 오디오 인터페이스, 그리고 USB 장치를 포함한 많은 유형의 실제 호스트 하드웨어와 인터페이스할 수 있다.
QEMU는 Copy-On-Write 디스크 이미지 포맷을 추가하여, 수 기가바이트의 가상 드라이브를 선언할 수 있으며, 이 드라이브의 디스크 이미지는 실제로 사용되는 만큼만 용량을 차지한다. 오버레이 이미지 추가로 게스트 운영 체제의 스냅샷을 유지하고 별도의 이미지 파일에 변경 사항을 기록할 수 있다. 게스트 운영 체제에 문제가 생기면 해당 스냅샷으로 되돌릴 수 있다.
다른 아키텍처에서 돌아가는 리눅스 바이너리 파일 실행을 지원하며, 컴퓨터의 상태를 저장하고 저장한 상태로 되돌아갈 수 있다. 가상 네트워크 카드 에뮬레이션을 지원하며, SMP를 실행하는 여러 CPU를 시뮬레이션하는 것이 가능하다. 게스트 운영 체제는 패치나 수정이 필요 없다.
QEMU는 네트워크 주소를 변환하여 호스트 시스템의 연결을 공유하는 (다른 모델의) 네트워크 카드를 에뮬레이션할 수 있으며, 이를 통해 게스트는 호스트와 동일한 네트워크를 사용할 수 있다. 가상 네트워크 카드는 또한 다른 QEMU 인스턴스의 네트워크 카드 또는 로컬 TAP 인터페이스에 연결할 수 있다.
QEMU는 호스트 및 게스트 시스템이 통신할 수 있도록 여러 서비스를 통합한다. 통합 SMB 서버 및 네트워크 포트 리디렉션 (가상 머신에 대한 들어오는 연결 허용)이 있다. 또한 부트로더 없이 리눅스 커널을 부팅할 수 있다.
QEMU는 호스트 시스템에 그래픽 출력 방식이 있는지 여부에 의존하지 않는다. 통합된 VNC 서버를 통해 게스트 OS 화면에 액세스할 수 있다.
명령 줄 도구를 통해 X11을 실행하지 않고도 QEMU를 완전히 제어할 수 있다. 가상으로 구현된 컴퓨터를 통합 VNC 서버를 거쳐 원격으로 제어할 수 있다. USB 태블릿을 지원하며, 관리자 권한은 따로 필요하지 않다.
QEMU는 CPU뿐만 아니라, 각종 주변 하드웨어도 에뮬레이트하고 있다. 다음은 QEMU가 구현하고 있는 PC (PC/AT 호환기) 하드웨어를 나타낸다.
- 인텔 440FX 호스트 PCI 브리지 및 PIIX3 PCI to ISA 브리지
- 인텔 Q35 및 ICH9 칩셋
- Cirrus CLGD 5446 PCI VGA 카드 또는 Bochs VESA 확장 기능을 갖춘 더미 VGA 카드 (하드웨어 레벨, 모든 비표준 모드 포함).
- Red Hat QXL VGA 또는 VirtIO GPU
- 시뮬레이션된 VMware SVGA II (버그 포함)
- PS/2 마우스와 키보드
- 하드 디스크 및 CD-ROM 지원을 갖춘 2개의 PCI IDE 인터페이스
- SATA 컨트롤러
- SCSI 컨트롤러
- SAS 컨트롤러
- 플로피 디스크
- ISA 네트워크 어댑터
- 인텔 E1000 네트워크 어댑터
- Realtek 8139 네트워크 어댑터
- VirtIO 블록 스토리지/SCSI/네트워크
- 시리얼 포트
- Creative Sound Blaster 16 사운드 카드
- ENSONIQ AudioPCI ES1370 사운드 카드
- Adlib(OPL2) - Yamaha YM3812 호환 칩
- 인텔 82801AA AC97 호환 사운드 카드
- HD 오디오 사운드 카드
- CS4231A 호환 사운드 카드
- PCI UHCI USB 컨트롤러 및 가상 USB 허브.
4. 가상 구현 시스템
QEMU는 CPU를 제외한 다양한 시스템 구성 요소를 가상으로 구현한다.[59]
- i440FX 호스트 PCI 브리지, PIIX3 PCI to ISA 브리지
- 시러스 CLGD 5446 PCI VGA 카드 또는 Bochs VESA 확장을 지원하는 더미 VGA 카드 (비표준 모드를 포함하는 하드웨어 수준).
- PS/2 마우스 및 키보드
- 하드 디스크와 CD-ROM을 지원하는 2 개의 PCI IDE 인터페이스
- 플로피 디스크
- NE2000 PCI 네트워크 어댑터
- 시리얼 포트
- 애드립(OPL2) - 야마하 YM3812 호환 칩
- 크리에이티브 사운드 블라스터 16 사운드 카드
- 엔소닉 오디오PCI ES1370 사운드 카드
- 그라비스 울트라사운드
- 인텔 HD 오디오[59]
- PCI UHCI USB 컨트롤러 및 가상 USB 허브.
QEMU는 전체 기계를 에뮬레이션하는 시스템 에뮬레이션과 리눅스 사용자랜드를 에뮬레이션하는 사용자 에뮬레이션 환경을 제공한다. 시스템 에뮬레이션 환경은 주로 Windows나 리눅스 등의 OS 구동을 목적으로 이용되며, OS 동작 확인용으로 QEMU를 동봉하기도 한다. Android SDK에도 이용된다.
과거에는 액셀러레이터로 kqemu가 제공되었으나 버전 0.11에서 폐지되고 KVM으로 대체되었다. kqemu는 QEMU를 더 빠르게 동작시키는 모듈로, x86 또는 x64 (64비트 CPU)를 지원하며 커널 모드의 가상화 모니터로 동작했다.
QEMU는 CPU뿐만 아니라, 다음의 PC 하드웨어를 에뮬레이트한다.
- 인텔 440FX 호스트 PCI 브리지 및 PIIX3 PCI to ISA 브리지
- 인텔 Q35 및 ICH9 칩셋
- Cirrus CLGD 5446 PCI VGA 카드 또는 Bochs VESA 확장 기능을 갖춘 더미 VGA 카드 (하드웨어 레벨, 모든 비표준 모드 포함).
- Red Hat QXL VGA 또는 VirtIO GPU
- 시뮬레이션된 VMware SVGA II (버그 포함)
- PS/2 마우스와 키보드
- 하드 디스크 및 CD-ROM 지원을 갖춘 2개의 PCI IDE 인터페이스
- SATA 컨트롤러
- SCSI 컨트롤러
- SAS 컨트롤러
- 플로피 디스크
- ISA 네트워크 어댑터
- 인텔 E1000 네트워크 어댑터
- Realtek 8139 네트워크 어댑터
- VirtIO 블록 스토리지/SCSI/네트워크
- 시리얼 포트
- Creative Sound Blaster 16 사운드 카드
- ENSONIQ AudioPCI ES1370 사운드 카드
- Adlib(OPL2) - Yamaha YM3812 호환 칩
- 인텔 82801AA AC97 호환 사운드 카드
- HD 오디오 사운드 카드
- CS4231A 호환 사운드 카드
- PCI UHCI USB 컨트롤러 및 가상 USB 허브.
QEMU는 -s 옵션을 통해 GDB에 연결하여 가상 머신 동작 상황을 감시하는 인서킷 에뮬레이터 (ICE)와 같은 사용도 가능하다. 또한, QEMU는 VNC 및 SPICE 서버 기능이 내장되어 원격 머신 제어가 가능하다. VMware, VirtualBox보다 저속으로 평가되기도 한다.
5. 가속기
파브리스 벨라르는 KQEMU (QEMU 가속기)라는 이름으로 리눅스 커널 모듈을 작성하여 i386 플랫폼에서 i386 에뮬레이션 속도를 눈에 띄게 개선했다.[60] 이는 사용자 모드 코드를 호스트 컴퓨터의 CPU에서 바로 실행하고 커널 모드와 리얼 모드 코드에만 주변 기기와 프로세서의 에뮬레이션을 사용함으로써 가능했다. KQEMU는 또 호스트 CPU에서 커널 모드 코드의 일부를 실행하는 커널 에뮬레이션 모드를 지원했다. KQEMU는 호스트 CPU가 하드웨어 지원 가상화를 지원하지 않더라도 많은 게스트 운영 체제의 코드를 실행할 수 있었다.[61]
KQEMU는 원래 무료로 배포되긴 했지만, 클로즈드 소스 제품으로 공개되었다. 그러다가 2007년 2월 5일에 버전 1.3.0pre10이 공개되면서[60] GNU 일반 공중 라이선스를 통해 소스가 공개되었다.[11] KQEMU는 Win4Lin Pro Desktop 제품을 통해 Win4Lin으로 라이선스되어 왔다.
0.12.0 판 이후 QEMU에서 기본으로 확장 메모리를 지원(large memory supported)하면서 KQEMU 지원을 중단하였다.[12]
QVM86은 당시 폐쇄 소스였던 KQEMU를 대체하는 GNU GPLv2 라이선스 드롭인이었다. QVM86 개발자들은 2007년 1월에 개발을 중단했다.
커널 기반 가상 머신( ''KVM'')은 KQEMU와 QVM86에 대한 지원이 중단된 후, QEMU와 함께 사용하기 위한 리눅스 기반 하드웨어 지원 가상화 솔루션으로 대부분 대체되었다. QEMU는 또한 ARM 아키텍처 및 MIPS 아키텍처와 같은 다른 아키텍처에서도 KVM을 사용할 수 있다.[13]
인텔의 하드웨어 가속 실행 관리자 (''HAXM'')는 NetBSD, Linux, Windows 및 macOS에서 인텔 VT를 사용하여 x86 기반 하드웨어 지원 가상화를 위한 KVM의 오픈 소스 대안이다.[14] 인텔은 주로 안드로이드 개발을 위해 QEMU와 함께 사용하도록 권장한다.[15] 버전 2.9.0부터 공식 QEMU는 ''Hax''라는 이름으로 HAXM을 지원한다.[16]
QEMU는 다음과 같은 가속기를 지원한다:[16]
- ''hvf'', 인텔 VT 기반의 애플 .
- ''whpx'', 인텔 VT 또는 AMD-V 기반의 마이크로소프트의 윈도우 하이퍼바이저 플랫폼.
- ''tcg'', QEMU 자체의 Tiny Code Generator. 이것이 기본값이다.
과거에는 액셀러레이터로 kqemu가 제공되었으나 버전 0.11에서 폐지되었으며, 이는 KVM이 되었다. kqemu는 QEMU를 더 빠르게 동작시키는 모듈로 제공되었다.
5. 1. KQEMU
페브리스 벨라르(Fabrice Bellard)는 KQEMU (QEMU 가속기)라는 이름으로 리눅스 커널 모듈을 작성하여 i386 플랫폼에서 i386 에뮬레이션 속도를 눈에 띄게 개선했다.[60] 이는 사용자 모드 코드를 호스트 컴퓨터의 CPU에서 바로 실행하고 커널 모드와 리얼 모드 코드에만 주변 기기와 프로세서의 에뮬레이션을 사용함으로써 가능했다. KQEMU는 또 호스트 CPU에서 커널 모드 코드의 일부를 실행하는 커널 에뮬레이션 모드를 지원했다. KQEMU는 호스트 CPU가 하드웨어 지원 가상화를 지원하지 않더라도 많은 게스트 운영 체제의 코드를 실행할 수 있었다.[61]KQEMU는 원래 무료로 배포되긴 했지만, 클로즈드 소스 제품으로 공개되었다. 그러다가 2007년 2월 5일에 버전 1.3.0pre10이 공개되면서[60] GNU 일반 공중 라이선스를 통해 소스가 공개되었다.[11] KQEMU는 Win4Lin Pro Desktop 제품을 통해 Win4Lin으로 라이선스되어 왔다.
0.12.0 판 이후 QEMU에서 기본으로 확장 메모리를 지원(large memory supported)하면서 KQEMU 지원을 중단하였다.[12]
QVM86은 당시 폐쇄 소스였던 KQEMU를 대체하는 GNU GPLv2 라이선스 드롭인이었다. QVM86 개발자들은 2007년 1월에 개발을 중단했다.
커널 기반 가상 머신( ''KVM'')은 KQEMU와 QVM86에 대한 지원이 중단된 후, QEMU와 함께 사용하기 위한 리눅스 기반 하드웨어 지원 가상화 솔루션으로 대부분 대체되었다. QEMU는 또한 ARM 아키텍처 및 MIPS 아키텍처와 같은 다른 아키텍처에서도 KVM을 사용할 수 있다.[13]
인텔의 하드웨어 가속 실행 관리자 (''HAXM'')는 NetBSD, Linux, Windows 및 macOS에서 인텔 VT를 사용하여 x86 기반 하드웨어 지원 가상화를 위한 KVM의 오픈 소스 대안이다.[14] 인텔은 주로 안드로이드 개발을 위해 QEMU와 함께 사용하도록 권장한다.[15] 버전 2.9.0부터 공식 QEMU는 ''Hax''라는 이름으로 HAXM을 지원한다.[16]
QEMU는 다음과 같은 가속기를 지원한다:[16]
- ''hvf'', 인텔 VT 기반의 애플의 .
- ''whpx'', 인텔 VT 또는 AMD-V 기반의 마이크로소프트의 윈도우 하이퍼바이저 플랫폼.
- ''tcg'', QEMU 자체의 Tiny Code Generator. 이것이 기본값이다.
5. 2. QVM86
QVM86은 QEMU 에뮬레이터에 x86 가상화 기능을 제공하는 리눅스 커널 모듈이었다. 가상화는 CPU 보호 계획을 사용하여 권한 이벤트를 가로채거나 가상으로 구현하여 에뮬레이션 코드가 호스트 CPU에 네이티브로 실행할 수 있게 도와준다. GNU GPLv2 라이선스로 공개되었다. QVM86은 원래 GPL 라이선스의 클로즈드 소스 KQEMU의 대안으로 개발되었다. QVM86 개발자들은 버추얼박스의 공개로 인해 2007년 1월 21일에 개발을 중단하였다.KQEMU는 리눅스 커널 모듈로, 파브리스 벨라르가 작성했으며, 동일한 CPU 아키텍처를 가진 플랫폼에서 x86 또는 x86-64 게스트의 에뮬레이션을 가속화했다. 사용자 모드 코드를 호스트 컴퓨터의 CPU에서 직접 실행하고, 커널 모드 및 실제 모드 코드에 대해서만 프로세서 및 주변 장치 에뮬레이션을 사용했다. KQEMU는 호스트 CPU가 하드웨어 지원 가상화를 지원하지 않더라도 많은 게스트 운영 체제에서 코드를 실행할 수 있었다. KQEMU는 초기에는 폐쇄 소스 제품이었지만, 2007년 2월부터 GNU 일반 공중 사용 허가서를 따르게 되었다.[11] QEMU 버전 0.12.0부터는 대용량 메모리를 지원하여 KQEMU와 호환되지 않게 되었고,[12] 최신 QEMU 릴리스에서는 KQEMU에 대한 지원이 완전히 제거되었다.
커널 기반 가상 머신(KVM)은 KQEMU와 QVM86에 대한 지원이 중단된 후, QEMU와 함께 사용하기 위한 리눅스 기반 하드웨어 지원 가상화 솔루션으로 대부분 대체되었다.
5. 3. KVM (Kernel-based Virtual Machine)
KQEMU는 파브리스 벨라르가 작성한 리눅스 커널 모듈로, 동일 CPU 아키텍처에서 x86 또는 x86-64 게스트 에뮬레이션을 가속화했다.[11] 사용자 모드 코드를 호스트 CPU에서 직접 실행하고, 커널 모드 및 실제 모드 코드에 대해서만 프로세서 및 주변 장치 에뮬레이션을 사용했다.[11] KQEMU는 처음에 무료 폐쇄 소스 제품이었으나, 2007년 2월부터 GNU 일반 공중 사용 허가서를 따르도록 재허가되었다.[11] QEMU 0.12.0부터 대용량 메모리 지원으로 KQEMU와 호환되지 않게 되었고,[12] 최신 QEMU 릴리스에서는 KQEMU 지원이 완전히 제거되었다.QVM86은 KQEMU를 대체하는 GNU GPLv2 라이선스 드롭인이었으나, 개발자들은 2007년 1월에 개발을 중단했다.
커널 기반 가상 머신(KVM)은 KQEMU와 QVM86 지원 중단 이후, QEMU와 함께 사용하기 위한 리눅스 기반 하드웨어 지원 가상화 솔루션으로 대체되었다. QEMU는 ARM 아키텍처, MIPS 아키텍처 등 다른 아키텍처에서도 KVM을 사용할 수 있다.[13]
인텔의 하드웨어 가속 실행 관리자 (HAXM)는 NetBSD, Linux, Windows 및 macOS에서 인텔 VT를 사용하는 x86 기반 하드웨어 지원 가상화를 위한 KVM의 오픈 소스 대안이다.[14] 인텔은 주로 안드로이드 개발을 위해 QEMU와 함께 사용하도록 권장하며,[15] QEMU 2.9.0부터 HAXM을 지원한다.[16]
QEMU는 또한 다음과 같은 가속기를 지원한다:[16]
- ''hvf'': 인텔 VT 기반의 애플 .
- ''whpx'': 인텔 VT 또는 AMD-V 기반의 마이크로소프트 윈도우 하이퍼바이저 플랫폼.
- ''tcg'': QEMU 자체의 Tiny Code Generator. (기본값)
5. 4. 기타 가속기
KQEMU는 파브리스 벨라르가 작성한 리눅스 커널 모듈로, 동일 CPU 아키텍처를 가진 플랫폼에서 x86 또는 x86-64 게스트의 에뮬레이션을 가속화했다.[11] 이는 사용자 모드 코드를 호스트 컴퓨터의 CPU에서 직접 실행하고, 커널 모드 및 실제 모드 코드에 대해서만 프로세서 및 주변 장치 에뮬레이션을 사용하는 방식으로 작동했다. KQEMU는 호스트 CPU가 하드웨어 지원 가상화를 지원하지 않아도 많은 게스트 운영 체제에서 코드를 실행할 수 있었다. KQEMU는 초기에는 무료 폐쇄 소스 제품이었지만, 2007년 2월 버전 1.3.0pre10부터 GNU 일반 공중 사용 허가서를 따르도록 재허가되었다.[11] QEMU 버전 0.12.0부터 대용량 메모리를 지원하여 KQEMU와 호환되지 않게 되었고,[12] 최신 QEMU 릴리스에서는 KQEMU에 대한 지원이 완전히 제거되었다.QVM86은 폐쇄 소스였던 KQEMU를 대체하는 GNU GPLv2 라이선스 드롭인이었으나, 개발자들은 2007년 1월에 개발을 중단했다.
커널 기반 가상 머신(KVM)은 KQEMU와 QVM86에 대한 지원이 중단된 후, QEMU와 함께 사용하기 위한 리눅스 기반 하드웨어 지원 가상화 솔루션으로 대부분 대체되었다. QEMU는 ARM 아키텍처 및 MIPS 아키텍처와 같은 다른 아키텍처에서도 KVM을 사용할 수 있다.[13]
인텔의 하드웨어 가속 실행 관리자 (HAXM)는 NetBSD, Linux, Windows 및 macOS에서 인텔 VT를 사용하여 x86 기반 하드웨어 지원 가상화를 위한 KVM의 오픈 소스 대안이다.[14] 인텔은 주로 안드로이드 개발을 위해 QEMU와 함께 사용하도록 권장한다.[15] QEMU는 버전 2.9.0부터 ''Hax''라는 이름으로 HAXM을 지원한다.[16]
QEMU는 또한 다음과 같은 가속기를 지원한다:[16]
- ''hvf'': 인텔 VT 기반의 애플 .
- ''whpx'': 인텔 VT 또는 AMD-V 기반의 마이크로소프트 윈도우 하이퍼바이저 플랫폼.
- ''tcg'': QEMU 자체의 Tiny Code Generator. 이것이 기본값이다.
과거에는 액셀러레이터로 kqemu가 제공되었으나 버전 0.11에서 폐지되었으며, 이는 KVM이 되었다. kqemu는 QEMU를 더 빠르게 동작시키는 모듈로 제공되었다.
6. 지원되는 디스크 이미지 형식
QEMU는 다음의 디스크 이미지 형식을 지원한다.[17]
- macOS 범용 디스크 이미지 포맷(`.dmg`) – 읽기 전용
- Bochs – 읽기 전용
- 리눅스 cloop – 읽기 전용
- QEMU 카피 온 라이트(`.qcow2`, `.qed`, `.qcow`, `.cow`)
- VirtualBox 가상 디스크 이미지(`.vdi`)
- Virtual PC 가상 하드 디스크(`.vhd`)
- 가상 VFAT
- VMware 가상 머신 디스크(`.vmdk`)
- 원시 이미지(`.img`) – 디스크의 섹터별 내용을 포함
- CD/DVD 이미지(`.iso`) – 광 디스크의 섹터별 내용을 포함 (예: 라이브 운영체제 부팅)[18]
7. QEMU 객체 모델 (QOM)
QEMU 객체 모델(QOM)은 사용자가 만들 수 있는 유형을 등록하고 해당 유형에서 객체를 인스턴스화하는 프레임워크를 제공한다.[19]
QOM은 다음과 같은 기능을 제공한다.
- 동적으로 유형을 등록하는 시스템
- 유형의 단일 상속 지원
- 상태 비저장 인터페이스의 다중 상속
8. 병렬 에뮬레이션
QEMU를 사용하는 가상화 솔루션은 여러 개의 가상 CPU를 병렬로 실행할 수 있다. 사용자 모드 에뮬레이션의 경우, QEMU는 에뮬레이션된 스레드를 호스트 스레드에 매핑한다. 전체 시스템 에뮬레이션을 위해 QEMU는 에뮬레이션된 각 가상 CPU(vCPU)에 대해 호스트 스레드를 실행할 수 있다. 이는 현재 ARM, Alpha, HP-PA, PowerPC, RISC-V, s390x, x86, Xtensa를 지원하도록 업데이트된 게스트에 따라 달라진다. 그렇지 않은 경우, 단일 스레드가 모든 가상 CPU(vCPU)를 에뮬레이션하는 데 사용되며, 각 vCPU를 라운드 로빈 방식으로 실행한다.
9. 통합
QEMU는 전체 기계를 에뮬레이션하는 시스템 에뮬레이션 환경과, 리눅스의 사용자랜드를 에뮬레이션하는 사용자 에뮬레이션 환경을 가지고 있다.
사용자 에뮬레이션 환경은 비특권 모드의 에뮬레이션 및 리눅스의 시스템 콜 명령을 네이티브 시스템 콜로 변환한다. 이 환경은 내장 기기의 크로스 컴파일이나 비x86 환경에서 Wine을 구동하기 위해 사용 가능하다.
시스템 에뮬레이션 환경은 주로 Windows나 리눅스 등의 운영 체제(OS)를 구동하는 것을 목적으로 이용되며, OS의 동작 확인용으로 QEMU를 동봉하는 경우가 있다. 휴대 전화용 플랫폼 Android의 SDK에도 이용되고 있다. 유사한 프로젝트로는 Bochs나 PearPC 등이 있지만 QEMU의 특징으로, 중간 코드를 거쳐 동적 컴파일을 수행함으로써, x86, PowerPC, SPARC, ARM 등 많은 호스트 CPU에 대해 많은 타겟 CPU를 고속으로 에뮬레이션할 수 있다는 점이 꼽힌다. x86 시스템 에뮬레이션 환경에서는 BIOS의 동작 환경은 Bochs와 호환된다.
과거에는 액셀러레이터로 kqemu가 제공되었다. 버전 0.11에서 폐지되었으며, 이는 KVM이 되었다. kqemu는 QEMU를 더 빠르게 동작시키는 모듈로 제공되었다. kqemu는 x86 또는 x64 (64비트 CPU)를 지원하며, 커널 모드의 가상화 모니터로 동작한다. 이를 사용할 때는, 유사한 소프트웨어인 VMware와 마찬가지로, 호스트 CPU가 실행할 수 없는 코드를 타겟에서 실행할 수 없다. 리눅스 2.4 및 2.6에서 제공되고 있다. FreeBSD 및 Windows NT/2000/2003/XP에서는 실험적인 제공이 이루어지고 있다. 이 부분은 HAL을 사용하여 작성된 바이너리 오브젝트와 지원되는 플랫폼용 HAL의 소스로 제공되며, 상업적인 배포에는 제한이 있다.
QEMU는 CPU뿐만 아니라, 각종 주변 하드웨어도 에뮬레이트하고 있다. 다음은 QEMU가 구현하고 있는 PC (PC/AT 호환기) 하드웨어이다.
- 인텔 440FX 호스트 PCI 브리지 및 PIIX3 PCI to ISA 브리지
- 인텔 Q35 및 ICH9 칩셋
- Cirrus CLGD 5446 PCI VGA 카드 또는 Bochs VESA 확장 기능을 갖춘 더미 VGA 카드 (하드웨어 레벨, 모든 비표준 모드 포함).
- Red Hat QXL VGA 또는 VirtIO GPU
- 시뮬레이션된 VMware SVGA II (버그 포함)
- PS/2 마우스와 키보드
- 하드 디스크 및 CD-ROM 지원을 갖춘 2개의 PCI IDE 인터페이스
- SATA 컨트롤러
- SCSI 컨트롤러
- SAS 컨트롤러
- 플로피 디스크
- ISA 네트워크 어댑터
- 인텔 E1000 네트워크 어댑터
- Realtek 8139 네트워크 어댑터
- VirtIO 블록 스토리지/SCSI/네트워크
- 시리얼 포트
- Creative Sound Blaster 16 사운드 카드
- ENSONIQ AudioPCI ES1370 사운드 카드
- Adlib(OPL2) - Yamaha YM3812 호환 칩
- 인텔 82801AA AC97 호환 사운드 카드
- HD 오디오 사운드 카드
- CS4231A 호환 사운드 카드
- PCI UHCI USB 컨트롤러 및 가상 USB 허브.
또한 QEMU는 -s 옵션을 지정하면 tun 장치를 통해 호스트상의 GDB에 연결하여 가상 머신의 동작 상황을 감시하는 등, 인서킷 에뮬레이터(ICE)와 같은 사용도 가능하다. 그 외에, QEMU는 VNC 및 SPICE 서버의 기능이 내장되어 있으며, 이 기능을 통해 원격 머신 제어가 가능하다.
대응하는 가상화 지원 기능이 적어, VMware, VirtualBox보다 저속으로 평가된다.
macOS용으로는, [https://apps.apple.com/jp/app/utm-virtual-machines/id1538878817?mt=12 UTM Virtual Machines]라는 GPU 가상화 지원 기능까지 갖춘 고속 구현이 있다.
=== VirtualBox ===
VirtualBox는 2007년 1월에 처음 출시되었으며, QEMU의 가상 하드웨어 장치 일부를 사용했고, QEMU 기반의 동적 재컴파일러를 내장했다.[20] KQEMU와 마찬가지로, VirtualBox는 VMM(가상 머신 관리자)을 통해 거의 모든 게스트 코드를 호스트에서 네이티브로 실행하며, 재컴파일러는 폴백 메커니즘으로만 사용한다.[20] 예를 들어, 게스트 코드가 리얼 모드에서 실행될 때 사용된다.[20] 또한 VirtualBox는 재컴파일을 최소화하기 위해 내장된 디스어셈블러를 사용하여 많은 코드 분석 및 패치를 수행했다. VirtualBox는 특정 기능을 제외하고 GPL 하에 무료로 제공되는 오픈 소스 소프트웨어이다. 대응하는 가상화 지원 기능이 적어, VMware, VirtualBox보다 저속으로 평가된다.
=== Xen-HVM ===
Xen은 가상 머신 모니터로서, 인텔 VT-x 또는 AMD-V 하드웨어 x86 가상화 확장 기능과 ARM Cortex-A7 및 Cortex-A15 가상화 확장 기능을 사용하여 HVM(하드웨어 가상 머신) 모드로 실행할 수 있다.[21] 이는 반가상화된 장치 대신 실제 가상 하드웨어 세트가 DomU에 노출되어 실제 장치 드라이버를 사용할 수 있음을 의미한다.
Xen-HVM은 가상 머신(VM)에 I/O 가상화를 제공하기 위해 QEMU 프로젝트를 기반으로 한 장치 에뮬레이션을 활용한다. 하드웨어는 Dom0에서 백엔드로 실행되는 QEMU "장치 모델" 데몬을 통해 에뮬레이션된다. 하이퍼바이저는 가상 CPU를 완전히 관리하며, QEMU가 메모리 맵 I/O 에뮬레이션을 처리하는 동안 필요에 따라 가상 CPU를 일시 중지한다.
QEMU는 CPU 에뮬레이터, 에뮬레이트된 장치, 일반 장치, 머신 설명, 사용자 인터페이스 및 디버거 등 여러 구성 요소를 포함한다.[22] QEMU의 에뮬레이트된 장치와 일반 장치는 I/O 가상화를 위한 장치 모델을 구성한다.[22] QEMU는 CPU뿐만 아니라, 각종 주변 하드웨어도 에뮬레이트하고 있다. 다음은 QEMU가 구현하고 있는 PC (PC/AT 호환기) 하드웨어이다.
- 인텔 440FX 호스트 PCI 브리지 및 PIIX3 PCI to ISA 브리지
- 인텔 Q35 및 ICH9 칩셋
- Cirrus CLGD 5446 PCI VGA 카드 또는 Bochs VESA 확장 기능을 갖춘 더미 VGA 카드 (하드웨어 레벨, 모든 비표준 모드 포함).
- Red Hat QXL VGA 또는 VirtIO GPU
- 시뮬레이션된 VMware SVGA II (버그 포함)
- PS/2 마우스와 키보드
- 하드 디스크 및 CD-ROM 지원을 갖춘 2개의 PCI IDE 인터페이스
- SATA 컨트롤러
- SCSI 컨트롤러
- SAS 컨트롤러
- 플로피 디스크
- ISA 네트워크 어댑터
- 인텔 E1000 네트워크 어댑터
- Realtek 8139 네트워크 어댑터
- VirtIO 블록 스토리지/SCSI/네트워크
- 시리얼 포트
- Creative Sound Blaster 16 사운드 카드
- ENSONIQ AudioPCI ES1370 사운드 카드
- Adlib(OPL2) - Yamaha YM3812 호환 칩
- 인텔 82801AA AC97 호환 사운드 카드
- HD 오디오 사운드 카드
- CS4231A 호환 사운드 카드
- PCI UHCI USB 컨트롤러 및 가상 USB 허브.
ACPI, APIC을 지원한다.[23]
=== KVM ===
커널 기반 가상 머신(KVM)은 FreeBSD 및 리눅스 커널 모듈로, 사용자 공간 프로그램이 다양한 프로세서의 하드웨어 지원 가상화 기능에 접근할 수 있도록 하며, QEMU는 이를 통해 x86, PowerPC 및 S/390 게스트에 대한 가상화를 제공할 수 있다. 대상 아키텍처가 호스트 아키텍처와 동일한 경우 QEMU는 가속과 같은 KVM의 특정 기능을 활용할 수 있다. 과거에는 액셀러레이터로 kqemu가 제공되었으나 버전 0.11에서 폐지되었으며, 이는 KVM이 되었다.
=== Win4Lin Pro Desktop ===
2005년 초, Win4Lin은 QEMU 및 KQEMU의 '조정된' 버전을 기반으로 하고 NT 버전의 Windows를 호스팅하는 Win4Lin Pro Desktop을 출시했다.[24] 2006년 6월, Win4Lin은 동일한 코드 기반을 기반으로 Win4Lin Virtual Desktop Server를 출시했다. Win4Lin Virtual Desktop Server는 Linux 서버에서 씬 클라이언트에 Microsoft Windows 세션을 제공한다.[24]
2006년 9월, Win4Lin은 Win4BSD Pro Desktop의 출시와 함께 회사 이름을 [https://web.archive.org/web/20110613051010/http://www.vbridges.com/home.php Virtual Bridges]로 변경한다고 발표했다. Win4BSD Pro Desktop은 FreeBSD 및 PC-BSD로 포팅된 제품이다. 2007년 5월 Win4Solaris Pro Desktop 및 Win4Solaris Virtual Desktop Server 출시와 함께 Solaris 지원이 이어졌다.[25]
=== SerialICE ===
SerialICE는 QEMU 기반의 펌웨어 디버깅 도구로, QEMU 내에서 시스템 펌웨어를 실행하면서 호스트 시스템과의 시리얼 연결을 통해 실제 하드웨어에 접근한다. 이는 하드웨어 인서킷 에뮬레이터(ICE)를 저렴하게 대체할 수 있다. 또한 QEMU는 -s 옵션을 지정하면 tun 장치를 통해 호스트상의 GDB에 연결하여 가상 머신의 동작 상황을 감시하는 등, 인서킷 에뮬레이터(ICE)와 같은 사용도 가능하다.
=== WinUAE ===
WinUAE는 버전 3.0.0에서 QEMU PPC 코어를 사용하여 CyberStorm PPC 및 Blizzard 603e 보드 지원을 도입했다.[27]
=== Unicorn ===
유니콘(Unicorn)은 QEMU의 "TCG" CPU 에뮬레이터를 기반으로 하는 CPU 에뮬레이션 프레임워크이다. QEMU와 달리 유니콘은 CPU에만 집중하며, 어떠한 주변 장치 에뮬레이션도 제공하지 않는다. 실행 파일이나 시스템 이미지의 컨텍스트 외부에서 원시 바이너리 코드를 직접 실행할 수 있다. 유니콘은 스레드 안전하며 여러 바인딩 및 계측 인터페이스를 가지고 있다.
=== Limbo x86 PC Emulator ===
Limbo는 Android용 x86 및 ARM64 기반 QEMU 가상 머신이다.[29] Linux와 DOS 에뮬레이션을 위해 설계되었지만, Microsoft Windows를 에뮬레이션할 수 있는 Android용 가상 머신 소프트웨어 중 하나이다.[30] 다른 QEMU 기반 에뮬레이터와 달리, 가상 머신의 설정을 사용자 인터페이스로 설정할 수 있어, 사용자가 명령어를 입력할 필요가 없다.
Limbo는 Android 운영 체제 사용이 많은 인도, 말레이시아, 태국과 같은 아시아 개발도상국에서 YouTube를 통해 더 인기가 있다.[31] 2019년 2월과 2020년 12월 사이에 알 수 없는 이유로 Google Play 스토어에서 제거되었지만, 여전히 개발자 웹사이트에서 APK (Android 패키지) 설치를 통해 설치할 수 있다.[32]
Limbo는 오디오 품질 및 재생 관련 문제가 있는 경향이 있다. 2024년 현재까지 이러한 문제에 대한 해결책은 발견되지 않았다.[33] 전반적으로 Limbo는 다른 가상 머신 소프트웨어보다 덜 알려져 있으며, 이로 인해 문제 해결에 대한 정보가 부족하다.
Limbo x86에서 기본 Android 키보드가 할 수 없는 많은 키보드 기능(예: Ctrl, Alt, Del 및 기능 키)을 사용하려면 "Hacker's Keyboard"라는 응용 프로그램을 설치해야 한다.[34] Hacker's Keyboard는 APK 파일을 통해 설치하는 것이 좋다. Google Play 버전은 최신 버전의 Android에서 작동하지 않는다고 명시되어 있다.[35]
9. 1. VirtualBox
VirtualBox는 2007년 1월에 처음 출시되었으며, QEMU의 가상 하드웨어 장치 일부를 사용했고, QEMU 기반의 동적 재컴파일러를 내장했다.[20] KQEMU와 마찬가지로, VirtualBox는 VMM(가상 머신 관리자)을 통해 거의 모든 게스트 코드를 호스트에서 네이티브로 실행하며, 재컴파일러는 폴백 메커니즘으로만 사용한다.[20] 예를 들어, 게스트 코드가 리얼 모드에서 실행될 때 사용된다.[20] 또한 VirtualBox는 재컴파일을 최소화하기 위해 내장된 디스어셈블러를 사용하여 많은 코드 분석 및 패치를 수행했다. VirtualBox는 특정 기능을 제외하고 GPL 하에 무료로 제공되는 오픈 소스 소프트웨어이다. 대응하는 가상화 지원 기능이 적어, VMware, VirtualBox보다 저속으로 평가된다.9. 2. Xen-HVM
Xen은 가상 머신 모니터로서, 인텔 VT-x 또는 AMD-V 하드웨어 x86 가상화 확장 기능과 ARM Cortex-A7 및 Cortex-A15 가상화 확장 기능을 사용하여 HVM(하드웨어 가상 머신) 모드로 실행할 수 있다.[21] 이는 반가상화된 장치 대신 실제 가상 하드웨어 세트가 DomU에 노출되어 실제 장치 드라이버를 사용할 수 있음을 의미한다.Xen-HVM은 가상 머신(VM)에 I/O 가상화를 제공하기 위해 QEMU 프로젝트를 기반으로 한 장치 에뮬레이션을 활용한다. 하드웨어는 Dom0에서 백엔드로 실행되는 QEMU "장치 모델" 데몬을 통해 에뮬레이션된다. 하이퍼바이저는 가상 CPU를 완전히 관리하며, QEMU가 메모리 맵 I/O 에뮬레이션을 처리하는 동안 필요에 따라 가상 CPU를 일시 중지한다.
QEMU는 CPU 에뮬레이터, 에뮬레이트된 장치, 일반 장치, 머신 설명, 사용자 인터페이스 및 디버거 등 여러 구성 요소를 포함한다.[22] QEMU의 에뮬레이트된 장치와 일반 장치는 I/O 가상화를 위한 장치 모델을 구성한다.[22] QEMU는 CPU뿐만 아니라, 각종 주변 하드웨어도 에뮬레이트하고 있다. 다음은 QEMU가 구현하고 있는 PC (PC/AT 호환기) 하드웨어이다.
- 인텔 440FX 호스트 PCI 브리지 및 PIIX3 PCI to ISA 브리지
- 인텔 Q35 및 ICH9 칩셋
- Cirrus CLGD 5446 PCI VGA 카드 또는 Bochs VESA 확장 기능을 갖춘 더미 VGA 카드 (하드웨어 레벨, 모든 비표준 모드 포함).
- Red Hat QXL VGA 또는 VirtIO GPU
- 시뮬레이션된 VMware SVGA II (버그 포함)
- PS/2 마우스와 키보드
- 하드 디스크 및 CD-ROM 지원을 갖춘 2개의 PCI IDE 인터페이스
- SATA 컨트롤러
- SCSI 컨트롤러
- SAS 컨트롤러
- 플로피 디스크
- ISA 네트워크 어댑터
- 인텔 E1000 네트워크 어댑터
- Realtek 8139 네트워크 어댑터
- VirtIO 블록 스토리지/SCSI/네트워크
- 시리얼 포트
- Creative Sound Blaster 16 사운드 카드
- ENSONIQ AudioPCI ES1370 사운드 카드
- Adlib(OPL2) - Yamaha YM3812 호환 칩
- 인텔 82801AA AC97 호환 사운드 카드
- HD 오디오 사운드 카드
- CS4231A 호환 사운드 카드
- PCI UHCI USB 컨트롤러 및 가상 USB 허브.
ACPI, APIC을 지원한다.[23]
9. 3. KVM
커널 기반 가상 머신(KVM)은 FreeBSD 및 리눅스 커널 모듈로, 사용자 공간 프로그램이 다양한 프로세서의 하드웨어 지원 가상화 기능에 접근할 수 있도록 하며, QEMU는 이를 통해 x86, PowerPC 및 S/390 게스트에 대한 가상화를 제공할 수 있다. 대상 아키텍처가 호스트 아키텍처와 동일한 경우 QEMU는 가속과 같은 KVM의 특정 기능을 활용할 수 있다. 과거에는 액셀러레이터로 kqemu가 제공되었으나 버전 0.11에서 폐지되었으며, 이는 KVM이 되었다.9. 4. Win4Lin Pro Desktop
2005년 초, Win4Lin은 QEMU 및 KQEMU의 '조정된' 버전을 기반으로 하고 NT 버전의 Windows를 호스팅하는 Win4Lin Pro Desktop을 출시했다.[24] 2006년 6월, Win4Lin은 동일한 코드 기반을 기반으로 Win4Lin Virtual Desktop Server를 출시했다. Win4Lin Virtual Desktop Server는 Linux 서버에서 씬 클라이언트에 Microsoft Windows 세션을 제공한다.[24]2006년 9월, Win4Lin은 Win4BSD Pro Desktop의 출시와 함께 회사 이름을 [https://web.archive.org/web/20110613051010/http://www.vbridges.com/home.php Virtual Bridges]로 변경한다고 발표했다. Win4BSD Pro Desktop은 FreeBSD 및 PC-BSD로 포팅된 제품이다. 2007년 5월 Win4Solaris Pro Desktop 및 Win4Solaris Virtual Desktop Server 출시와 함께 Solaris 지원이 이어졌다.[25]
9. 5. SerialICE
SerialICE는 QEMU 기반의 펌웨어 디버깅 도구로, QEMU 내에서 시스템 펌웨어를 실행하면서 호스트 시스템과의 시리얼 연결을 통해 실제 하드웨어에 접근한다. 이는 하드웨어 인서킷 에뮬레이터(ICE)를 저렴하게 대체할 수 있다. 또한 QEMU는 -s 옵션을 지정하면 tun 장치를 통해 호스트상의 GDB에 연결하여 가상 머신의 동작 상황을 감시하는 등, 인서킷 에뮬레이터 (ICE)와 같은 사용도 가능하다.9. 6. WinUAE
WinUAE는 버전 3.0.0에서 QEMU PPC 코어를 사용하여 CyberStorm PPC 및 Blizzard 603e 보드 지원을 도입했다.[27]9. 7. Unicorn
유니콘(Unicorn)은 QEMU의 "TCG" CPU 에뮬레이터를 기반으로 하는 CPU 에뮬레이션 프레임워크이다. QEMU와 달리 유니콘은 CPU에만 집중하며, 어떠한 주변 장치 에뮬레이션도 제공하지 않는다. 실행 파일이나 시스템 이미지의 컨텍스트 외부에서 원시 바이너리 코드를 직접 실행할 수 있다. 유니콘은 스레드 안전하며 여러 바인딩 및 계측 인터페이스를 가지고 있다.9. 8. Limbo x86 PC Emulator
Limbo는 Android용 x86 및 ARM64 기반 QEMU 가상 머신이다.[29] Linux와 DOS 에뮬레이션을 위해 설계되었지만, Microsoft Windows를 에뮬레이션할 수 있는 Android용 가상 머신 소프트웨어 중 하나이다.[30] 다른 QEMU 기반 에뮬레이터와 달리, 가상 머신의 설정을 사용자 인터페이스로 설정할 수 있어, 사용자가 명령어를 입력할 필요가 없다.Limbo는 Android 운영 체제 사용이 많은 인도, 말레이시아, 태국과 같은 아시아 개발도상국에서 YouTube를 통해 더 인기가 있다.[31] 2019년 2월과 2020년 12월 사이에 알 수 없는 이유로 Google Play 스토어에서 제거되었지만, 여전히 개발자 웹사이트에서 APK (Android 패키지) 설치를 통해 설치할 수 있다.[32]
Limbo는 오디오 품질 및 재생 관련 문제가 있는 경향이 있다. 2024년 현재까지 이러한 문제에 대한 해결책은 발견되지 않았다.[33] 전반적으로 Limbo는 다른 가상 머신 소프트웨어보다 덜 알려져 있으며, 이로 인해 문제 해결에 대한 정보가 부족하다.
Limbo x86에서 기본 Android 키보드가 할 수 없는 많은 키보드 기능(예: Ctrl, Alt, Del 및 기능 키)을 사용하려면 "Hacker's Keyboard"라는 응용 프로그램을 설치해야 한다.[34] Hacker's Keyboard는 APK 파일을 통해 설치하는 것이 좋다. Google Play 버전은 최신 버전의 Android에서 작동하지 않는다고 명시되어 있다.[35]
10. 에뮬레이트된 하드웨어 플랫폼
QEMU는 시스템 에뮬레이션과 사용자 에뮬레이션 환경을 제공한다. 사용자 에뮬레이션은 비특권 모드의 에뮬레이션 및 리눅스 시스템 콜 명령을 네이티브 시스템 콜로 변환하며, 크로스 컴파일이나 비x86 환경에서 Wine을 구동하는 데 사용된다. 시스템 에뮬레이션은 주로 OS 동작 확인을 목적으로 하며, 안드로이드 SDK에도 이용된다. QEMU는 중간 코드를 거쳐 동적 컴파일을 수행하여 x86, PowerPC, SPARC, ARM 등 다양한 호스트 CPU에서 많은 타겟 CPU를 고속으로 에뮬레이션할 수 있다.
과거에는 액셀러레이터로 kqemu가 제공되었으나, 버전 0.11에서 폐지되고 KVM으로 대체되었다. kqemu는 QEMU를 더 빠르게 동작시키는 모듈로 제공되었으며, 커널 모드의 가상화 모니터로 동작했다.
QEMU는 CPU뿐만 아니라 다양한 주변 하드웨어도 에뮬레이트한다. 여기에는 인텔 440FX 호스트 PCI 브리지, PIIX3 PCI to ISA 브리지, 인텔 Q35 및 ICH9 칩셋, Cirrus CLGD 5446 PCI VGA 카드, Bochs VESA 확장 기능을 갖춘 더미 VGA 카드, Red Hat QXL VGA, VirtIO GPU, 시뮬레이션된 VMware SVGA II, PS/2 마우스와 키보드, 하드 디스크 및 CD-ROM 지원을 갖춘 2개의 PCI IDE 인터페이스, SATA 컨트롤러, SCSI 컨트롤러, SAS 컨트롤러, 플로피 디스크, ISA 네트워크 어댑터, 인텔 E1000 네트워크 어댑터, Realtek 8139 네트워크 어댑터, VirtIO 블록 스토리지/SCSI/네트워크, 시리얼 포트, Creative Sound Blaster 16 사운드 카드, ENSONIQ AudioPCI ES1370 사운드 카드, Adlib(OPL2) - Yamaha YM3812 호환 칩, 인텔 82801AA AC97 호환 사운드 카드, HD 오디오 사운드 카드, CS4231A 호환 사운드 카드, PCI UHCI USB 컨트롤러 및 가상 USB 허브가 포함된다.
QEMU는 -s 옵션을 지정하면 tun 장치를 통해 호스트상의 GDB에 연결하여 가상 머신의 동작 상황을 감시하는 인서킷 에뮬레이터 (ICE)와 같은 사용도 가능하다. 또한, QEMU는 VNC 및 SPICE 서버 기능이 내장되어 있어 원격 머신 제어가 가능하다.
대응하는 가상화 지원 기능이 적어 VMware, VirtualBox보다 저속으로 평가되기도 한다. macOS용으로는 GPU 가상화 지원 기능까지 갖춘 고속 구현인 UTM Virtual Machines가 있다.
10. 1. x86
QEMU는 i386 및 x86-64 아키텍처를 에뮬레이트할 수 있다.[36] CPU[36] (또한 구성 가능하며 2018년 3월 3일 기준으로 샌디 브릿지,[37] 아이비 브릿지,[38] 하스웰,[39] 브로드웰[40][41] 및 스카이레이크[39]를 포함한 다수의 인텔 CPU 모델을 에뮬레이트할 수 있습니다)와 다음과 같은 장치들이 에뮬레이트된다:- CD-ROM/DVD-ROM 드라이브( ISO 이미지 사용)
- 플로피 디스크 드라이브
- ATA 컨트롤러 또는 SATA AHCI 컨트롤러
- 그래픽 카드: ''Cirrus CLGD 5446 PCI VGA'' 카드, Bochs-VBE를 사용한 표준 VGA 그래픽 카드, Red Hat QXL VGA
- 네트워크 카드: Realtek 8139C+ PCI, NE2000 PCI, NE2000 ISA, PCnet, E1000 (PCI 인텔 기가비트 이더넷) 및 E1000E (PCIe 인텔 기가비트 이더넷)[42][43]
- NVMe 디스크 인터페이스
- 시리얼 포트
- 병렬 포트
- PC 스피커
- i440FX/PIIX3 또는 Q35/ICH9 칩셋
- PS/2 마우스 및 키보드
- SCSI 컨트롤러: LSI MegaRAID SAS 1078, LSI53C895A, AMD PCscsi 및 Tekram DC-390 컨트롤러에서 발견되는 NCR53C9x
- 사운드 카드: 사운드 블라스터 16, AudioPCI ES1370, ICH AC'97, Gravis Ultrasound, 및 인텔 HD 오디오[44]
- 워치독 타이머 (인텔 6300 ESB PCI 또는 iB700 ISA)
- USB 1.x/2.x/3.x 컨트롤러 (UHCI, EHCI, xHCI)
- USB 장치: 오디오, 블루투스 동글, HID (키보드/마우스/태블릿), MTP, 직렬 인터페이스, CAC 스마트 카드 리더, 스토리지 (벌크 전송 전용 및 USB 연결 SCSI), 와콤 태블릿
- 반가상화된 VirtIO 장치: 블록 장치, 네트워크 카드, SCSI 컨트롤러, 비디오 장치, 직렬 인터페이스, 풍선 드라이버, 9pfs 파일 시스템 드라이버
- 반가상화된 Xen 장치: 블록 장치, 네트워크 카드, 콘솔, 프레임버퍼 및 입력 장치
QEMU는 버전 0.12부터 SeaBIOS를 BIOS 구현으로 사용한다. SeaBIOS의 VGA BIOS 구현도 버전 2.0.0부터 사용된다. QEMU용 UEFI 펌웨어는 OVMF이다.[45]
시스템 에뮬레이션 환경은 주로 Windows나 리눅스 등의 운영 체제 (OS)를 구동하는 것을 목적으로 이용되며, OS의 동작 확인용으로 QEMU를 동봉하는 경우가 있다. 휴대 전화용 플랫폼 Android의 SDK에도 이용되고 있다.
과거에는 액셀러레이터로 kqemu가 제공되었다. 버전 0.11에서 폐지되었으며, 이는 KVM이 되었다. kqemu는 QEMU를 더 빠르게 동작시키는 모듈로 제공되었다.
QEMU는 CPU뿐만 아니라, 다양한 주변 하드웨어도 에뮬레이트한다. QEMU가 구현하고 있는 PC (PC/AT 호환기) 하드웨어에는 인텔 440FX 호스트 PCI 브리지 및 PIIX3 PCI to ISA 브리지, 인텔 Q35 및 ICH9 칩셋, Cirrus CLGD 5446 PCI VGA 카드 또는 Bochs VESA 확장 기능을 갖춘 더미 VGA 카드, Red Hat QXL VGA 또는 VirtIO GPU, 시뮬레이션된 VMware SVGA II , PS/2 마우스와 키보드, 하드 디스크 및 CD-ROM 지원을 갖춘 2개의 PCI IDE 인터페이스, SATA 컨트롤러, SCSI 컨트롤러, SAS 컨트롤러, 플로피 디스크, ISA 네트워크 어댑터, 인텔 E1000 네트워크 어댑터, Realtek 8139 네트워크 어댑터, VirtIO 블록 스토리지/SCSI/네트워크, 시리얼 포트, Creative Sound Blaster 16 사운드 카드, ENSONIQ AudioPCI ES1370 사운드 카드, Adlib(OPL2) - Yamaha YM3812 호환 칩, 인텔 82801AA AC97 호환 사운드 카드, HD 오디오 사운드 카드, CS4231A 호환 사운드 카드, PCI UHCI USB 컨트롤러 및 가상 USB 허브가 있다.
QEMU는 -s 옵션을 지정하면 tun 장치를 통해 호스트상의 GDB에 연결하여 가상 머신의 동작 상황을 감시하는 등, 인서킷 에뮬레이터 (ICE)와 같은 사용도 가능하다. 그 외에, QEMU는 VNC 및 SPICE 서버의 기능이 내장되어 있으며, 이 기능을 통해 원격 머신 제어가 가능하다.
대응하는 가상화 지원 기능이 적어, VMware, VirtualBox보다 저속으로 평가된다.
10. 2. PowerPC
QEMU는 다음과 같은 PowerMac 주변 장치를 에뮬레이트한다.- UniNorth PCI 브리지
- ''VESA Bochs Extensions''를 매핑하는 PCI-VGA 호환 그래픽 카드
- 하드 디스크 및 CD-ROM 지원을 갖춘 두 개의 PMAC-IDE 인터페이스
- NE2000 PCI 어댑터
- 비휘발성 RAM
- ADB 키보드 및 마우스를 사용한 VIA-CUDA
OpenBIOS가 펌웨어로 사용된다.
QEMU는 다음과 같은 PREP 주변 장치를 에뮬레이트한다.
- PCI 브리지
- ''VESA Bochs Extensions''를 갖춘 PCI VGA 호환 그래픽 카드
- 하드 디스크 및 CD-ROM 지원을 갖춘 두 개의 IDE 인터페이스
- 플로피 디스크 드라이브
- NE2000 네트워크 어댑터
- 직렬 인터페이스
- PREP 비휘발성 RAM
- PC 호환 키보드 및 마우스
PREP 타겟에서는 오픈 펌웨어 호환 BIOS인 ''Open Hack'Ware''가 사용된다.
QEMU는 다음 주변 장치를 사용하여 반가상화 sPAPR 인터페이스를 에뮬레이트할 수 있다.
- VirtIO 장치, VGA 호환 그래픽, USB 등에 액세스하기 위한 PCI 브리지
- 가상 I/O 네트워크 어댑터, SCSI 컨트롤러 및 직렬 인터페이스
- sPAPR 비휘발성 RAM
sPAPR 대상에서는 SLOF라고 하는 또 다른 Open-Firmware 호환 BIOS가 사용된다.
10. 3. ARM

QEMU는 NEON 확장을 포함하여 ARMv7 명령 집합(ARMv5TEJ까지)을 에뮬레이션한다.[46] Integrator/CP 보드, Versatile 베이스보드, RealView 에뮬레이션 베이스보드, XScale 기반 PDA, E PDA, 노키아 N800, 노키아 N810 인터넷 태블릿 등과 같은 전체 시스템을 에뮬레이션한다. QEMU는 또한 안드로이드 SDK의 일부인 안드로이드 에뮬레이터를 구동한다(최신 안드로이드 구현의 대부분은 ARM 기반). 삼성은 자사 Bada SDK 버전 2.0.0부터 에뮬레이션된 'Wave' 장치 개발을 지원하기 위해 QEMU를 선택했다.
1.5.0 및 1.6.0 버전에서는 삼성 Exynos 4210(듀얼 코어 Cortex-A9) 및 Versatile Express ARM Cortex-A9 ARM Cortex-A15가 에뮬레이션된다. 1.6.0 버전에서는 ARMv8(AArch64) 아키텍처의 32비트 명령어가 에뮬레이션되지만 64비트 명령어는 지원되지 않는다.
Xilinx Cortex A9 기반 Zynq SoC에는 다음 구성 요소가 포함되어 있다.
- Zynq-7000 ARM Cortex-A9 CPU
- Zynq-7000 ARM Cortex-A9 MPCore
- 트리플 타이머 카운터
- DDR 메모리 컨트롤러
- DMA 컨트롤러(PL330)
- 정적 메모리 컨트롤러(NAND/NOR 플래시)
- SD/SDIO 주변 장치 컨트롤러(SDHCI)
- Zynq 기가비트 이더넷 컨트롤러
- USB 컨트롤러(EHCI – 호스트 지원만 해당)
- Zynq UART 컨트롤러
- SPI 및 QSPI 컨트롤러
- I2C 컨트롤러
10. 3. 1. ARM32
|thumb|QEMU가 페도라 8의 ARM 포트로 부팅된 모습QEMU는 NEON 확장을 포함하여 ARMv7 명령 집합 (ARMv5TEJ까지)을 에뮬레이션한다.[46] Integrator/CP 보드, Versatile 베이스보드, RealView 에뮬레이션 베이스보드, XScale 기반 PDA, E PDA, 노키아 N800, 노키아 N810 인터넷 태블릿 등과 같은 전체 시스템을 에뮬레이션한다. QEMU는 또한 안드로이드 SDK의 일부인 안드로이드 에뮬레이터를 구동한다(최신 안드로이드 구현의 대부분은 ARM 기반). 삼성은 자사 Bada SDK 버전 2.0.0부터 에뮬레이션된 'Wave' 장치 개발을 지원하기 위해 QEMU를 선택했다.
1.5.0 및 1.6.0 버전에서는 삼성 Exynos 4210(듀얼 코어 Cortex-A9) 및 Versatile Express ARM Cortex-A9 ARM Cortex-A15가 에뮬레이션된다. 1.6.0 버전에서는 ARMv8(AArch64) 아키텍처의 32비트 명령어가 에뮬레이션되지만 64비트 명령어는 지원되지 않는다.
Xilinx Cortex A9 기반 Zynq SoC에는 다음 구성 요소가 포함되어 있다.
- Zynq-7000 ARM Cortex-A9 CPU
- Zynq-7000 ARM Cortex-A9 MPCore
- 트리플 타이머 카운터
- DDR 메모리 컨트롤러
- DMA 컨트롤러(PL330)
- 정적 메모리 컨트롤러(NAND/NOR 플래시)
- SD/SDIO 주변 장치 컨트롤러(SDHCI)
- Zynq 기가비트 이더넷 컨트롤러
- USB 컨트롤러(EHCI – 호스트 지원만 해당)
- Zynq UART 컨트롤러
- SPI 및 QSPI 컨트롤러
- I2C 컨트롤러
10. 3. 2. ARM64
QEMU는 ARM Cortex-A53 및 ARM Cortex-A72와 같이 일반적으로 리눅스를 실행하는 64비트 "A-프로파일" CPU를 에뮬레이션할 수 있다. 이를 통해 라즈베리 파이 3 및 4를 에뮬레이션할 수 있다.[47]10. 4. SPARC
QEMU는 32비트 및 64비트 SPARC 아키텍처를 모두 지원한다.JavaStation의 펌웨어가 버전 0.8.1로 업데이트되었을 때,[48] PROM 대체품인 Proll은 버전 0.8.2에서 OpenBIOS로 대체되었다.
QEMU는 CPU뿐만 아니라, 각종 주변 하드웨어도 에뮬레이트하고 있다.
==== SPARC32 ====
QEMU는 다음과 같은 ''sun4m/sun4c/sun4d'' 주변 장치를 에뮬레이션한다.
- IOMMU 또는 IO-UNIT
- TCX 프레임 버퍼 (그래픽 카드)
- Lance (Am7990) 이더넷
- 비휘발성 RAM M48T02/M48T08
- 슬레이브 I/O: 타이머, 인터럽트 컨트롤러, Zilog 직렬 포트, 키보드 및 전원/리셋 로직
- 하드 디스크 및 CD-ROM을 지원하는 ESP SCSI 컨트롤러
- 플로피 드라이브 (SS-600MP에는 없음)
- CS4231 사운드 장치 (SS-5에만 있으며 아직 작동하지 않음)
==== SPARC64 ====
QEMU는 다음과 같은 주변 장치를 갖춘 Sun4u (UltraSPARC PC와 유사한 머신), Sun4v (T1 PC와 유사한 머신) 또는 일반 Niagara (T1) 머신을 에뮬레이션한다.
- UltraSparc IIi APB PCI 브리지
- VESA Bochs 확장을 갖춘 PCI VGA 호환 카드
- PS/2 마우스 및 키보드
- 비휘발성 RAM M48T59
- PC 호환 직렬 포트
- 하드 디스크 및 CD-ROM을 지원하는 2개의 PCI IDE 인터페이스
- 플로피 디스크
10. 4. 1. SPARC32
QEMU는 다음과 같은 ''sun4m/sun4c/sun4d'' 주변 장치를 에뮬레이션한다.- IOMMU 또는 IO-UNIT
- TCX 프레임 버퍼 (그래픽 카드)
- Lance (Am7990) 이더넷
- 비휘발성 RAM M48T02/M48T08
- 슬레이브 I/O: 타이머, 인터럽트 컨트롤러, Zilog 직렬 포트, 키보드 및 전원/리셋 로직
- 하드 디스크 및 CD-ROM을 지원하는 ESP SCSI 컨트롤러
- 플로피 드라이브 (SS-600MP에는 없음)
- CS4231 사운드 장치 (SS-5에만 있으며 아직 작동하지 않음)
10. 4. 2. SPARC64
QEMU는 다음과 같은 주변 장치를 갖춘 Sun4u (UltraSPARC PC와 유사한 머신), Sun4v (T1 PC와 유사한 머신) 또는 일반 Niagara (T1) 머신을 에뮬레이션한다.- UltraSparc IIi APB PCI 브리지
- VESA Bochs 확장을 갖춘 PCI VGA 호환 카드
- PS/2 마우스 및 키보드
- 비휘발성 RAM M48T59
- PC 호환 직렬 포트
- 하드 디스크 및 CD-ROM을 지원하는 2개의 PCI IDE 인터페이스
- 플로피 디스크
10. 5. MicroBlaze
QEMU는 MMU가 있거나 없는 MicroBlaze, AXI 타이머 및 인터럽트 컨트롤러 주변 장치를 지원한다. 또한, AXI 외부 메모리 컨트롤러, AXI DMA 컨트롤러, 자일링스 AXI 이더넷, AXI 이더넷 라이트, AXI UART 16650 및 UARTLite, AXI SPI 컨트롤러를 지원한다.10. 6. LatticeMico32
LatticeMico32는 Milkymist SoC에서 지원되는 주변 장치 중 하나로, QEMU에서 시스템 에뮬레이션 환경을 통해 에뮬레이트된다. QEMU는 전체 기계를 에뮬레이션하는 시스템 에뮬레이션과, 리눅스의 사용자랜드를 에뮬레이션하는 사용자 에뮬레이션 환경을 제공한다. 시스템 에뮬레이션 환경은 주로 Windows나 리눅스 등의 운영 체제 (OS)를 구동하는 데 사용되며, OS 동작 확인을 위해 QEMU를 포함하는 경우가 있다.10. 7. CRIS
QEMU는 시스템 에뮬레이션과 사용자 에뮬레이션 환경을 제공한다. 사용자 에뮬레이션은 비특권 모드의 에뮬레이션 및 리눅스 시스템 콜 명령을 네이티브 시스템 콜로 변환하며, 크로스 컴파일이나 비x86 환경에서 Wine을 구동하는 데 사용된다. 시스템 에뮬레이션은 주로 OS 동작 확인을 목적으로 하며, 안드로이드 SDK에도 이용된다. QEMU는 중간 코드를 거쳐 동적 컴파일을 수행하여 x86, PowerPC, SPARC, ARM 등 다양한 호스트 CPU에서 많은 타겟 CPU를 고속으로 에뮬레이션할 수 있다.과거에는 액셀러레이터로 kqemu가 제공되었으나, 버전 0.11에서 폐지되고 KVM으로 대체되었다. kqemu는 QEMU를 더 빠르게 동작시키는 모듈로 제공되었으며, 커널 모드의 가상화 모니터로 동작했다.
QEMU는 CPU뿐만 아니라 다양한 주변 하드웨어도 에뮬레이트한다. 여기에는 인텔 440FX 호스트 PCI 브리지, PIIX3 PCI to ISA 브리지, 인텔 Q35 및 ICH9 칩셋, Cirrus CLGD 5446 PCI VGA 카드, Bochs VESA 확장 기능을 갖춘 더미 VGA 카드, Red Hat QXL VGA, VirtIO GPU, 시뮬레이션된 VMware SVGA II, PS/2 마우스와 키보드, 하드 디스크 및 CD-ROM 지원을 갖춘 2개의 PCI IDE 인터페이스, SATA 컨트롤러, SCSI 컨트롤러, SAS 컨트롤러, 플로피 디스크, ISA 네트워크 어댑터, 인텔 E1000 네트워크 어댑터, Realtek 8139 네트워크 어댑터, VirtIO 블록 스토리지/SCSI/네트워크, 시리얼 포트, Creative Sound Blaster 16 사운드 카드, ENSONIQ AudioPCI ES1370 사운드 카드, Adlib(OPL2) - Yamaha YM3812 호환 칩, 인텔 82801AA AC97 호환 사운드 카드, HD 오디오 사운드 카드, CS4231A 호환 사운드 카드, PCI UHCI USB 컨트롤러 및 가상 USB 허브가 포함된다.
QEMU는 -s 옵션을 지정하면 tun 장치를 통해 호스트상의 GDB에 연결하여 가상 머신의 동작 상황을 감시하는 인서킷 에뮬레이터(ICE)와 같은 사용도 가능하다. 또한, QEMU는 VNC 및 SPICE 서버 기능이 내장되어 있어 원격 머신 제어가 가능하다.
대응하는 가상화 지원 기능이 적어 VMware, VirtualBox보다 저속으로 평가되기도 한다. macOS용으로는 GPU 가상화 지원 기능까지 갖춘 고속 구현인 UTM Virtual Machines가 있다.
10. 8. OpenRISC
QEMU는 전체 기계를 에뮬레이션하는 시스템 에뮬레이션과, 리눅스의 사용자랜드를 에뮬레이션하는 사용자 에뮬레이션 환경을 제공한다. 사용자 에뮬레이션 환경은 비특권 모드의 에뮬레이션 및 리눅스의 시스템 콜 명령을 네이티브 시스템 콜로 변환하며, 내장 기기의 크로스 컴파일이나 비x86 환경에서 Wine을 구동하기 위해 사용 가능하다.시스템 에뮬레이션 환경은 주로 Windows나 리눅스 등의 운영 체제(OS) 구동을 목적으로 이용되며, OS 동작 확인용으로 QEMU를 동봉하는 경우가 있다. 휴대 전화용 플랫폼 Android의 SDK에도 이용된다. Bochs나 PearPC 등 유사 프로젝트와 비교하여, QEMU는 중간 코드를 거쳐 동적 컴파일을 수행함으로써, x86, PowerPC, SPARC, ARM 등 많은 호스트 CPU에 대해 다양한 타겟 CPU를 고속으로 에뮬레이션할 수 있다. x86 시스템 에뮬레이션 환경에서는 BIOS의 동작 환경은 Bochs와 호환된다.
과거에는 액셀러레이터로 kqemu가 제공되었으나, 버전 0.11에서 폐지되고 KVM으로 대체되었다. kqemu는 QEMU를 더 빠르게 동작시키는 모듈로 제공되었으며, x86 또는 x64 (64비트 CPU)를 지원하고 커널 모드의 가상화 모니터로 동작했다.
QEMU는 CPU뿐만 아니라 다양한 주변 하드웨어도 에뮬레이트한다. 인텔 440FX 호스트 PCI 브리지 및 PIIX3 PCI to ISA 브리지, 인텔 Q35 및 ICH9 칩셋, Cirrus CLGD 5446 PCI VGA 카드 또는 Bochs VESA 확장 기능을 갖춘 더미 VGA 카드, 시뮬레이션된 VMware SVGA II, PS/2 마우스와 키보드, 하드 디스크 및 CD-ROM 지원을 갖춘 2개의 PCI IDE 인터페이스, SATA 컨트롤러, SCSI 컨트롤러, SAS 컨트롤러, 플로피 디스크, ISA 네트워크 어댑터, 인텔 E1000 네트워크 어댑터, Realtek 8139 네트워크 어댑터, VirtIO 블록 스토리지/SCSI/네트워크, 시리얼 포트, Creative Sound Blaster 16 사운드 카드, ENSONIQ AudioPCI ES1370 사운드 카드, Adlib(OPL2) - Yamaha YM3812 호환 칩, 인텔 82801AA AC97 호환 사운드 카드, HD 오디오 사운드 카드, CS4231A 호환 사운드 카드, PCI UHCI USB 컨트롤러 및 가상 USB 허브 등이 구현되어 있다.
또한, QEMU는 -s 옵션을 지정하여 tun 장치를 통해 호스트상의 GDB에 연결하여 가상 머신의 동작 상황을 감시하는 인서킷 에뮬레이터(ICE)와 같은 사용도 가능하다. VNC 및 SPICE 서버 기능도 내장되어 원격 머신 제어가 가능하다.
VMware, VirtualBox보다 저속으로 평가되기도 한다. macOS용으로는, [https://apps.apple.com/jp/app/utm-virtual-machines/id1538878817?mt=12 UTM Virtual Machines]라는 GPU 가상화 지원 기능까지 갖춘 고속 구현이 있다.
11. 기타
QEMU는 전체 기계를 에뮬레이션하는 시스템 에뮬레이션과, 리눅스의 사용자랜드를 에뮬레이션하는 사용자 에뮬레이션 환경을 제공한다.[49][50] 사용자 에뮬레이션 환경은 비특권 모드의 에뮬레이션 및 리눅스의 시스템 콜 명령을 네이티브 시스템 콜로 변환하며, 내장 기기의 크로스 컴파일이나 비x86 환경에서 Wine을 구동하기 위해 사용 가능하다. 시스템 에뮬레이션 환경은 주로 Windows나 리눅스 등의 운영 체제(OS)를 구동하는 것을 목적으로 이용되며, OS의 동작 확인용으로 QEMU를 동봉하는 경우가 있다. 휴대 전화용 플랫폼 Android의 SDK에도 이용되고 있다.[49][50]
QEMU는 중간 코드를 거쳐 동적 컴파일을 수행함으로써, x86, PowerPC, SPARC, ARM 등 많은 호스트 CPU에 대해 많은 타겟 CPU를 고속으로 에뮬레이션할 수 있다는 점이 특징이다.[49][50] 과거에는 액셀러레이터로 kqemu가 제공되었으나, 버전 0.11에서 폐지되고 KVM으로 대체되었다. kqemu는 x86 또는 x64 (64비트 CPU)를 지원하며, 커널 모드의 가상화 모니터로 동작하여 QEMU의 속도를 향상시키는 모듈이었다.
QEMU는 CPU뿐만 아니라 다양한 주변 하드웨어도 에뮬레이트한다. 에뮬레이트하는 PC (PC/AT 호환기) 하드웨어에는 다음이 포함된다.[49][50]
- 인텔 440FX 호스트 PCI 브리지 및 PIIX3 PCI to ISA 브리지
- 인텔 Q35 및 ICH9 칩셋
- Cirrus CLGD 5446 PCI VGA 카드 또는 Bochs VESA 확장 기능을 갖춘 더미 VGA 카드 (하드웨어 레벨, 모든 비표준 모드 포함).
- Red Hat QXL VGA 또는 VirtIO GPU
- 시뮬레이션된 VMware SVGA II (버그 포함)
- PS/2 마우스와 키보드
- 하드 디스크 및 CD-ROM 지원을 갖춘 2개의 PCI IDE 인터페이스
- SATA 컨트롤러
- SCSI 컨트롤러
- SAS 컨트롤러
- 플로피 디스크
- ISA 네트워크 어댑터
- 인텔 E1000 네트워크 어댑터
- Realtek 8139 네트워크 어댑터
- VirtIO 블록 스토리지/SCSI/네트워크
- 시리얼 포트
- Creative Sound Blaster 16 사운드 카드
- ENSONIQ AudioPCI ES1370 사운드 카드
- Adlib(OPL2) - Yamaha YM3812 호환 칩
- 인텔 82801AA AC97 호환 사운드 카드
- HD 오디오 사운드 카드
- CS4231A 호환 사운드 카드
- PCI UHCI USB 컨트롤러 및 가상 USB 허브.
또한, QEMU는 -s 옵션을 지정하여 tun 장치를 통해 호스트상의 GDB에 연결하여 가상 머신의 동작 상황을 감시하는 인서킷 에뮬레이터 (ICE)와 같은 사용도 가능하다. VNC 및 SPICE 서버 기능도 내장되어 원격 머신 제어가 가능하다.[49][50]
macOS용으로는, [https://apps.apple.com/jp/app/utm-virtual-machines/id1538878817?mt=12 UTM Virtual Machines]라는 GPU 가상화 지원 기능까지 갖춘 고속 구현이 있다.
12. 허가서
QEMU는 파브리스 벨라르가 개발한 자유 소프트웨어이다. QEMU의 다양한 구성 요소는 GNU 일반 공중 사용 허가서 (GPL), BSD 허가서, GNU 약소 일반 공중 사용 허가서 (LGPL) 또는 기타 GPL 호환 라이선스에 따라 라이선스가 부여된다.[4]
소프트웨어 자체와 가속기는 GNU 일반 공중 사용 허가서를 따르며, 가상 CPU 중심부 라이브러리는 GNU 약소 일반 공중 사용 허가서를 따른다. 하드웨어 장치 모듈(*.so)은 BSD 허가서를 따르며, 마이크로소프트 윈도우에서 실행할 때는 독점 라이브러리인 FMOD를 쓰기도 한다.
13. 최신 버전
QEMU의 공식 저장소 최신 안정 버전은 0.11.0-rc1이며, 2009년 7월 30일에 출시되었다. 데비안, 우분투, 페도라, 오픈수세, 아치, 젠투 등 다양한 리눅스 배포판에서도 QEMU를 지원한다. 각 배포판별 지원 버전은 다음과 같다:
- 데비안: 0.9.1-10lenny1
- 우분투(통상): 0.10.0-1ubuntu1
- 우분투(장기 지원 - dapper): 0.8.0-3ubuntu1
- 우분투(장기 지원 - hardy): 0.9.1-1ubuntu1
- 페도라: 0.10.6
- 오픈수세: 0.10.1
- 아치: 0.10.6-1
- 젠투: 0.11.1
QEMU는 시스템 에뮬레이션과 사용자 에뮬레이션 환경을 제공한다. 사용자 에뮬레이션은 비특권 모드 에뮬레이션 및 리눅스 시스템 콜 명령을 네이티브 시스템 콜로 변환하며, 크로스 컴파일이나 비 x86 환경에서 Wine 구동에 사용된다. 시스템 에뮬레이션은 주로 OS 동작 확인을 위해 사용되며, Android SDK에도 이용된다.
QEMU는 중간 코드를 거쳐 동적 컴파일을 수행하여 x86, PowerPC, SPARC, ARM 등 다양한 호스트 CPU에서 많은 타겟 CPU를 고속으로 에뮬레이션할 수 있다. 과거에는 액셀러레이터로 kqemu가 제공되었으나 버전 0.11에서 폐지되고 KVM으로 대체되었다.
QEMU는 CPU뿐만 아니라 다양한 주변 하드웨어도 에뮬레이트한다. 예를 들어, 인텔 440FX 호스트 PCI 브리지, PIIX3 PCI to ISA 브리지, 인텔 Q35 및 ICH9 칩셋, Cirrus CLGD 5446 PCI VGA 카드, Bochs VESA 확장 기능을 갖춘 더미 VGA 카드, Red Hat QXL VGA, VirtIO GPU, 시뮬레이션된 VMware SVGA II, PS/2 마우스와 키보드, 하드 디스크 및 CD-ROM 지원을 갖춘 2개의 PCI IDE 인터페이스, SATA 컨트롤러, SCSI 컨트롤러, SAS 컨트롤러, 플로피 디스크, ISA 네트워크 어댑터, 인텔 E1000 네트워크 어댑터, Realtek 8139 네트워크 어댑터, VirtIO 블록 스토리지/SCSI/네트워크, 시리얼 포트, Creative Sound Blaster 16 사운드 카드, ENSONIQ AudioPCI ES1370 사운드 카드, Adlib(OPL2) - Yamaha YM3812 호환 칩, 인텔 82801AA AC97 호환 사운드 카드, HD 오디오 사운드 카드, CS4231A 호환 사운드 카드, PCI UHCI USB 컨트롤러 및 가상 USB 허브 등이 있다.
QEMU는 -s 옵션을 통해 GDB에 연결하여 가상 머신 동작 상황을 감시하는 인서킷 에뮬레이터 (ICE)와 같은 사용도 가능하다. 또한, VNC 및 SPICE 서버 기능이 내장되어 원격 머신 제어가 가능하다.
참조
[1]
웹사이트
License - QEMU
https://wiki.qemu.or[...]
[2]
웹사이트
Glossary
https://csrc.nist.go[...]
2023-04-24
[3]
웹사이트
QEMU 4 arrives with toys for Arm admirers, RISC-V revolutionaries, POWER patriots... you get the idea
https://www.theregis[...]
The Register
2019-10-01
[4]
웹사이트
License - QEMU
http://wiki.qemu.org[...]
[5]
웹사이트
About QEMU
https://qemu.readthe[...]
[6]
웹사이트
QEMU OS Support List
http://www.claunia.c[...]
2024-03-21
[7]
웹사이트
Supported host architectures
https://qemu.readthe[...]
[8]
웹사이트
QEMU PRIP 1 - support for MIPS64 Release 6 - PRPL
http://wiki.prplfoun[...]
2014-12-22
[9]
웹사이트
"[Qemu-devel] ANNOUNCE: Release 0.10.0 of QEMU"
http://lists.gnu.org[...]
[10]
웹사이트
Porting QEMU to Plan 9: QEMU Internals and Port Strategy
http://gsoc.cat-v.or[...]
2007-09-11
[11]
웹사이트
KQEMU 1.3.0pre10 released - under the GPL [LWN.net]
https://lwn.net/Arti[...]
Lwn.net
2009-01-03
[12]
웹사이트
"[Qemu-devel] [PATCH 1/2] Unbreak large mem support by removing kqemu"
http://lists.gnu.org[...]
2010-03-11
[13]
웹사이트
QEMU / KVM CPU model configuration
https://www.qemu.org[...]
[14]
웹사이트
HAXM goes open source
https://lists.nongnu[...]
QEMU developers
2017-01-14
[15]
웹사이트
Intel Hardware Accelerated Execution Manager
https://software.int[...]
Intel
2014-05-12
[16]
웹사이트
Invocation
https://www.qemu.org[...]
[17]
웹사이트
QEMU Emulator User Documentation
https://qemu.weilnet[...]
2018-04-10
[18]
웹사이트
Booting from an ISO image using qemu
https://linux-tips.c[...]
2015-08-03
[19]
웹사이트
Qemu Readme
https://github.com/q[...]
2021-10-26
[20]
웹사이트
VirtualBox Developer FAQ
http://virtualbox.or[...]
2015-02-02
[21]
웹사이트
Xen ARM with Virtualization Extensions
http://wiki.xenproje[...]
[22]
웹사이트
Oracle and Sun Microsystems - Strategic Acquisitions - Oracle
http://www.sun.com/b[...]
[23]
웹사이트
Demystifying Xen HVM
http://ian.blenke.co[...]
[24]
웹사이트
win4lin VDS announcement
http://weblog.infowo[...]
[25]
웹사이트
Win4Solaris announcement
http://win4solaris.c[...]
[26]
웹사이트
SerialICE
http://serialice.com[...]
[27]
웹사이트
WinUAE 3.0.0
http://eab.abime.net[...]
English Amiga Board
2016-03-25
[28]
웹사이트
Unicorn & QEMU
https://www.unicorn-[...]
[29]
웹사이트
Limbo Emulator Tutorials
https://virtualmachi[...]
2023-09-02
[30]
Citation
How to Install Windows on any Android Device Full Installation [No Root] ( Using Limbo PC Emulator )
https://www.youtube.[...]
2023-09-02
[31]
웹사이트
India: mobile OS share 2022
https://www.statista[...]
2023-09-02
[32]
웹사이트
Limbo Downloads
https://virtualmachi[...]
2023-09-02
[33]
웹사이트
Downloads
https://github.com/l[...]
2023-09-02
[34]
Citation
klausw/hackerskeyboard
https://github.com/k[...]
2023-09-02
[35]
웹사이트
Hacker's Keyboard - Apps on Google Play
https://play.google.[...]
2023-09-02
[36]
문서
Central Unit Processor
[37]
웹사이트
"[Qemu-devel] [PATCH 3/3] add SandyBridge CPU model"
http://lists.gnu.org[...]
[38]
웹사이트
Qemu-Changelog-2.3 x86
https://wiki.qemu.or[...]
[39]
웹사이트
QEMU-changelog-2.6, x86 KVM
https://wiki.qemu.or[...]
[40]
웹사이트
QEMU-changelog-2.1, x86 KVM
https://wiki.qemu.or[...]
[41]
웹사이트
QEMU-changelog-2.5, x86 CPU Models and Features
https://wiki.qemu.or[...]
[42]
웹사이트
"i82551, i82557b, i82559er, ne2k_pci, ne2k_isa, pcnet, rtl8139, e1000, smc91c111, lance and mcf_fec"
https://qemu.weilnet[...]
2019-04-27
[43]
웹사이트
Networking on QEMU: Setting Up The E1000 & Novell NE2000 ISA Evaluation
http://pclosmag.com/[...]
[44]
웹사이트
ChangeLog/0.14
http://wiki.qemu.org[...]
2011-08-08
[45]
웹사이트
UEFI/OVMF - Ubuntu Wiki
https://wiki.ubuntu.[...]
[46]
웹사이트
gitorious.org Git - rowboat: external-qemu.git/commit
https://gitorious.or[...]
[47]
웹사이트
Arm System emulator
https://www.qemu.org[...]
2024-11-23
[48]
웹사이트
Zaitcev's Linux
http://people.redhat[...]
[49]
웹사이트
QEMU Z80 Target
https://web.archive.[...]
[50]
웹사이트
QEMU links
http://wiki.qemu.org[...]
[51]
웹사이트
QEMU - OSDN OSS Directory Wiki
https://ja.osdn.net/[...]
OSDN
2023-05-08
[52]
웹사이트
QEMU/KVM SEECK.JP サポート
https://kb.seeck.jp/[...]
seeck.jp
2023-05-08
[53]
웹사이트
QEMU OSS用語集
https://www.weblio.j[...]
Weblio
2023-05-08
[54]
웹사이트
QEMU【キューエミュ】 Mac OS X Glossary
https://macosxgloss.[...]
Mac OS X Glossary
2023-05-08
[55]
웹사이트
QEMU脆弱性を利用したVMエスケープ攻撃の検証のまとめ
https://atmarkit.itm[...]
ITmedia
2023-05-08
[56]
웹사이트
VENOM QEMUの脆弱性(CVE-2015-3456)について
https://success.tren[...]
Trend Micro
2023-05-08
[57]
웹사이트
UTM
https://mac.getutm.a[...]
2022-08-19
[58]
웹사이트
FMOD music & sound effects system
http://www.fmod.org/
[59]
웹인용
ChangeLog/0.14
http://wiki.qemu.org[...]
2011-08-08
[60]
뉴스
KQEMU 1.3.0pre10 released - under the GPL [LWN.net]
http://lwn.net/Artic[...]
[61]
웹사이트
https://web.archive.[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
