QEMU(キューエミュ、キューエム)は、Fabrice Bellard氏が中心となって開発を進めている、オープンソースのType IIハイパーバイザ(仮想マシン)です。この
ソフトウェアは、システムエミュレーションとユーザーエミュレーションという2つの主要な環境を提供し、幅広い用途に対応しています。
システムエミュレーション
システムエミュレーション環境は、Windowsや
Linuxなどの
オペレーティングシステム(OS)全体をエミュレートする機能を提供します。これにより、異なるアーキテクチャのOSを仮想環境で動作させることが可能になります。この環境は、OSの動作確認やデバッグ、
ソフトウェアの互換性テストなどに利用され、Android SDKにも採用されています。QEMUは、動的コンパイル技術を用いることで、x86、
PowerPC、SPARC、ARMなど、多数のホスト
CPU上で様々なターゲット
CPUを高速にエミュレーションすることが可能です。
x86システムエミュレーション環境では、BIOSの動作が
Bochsと互換性を持つように設計されています。かつては、アクセラレータとしてkqemuが利用されていましたが、バージョン0.11で廃止され、現在はKVMに置き換えられています。
ユーザーエミュレーション
ユーザーエミュレーション環境は、
Linuxのユーザーランドをエミュレーションします。この環境では、非特権モードのエミュレーションと、
Linuxのシステムコールをネイティブのシステムコールに変換する処理が行われます。主に、組み込み機器のクロスコンパイルや、非x86環境でのWineの実行などに活用されています。
QEMUは、
CPUだけでなく、様々な周辺
ハードウェアもエミュレートします。以下は、QEMUが実装しているPC(
PC/AT互換機|PC_AT互換機)
ハードウェアの一例です。
Intel 440FX host PCI bridge and PIIX3 PCI to ISA bridge
Intel Q35 and ICH9 Chipset
Cirrus CLGD 5446 PCI VGA card
Red Hat QXL VGA or VirtIO GPU
Simulated VMware SVGA II
PS/2マウスとキーボード
2 PCI IDE interfaces (hard disk and CD-ROM support)
SATA Controller, SCSI Controller, SAS Controller
Floppy disk
ISA network adapters
Intel E1000 Network Adapter
Realtek 8139 Network Adapter
VirtIO Block Storage/SCSI/Network
シリアルポート
Creative Sound Blaster 16 サウンドカード
ENSONIQ AudioPCI ES1370 sound card
Adlib(OPL2) - Yamaha YM3812 compatible chip
Intel 82801AA AC97互換サウンドカード
HD Audioサウンドカード
CS4231A compatible sound card
* PCI UHCI USB controller
開発・デバッグ機能
QEMUは、-sオプションを使用してtunデバイスを介してホスト上のGDBと接続し、仮想マシンの動作状況を監視する機能も備えています。これは、インサーキットエミュレータ(ICE)のように利用でき、仮想環境でのデバッグに非常に役立ちます。さらに、QEMUにはVNCやSPICEサーバーの機能が組み込まれており、リモートマシンからの制御が可能です。
QEMUは、
仮想化支援機能のサポートが限られているため、
VMwareやVirtualBoxと比較して性能面では劣るとされています。ただし、macOS向けには、UTM Virtual MachinesというGPU
仮想化支援機能を備えた高速な実装も存在します。他の仮想マシン
ソフトウェアとしては、
Bochsや
PearPCなどが挙げられます。
その他の情報
QEMUは、その柔軟性と幅広い対応プラットフォームから、組み込みシステム開発、OS開発、
ソフトウェアテストなど、多岐にわたる分野で利用されています。豊富な
ハードウェアエミュレーションとデバッグ機能が、開発者にとって強力なツールとなっています。