QEMU は、システムエミュレーター、ユーザーモード CPU エミュレーター、およびストレージツールを提供します。システムエミュレーターは、CPU、メモリ、ファームウェア、バス、デバイスを含む完全なマシンをモデル化します。ユーザーモードエミュレーターは、異なるアーキテクチャーのユーザー空間プログラムを変換し、そのシステムコールをホストカーネルにマッピングします。ゲストカーネルをブートすることはありません。
システムエミュレーション #
qemu-system-x86_64 は x86-64 仮想マシンを作成します。-m はゲストメモリを、-smp は仮想 CPU を選択します。ファームウェアはマシン構成の一部です。x86 では SeaBIOS がレガシー BIOS を提供し、OVMF が UEFI ファームウェアを提供します。ストレージバックエンドとデバイスは別の概念です。-blockdev はバックエンドを定義し、-device はゲストコントローラーまたはデバイスを接続します。-drive は、一般的な組み合わせのための便利な短縮記法です。
qemu-img create -f qcow2 guest.qcow2 32G
qemu-system-x86_64 \
-m 4G -smp 4 \
-drive file=guest.qcow2,format=qcow2,if=virtio \
-cdrom installer.iso \
-boot order=d \
-display gtk-boot order=d は、初回ブートに CD-ROM を選択します。QEMU モニターを制御端末で共有する必要がある場合にのみ -monitor stdio を使用してください。シリアルコンソールを使用するゲストでは、一般に代わりに -serial stdio を使用します。KVM アクセラレーションは、互換性のある Linux ホストで -accel kvm によって有効化されます。これはゲストデバイスのセマンティクスではなく、実行速度を変更します。
サポートツール #
qemu-img はディスクイメージの作成、変換、検査、およびスナップショット作成を行います。qemu-nbd は Network Block Device プロトコルを介してイメージを公開します。qemu-io は、テスト用にイメージへ制御された I/O を発行します。qemu-storage-daemon は、QEMU のブロックレイヤーを介してストレージバックエンドを提供します。qemu-pr-helper は SCSI 永続予約を補助し、qemu-edid は EDID 生成をテストします。
ユーザーモード実行ファイルには、qemu-aarch64、qemu-riscv64、qemu-mips などのコマンドがあります。プログラムが動的インタープリターを使用する場合、ターゲットのユーザー空間ライブラリツリーが必要です。-L はそのプレフィックスを選択します。Binfmt 統合により、異なるアーキテクチャーの実行ファイル用にユーザーモードエミュレーターを登録できますが、システムコールの実装を提供するのは引き続きホストカーネルです。
コメント
GitHub で閲覧・コメントする(投稿にはログインが必要です)