it

QEMU-system-x86_64とは?x86アーキテクチャ仮想化を解説!(64ビット仮想化・システムエミュレーション・プロセッサ対応など)

当サイトでは記事内に広告を含みます

QEMUには、対象とするアーキテクチャごとに専用の実行コマンドが用意されています。

その中でも最もよく使われるのが、qemu-system-x86_64です。

このコマンドは、64ビットx86アーキテクチャの仮想マシンを起動するためのもので、IntelやAMDのプロセッサーを搭載した一般的なPCサーバー環境の仮想化に使用されます。

本記事では、qemu-system-x86_64とは何か、どのような仕組みで64ビット仮想化を行っているのか、そして主要なオプションと実用的な使い方について詳しく解説していきます。

qemu-system-x86_64の概要と役割

それではまず、qemu-system-x86_64コマンドの概要と、システムエミュレーションとしての役割について解説していきます。

x86_64アーキテクチャとは

x86_64(AMD64とも呼ばれる)は、Intelのx86命令セットを64ビットに拡張したCPUアーキテクチャです。

もともとAMDが開発したAMD64アーキテクチャをIntelも採用し、現在では「x86_64」または「amd64」として統一的に呼ばれています。

現在販売されているほとんどのデスクトップPC・ノートPC・サーバーがこのアーキテクチャを採用しており、LinuxやWindows、macOSも64ビット版が標準となっています。

qemu-system-x86_64は、このアーキテクチャをターゲットとした仮想マシンを動かすためのQEMUコマンドです。

システムエミュレーションとしての機能

qemu-system-x86_64は、CPUだけでなくシステム全体をエミュレートします。

具体的には、マザーボード(チップセット)、BIOSまたはUEFIファームウェア、メモリコントローラー、PCIバス、ストレージコントローラー、ネットワークインターフェース、グラフィックスカードなど、PC動作に必要なハードウェアコンポーネントをすべてソフトウェアで再現します。

このため、ゲストOSは本物のハードウェアで動いているかのように動作し、通常のインストール手順でOSをセットアップできます。

qemu-system-x86_64はCPUだけでなくシステム全体(マザーボード・BIOS・PCIバス・デバイスなど)をエミュレートします。これにより、ゲストOSは通常の手順でインストール・起動できます。

qemu-system系コマンドの種類

QEMUにはqemu-system-x86_64以外にも、さまざまなアーキテクチャに対応したコマンドが存在します。

コマンド 対応アーキテクチャ 主な用途
qemu-system-x86_64 x86 64ビット 汎用PC・サーバー仮想化
qemu-system-aarch64 ARM 64ビット スマートフォン・組み込み
qemu-system-arm ARM 32ビット 旧世代ARM組み込み
qemu-system-mips MIPS ルーター・組み込み
qemu-system-riscv64 RISC-V 64ビット 次世代オープンアーキテクチャ

qemu-system-x86_64の主要オプション詳解

続いては、qemu-system-x86_64で使用する主要なオプションについて確認していきます。

プロセッサー関連のオプション

CPUの設定に関するオプションは、仮想マシンのパフォーマンスと互換性に直結する重要な項目です。

-cpu host

(ホストCPUをそのままゲストに見せる。KVM使用時に最高性能)

-cpu Haswell

(Intel Haswell世代のCPUとして認識させる)

-smp 4,cores=2,threads=2,sockets=1

(4仮想CPU:2コア×2スレッド×1ソケットの構成)

「-cpu host」はKVMと組み合わせることでネイティブに近いパフォーマンスを得られますが、ライブマイグレーション先のホストと同じCPU世代である必要があります。

異なるCPUホスト間でライブマイグレーションを行いたい場合は、共通の基本CPUモデルを指定する方がよいでしょう。

メモリとNUMAの設定オプション

メモリ関連のオプションも重要な設定です。

-m 4G

(仮想マシンに4GBのメモリを割り当て)

-m 4G,slots=4,maxmem=16G

(最大16GBまでホットプラグ可能な設定)

大規模な仮想マシン環境では、NUMA(Non-Uniform Memory Access)トポロジーをゲストに見せる設定も行えます。

NUMAを適切に設定することで、マルチプロセッサーサーバー上での仮想マシンパフォーマンスを向上させることが可能です。

ブートとファームウェアの設定

ブート方法やファームウェアの設定も、qemu-system-x86_64の重要なオプションです。

従来のBIOS(SeaBIOS)に加え、最新のUEFI(OVMF)もQEMUで使用できます。

UEFI(OVMFファームウェア)を使用する場合の例

-drive if=pflash,format=raw,unit=0,readonly=on,file=/usr/share/OVMF/OVMF_CODE.fd \

-drive if=pflash,format=raw,unit=1,file=/tmp/OVMF_VARS.fd

Secure Bootが必要なWindowsゲストや、UEFI対応のLinuxディストリビューションを動かす場合は、OVMFファームウェアの設定が必要になります。

グラフィックスとディスプレイの設定

続いては、仮想マシンのグラフィックス表示に関する設定について確認していきましょう。

グラフィックスデバイスの種類と選択

qemu-system-x86_64では、複数のグラフィックスデバイスから選択できます。

グラフィックスオプション 特徴 主な用途
-vga std 標準VGA互換、互換性高 汎用デスクトップ
-vga qxl SPICE対応、高解像度・高機能 リモートデスクトップ
-vga virtio VirtIO GPU、3D加速対応 高パフォーマンスデスクトップ
-nographic グラフィックス無効 ヘッドレスサーバー

サーバー用途でGUIが不要な場合は-nographicを指定し、シリアルコンソールで操作することが一般的です。

SPICEプロトコルによるリモート表示

仮想マシンのデスクトップ画面をリモートから操作する場合は、SPICE(Simple Protocol for Independent Computing Environments)プロトコルを活用できます。

VNCよりも高品質な映像転送や、マウスのスムーズな操作が可能で、クリップボードの共有やファイル転送にも対応しています。

-spice port=5901,disable-ticketing=on \

-vga qxl

(SPICEサーバーをポート5901で起動し、QXLグラフィックスを使用する例)

ヘッドレスサーバー構成での活用

クラウドやデータセンターでの仮想マシン運用では、GUIを持たないヘッドレス構成が標準的です。

qemu-system-x86_64を「-nographic」と「-serial mon:stdio」オプションで起動することで、ターミナル上でゲストのシリアルコンソールを直接操作できます。

systemdのsystemdサービスとして登録することで、ホストOSの起動と同時に仮想マシンを自動起動させる構成も容易に実現できます。

qemu-system-x86_64の実践的な設定例

続いては、実際の利用シーンに合わせた設定例を確認していきましょう。

Linuxサーバー仮想マシンの構成例

典型的なLinuxサーバー仮想マシンの起動コマンド例を示します。

qemu-system-x86_64 \

-enable-kvm \

-cpu host \

-smp 4 \

-m 8G \

-drive file=server.qcow2,format=qcow2,if=virtio \

-netdev user,id=net0,hostfwd=tcp::2222-:22 \

-device virtio-net-pci,netdev=net0 \

-nographic \

-serial mon:stdio

VirtIOストレージとVirtIOネットワークを使用した、パフォーマンスを重視した構成です。

Windowsゲストの仮想マシン設定

Windowsをゲストとして動かす場合は、VirtIOドライバーの組み込みが必要です。

Fedoraプロジェクトが提供するvirtio-winドライバーディスクをインストール時に追加することで、VirtIOネットワークとVirtIOストレージのドライバーをWindowsに組み込めます。

また、UEFI(OVMF)と組み合わせることで、Windows 11の動作要件を満たす仮想環境の構築も可能です。

TPM2.0の仮想化には、swtpm(ソフトウェアTPM)を使用する方法が一般的です。

マルチプロセッサー・大容量メモリ構成

ハイパフォーマンスな用途向けに、多くのCPUコアと大容量メモリを割り当てた構成も可能です。

ただし、ゲストに割り当てるCPUコア数は、ホストの物理コア数の範囲内に留めることが基本です。

過剰なCPUコアの割り当ては、スケジューリングの競合によってパフォーマンスが逆に低下する原因となる場合があるため注意が必要でしょう。

まとめ

本記事では、qemu-system-x86_64の概要と役割、主要オプション、グラフィックス設定、そして実践的な設定例について解説しました。

qemu-system-x86_64は、64ビットx86仮想マシンを動かすQEMUの標準的なコマンドであり、KVMと組み合わせることでネイティブに近いパフォーマンスを発揮します。

CPU・メモリ・ストレージ・ネットワーク・グラフィックスと、豊富なオプションを理解することで、用途に最適化した仮想マシンを構築できるでしょう。

実際の環境でさまざまな設定を試しながら、自分の用途に合ったQEMU環境を作り上げていってください。