每次看QEMU启动有一堆参数,很是害怕,所以抽出空来彻底整理一下见过的QEMU用法,从使用者的角度对QEMU做一个梳理。
简介
概念
What is QEMU? QEMU is a generic and open source machine emulator and virtualizer.
与KVM的关系
- KVM和Qemu的关系
- QEMU和KVM的关系
- Linux虚拟化技术KVM、QEMU与libvirt的关系(转)
- openstack, kvm, qemu-kvm以及libvirt之间的关系
- wiki.hacksmeta: qemu-kvm
其他优秀文章
安装
在Ubuntu中安装QEMU的网络教程中,经常有要apt安装一堆东西,其实不用指定那么多包也能安装所需要的所有qemu软件,首先来看一下网上教程中常见的软件包:
- qemu:比较完整的软件包,包括了qemu-system、qemu-user以及binfmt-support
- qemu-system:system模式的软件包,模拟完整的系统
- qemu-user:user模式的软件包,本身是动态链接
- qemu-user-static:user模式的软件包,本身是静态链接,用于chroot更换动态路径后仍然能运行
- binfmt-support:根据二进制的magic number选择解析器的工具
其实只要认真看一下apt install
给出的提示就能看出,qemu
除了没有包含qemu-user-static
,剩下都有,以下是我在ubuntu18.04的安装提示:
➜ sudo apt install qemu
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
binfmt-support cpu-checker ibverbs-providers ipxe-qemu ipxe-qemu-256k-compat-efi-roms libaio1 libcacard0 libfdt1 libibverbs1 libiscsi7 libnl-route-3-200
librados2 librbd1 librdmacm1 libsdl1.2debian libspice-server1 libusbredirparser1 libxen-4.9 libxenstore3.0 msr-tools qemu-block-extra qemu-slof qemu-system
qemu-system-arm qemu-system-common qemu-system-mips qemu-system-misc qemu-system-ppc qemu-system-s390x qemu-system-sparc qemu-system-x86 qemu-user
qemu-user-binfmt qemu-utils seabios sharutils
Suggested packages:
qemu-user-static samba vde2 qemu-efi openbios-ppc openhackware openbios-sparc sgabios ovmf debootstrap sharutils-doc bsd-mailx | mailx
其实可以使用--install-suggests
选项安装建议的包,即可安装我们需要的所有qemu功能:
➜ sudo apt install --install-suggests qemu
安装好之后我们有了如下软件:
➜ qemu-
qemu-aarch64 qemu-mipsn32el qemu-system-cris
qemu-aarch64-static qemu-mipsn32el-static qemu-system-i386
qemu-alpha qemu-mipsn32-static qemu-system-lm32
qemu-alpha-static qemu-mips-static qemu-system-m68k
qemu-arm qemu-nbd qemu-system-microblaze
qemu-armeb qemu-nios2 qemu-system-microblazeel
qemu-armeb-static qemu-nios2-static qemu-system-mips
qemu-arm-static qemu-or1k qemu-system-mips64
qemu-cris qemu-or1k-static qemu-system-mips64el
qemu-cris-static qemu-ppc qemu-system-mipsel
qemu-debootstrap qemu-ppc64 qemu-system-moxie
qemu-hppa qemu-ppc64abi32 qemu-system-nios2
qemu-hppa-static qemu-ppc64abi32-static qemu-system-or1k
qemu-i386 qemu-ppc64le qemu-system-ppc
qemu-i386-static qemu-ppc64le-static qemu-system-ppc64
qemu-img qemu-ppc64-static qemu-system-ppc64le
qemu-io qemu-ppc-static qemu-system-ppcemb
qemu-m68k qemu-s390x qemu-system-s390x
qemu-m68k-static qemu-s390x-static qemu-system-sh4
qemu-make-debian-root qemu-sh4 qemu-system-sh4eb
qemu-microblaze qemu-sh4eb qemu-system-sparc
qemu-microblazeel qemu-sh4eb-static qemu-system-sparc64
qemu-microblazeel-static qemu-sh4-static qemu-system-tricore
qemu-microblaze-static qemu-sparc qemu-system-unicore32
qemu-mips qemu-sparc32plus qemu-system-x86_64
qemu-mips64 qemu-sparc32plus-static qemu-system-x86_64-spice
qemu-mips64el qemu-sparc64 qemu-system-xtensa
qemu-mips64el-static qemu-sparc64-static qemu-system-xtensaeb
qemu-mips64-static qemu-sparc-static qemu-tilegx
qemu-mipsel qemu-system-aarch64 qemu-tilegx-static
qemu-mipsel-static qemu-system-alpha qemu-x86_64
qemu-mipsn32 qemu-system-arm qemu-x86_64-static
user模式
以arm架构为例
直接运行可执行文件
静态链接的可执行文件
动态链接的可执行文件
与chroot连用
system模式
各种参数:
直接加载镜像
- debian_wheezy_armhf_standard.qcow2 2013-12-17 00:04 229M
- initrd.img-3.2.0-4-vexpress 2013-12-17 01:57 2.2M
- vmlinuz-3.2.0-4-vexpress 2013-09-20 18:33 1.9M
$ sudo tunctl -t tap0 -u `whoami` # 为了与 QEMU 虚拟机通信,添加一个虚拟网卡
$ sudo ifconfig tap0 10.10.10.1/24 # 为添加的虚拟网卡配置 IP 地址
$ qemu-system-arm \
-M vexpress-a9 \
-kernel vmlinuz-3.2.0-4-vexpress \
-initrd initrd.img-3.2.0-4-vexpress \
-drive if=sd,file=debian_wheezy_armhf_standard.qcow2 \
-append "root=/dev/mmcblk0p2 console=ttyAMA0" \
-net nic \
-net tap,ifname=tap0,script=no,downscript=no \
-nographic