QEMU

500px

Quick EMUlator 홈페이지

하드웨어 가상화의 기능을 갖춘 무료이자 오픈 소스 소프트웨어이다. QEMU를 KVM을 적용 가능하며, 사실상 리눅스에서 사용하는 가상머신의 표준이다.

1 개요

QEMU는 하이퍼바이저[1]라는 기술을 채용했다. 이를 이용해 여러개의 가상 머신을 한 플랫폼 안에서 돌릴 수 있다. 이와 비슷한 소프트웨어로는 VMwareVirtualBox 등이 있다.

2 기타

qemu-launcher, qtemu, aqemu 등의 프런트엔드 GUI 프로그램이 있으며, GUI 없이 터미널에서 실행하려면 간단하게는 qemu-system-x86_64 -enable-kvm -drive format=qcow2,file=/home/namu/image.img 부터 시작해서 여러가지 옵션을 줄 수 있다.

원래 QEMU는 가상화 전체를 소프트웨어적으로 하기 때문에 다른 가상화 프로그램인 VMware 등에 비해 성능이 좋지 않다. 하지만 그렇게 쓰는 경우는 특별한 하드웨어를 가상화할 때에나 있고, 일반적인 데스크탑이나 서버 가상화시에는 -enable-kvm 옵션으로 kvm을 적용하는데, 이는 VMware처럼 가능한 부분(CPU 등)은 하드웨어를 그대로 쓰고 (VT-x, VT-d 기술) 하드웨어 가상화가 불가능한 부분만 소프트웨어적 가상화를 쓰도록 한다. 그 결과 가상화의 성능은 기본적으로 좋은 편이다.

다른 가상화 프로그램과 비교해서 특히 장점은 PCI Passthrough가 가능하다는 것인데, 일반적으로는 가상머신 내 윈도우즈에 실제 그래픽카드를 붙여주는 식으로 (호스트는 CPU에 내장된 GPU를 쓰거나 아예 또다른 그래픽카드를 달아서 사용) 많이 쓰인다. VMware 등에서도 그래픽카드는 어디까지나 일부만 하드웨어와 직접 연관돼 있는데 QEMU에서 PCI Passthrough로 직접 가상머신에 붙여주는 방법으로는 이전부터 풀리지 않는 문제였던 "가상머신 안에서의 게임"을 가능하게 해 주었다. 설정방법 경험자들은 이 방법으로 돌리는 게임 성능이 윈도우즈를 네이티브로 돌릴 때와 99% 같다는 호평 중. 하지만 실제로 사용해본 결과 50%정도 이하의 성능을 보이는 것 같다. 해외 블로거의 포스팅에 의하면 xen 은 프라이머리 vga의 패스쓰루를 지원하고 qemu는 세컨더리 vga의 패스쓰루만 지원하는데 qemu의 세컨더리 vga 패스쓰루는 상당히 비효율적이라고 한다.

그리고 QEMU의 x86 에뮬레이션을 제작한 개발자가 바로 VirtualBox의 개발자로, VirtualBox를 개발하면서 QEMU의 개발에서는 손을 뗐다. 반면, 이러한 점을 활용해서 실제 사용자 환경을 바탕으로 한 CPU나 아키텍처 시뮬레이터 용도로 많이 활용되고 있다.

다른 아키텍쳐를 가상화하는(x86 에서 arm 이라든지..) 것으로는 현 시점에서 사실상 유일한 방법이 qemu 를 사용하는 것이다. 따라서 현재 가령 Android 개발 시에 사용하는 에뮬레이터 역시 qemu 기반이고, 이 외에도 qemu 가 지원하는 아키텍쳐를 에뮬레이션하는 경우라면 전부 사용된다.

QEMU 버전을 개조하여 PC-9801를 에뮬을할수 있다. 참고. 실제 PC-9801 컴퓨터의 바이오스 롬을 이용하여 그 컴퓨터로 에뮬이 가능하다. 그리고 Anex86이나 Neko Project와 비교하여 윈도우 98같은 운영체제도 설치 가능하다.물론 FPU 가상화가 되지 않아서 설치 속도가 많이 느리다. 또, IMG부팅이 가능하기 때문에 적절한 변환툴만 이용해 준다면 구동이 가능하다. 물론 하드디스크의 경우 헤드, 실린더, 섹터의 수를 정확히 입력해 줘야 오류없이 가능하다.
20830_scr.jpg
파워맥 전용으로 QEmulator도 존재한다.

3 안드로이드

안드로이드 에서도 사용이 가능해서 놀랍게도 안드로이드에서 Windows XP 같은 운영체제와 그 프로그램들을 돌릴 수 있다 하지만 키보드 등이 잘 되지 않고, bochsLimbo PC Emulator[2] 등에 비해서 성능 및 기능이 그닥 좋지 않아서 주로 사용되지는 않는 편이다. 만약 돌려보고 싶다면 Windows 95, Windows NT 4.0 을 추천한다.

4 qemu/wine

와인(소프트웨어) 과 qemu의 결합체. 가상머신없이 IBM PC 호환기종이 아닌 하드웨어+운영체제에서도 직접 윈도우즈용 바이너리(실행파일)를 실행하는 것을 가능하게 해주는 플랫폼[3]이다. 본래는 sparc,PowerPC 계열 cpu에서 win32 바이너리(윈도우즈용 실행파일)를 직접 사용하기 위해서 시작되었으며 현재는 arm 계열 cpu를 주 타겟으로 개발이 진행중이다. 안정화가 된다면 안드로이드iOS에서 별도 가상머신없이 직접 윈도우용 소프트웨어 실행이 가능해진다.

▲ arm 프로세서에서 직접 파워포인트를 실행하는 영상

5 같이보기

  1. 호스트 컴퓨터에서 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼
  2. 사실 Limbo PC Emulator도 QEMU 구버전 기반이다. 최신버전에 포함된 업데이트가 arm과 호환성을 떨어뜨린다고 한다.
  3. Java와 사실상 동작 원리가 같다