QEMU

QEMU是一款纯软件实现的虚拟化模拟器。通过QEMU模拟出各种硬件,可以让我们能够在这些硬件上运行各种虚拟机,并将虚拟机的指令转译给真正的硬件。

qemu是一个应用程序的集合。我们这里介绍一下会使用的几个应用程序。

qemu-img

qemu-img可以用来创建、转换、修改镜像。可以处理所有qemu支持的镜像格式。

Warning

不要使用qemu-img去修改一个正在运行虚拟机的镜像,可能会造成镜像损坏。另外,请注意,查询正在被另一个进程修改的映像可能会遇到不一致的状态。

其命令格式如下:

qemu-img [standard options] command [command options]

我们只根据功能介绍一些用法。

创建映像文件

这里使用create命令来常见影响文件。完整的命令格式如下:

create [--object OBJECTDEF] [-q] [-f FMT] [-b BACKING_FILE [-F BACKING_FMT]] [-u] [-o OPTIONS] FILENAME [SIZE]

创建一个新的磁盘影响文件,名为FILENAME,大小为SIZE,格式为FMT。上面的命令可以精简为:

create -f FMT FILENAME SIZE

要启用更多的特性可以使用OPTIONS启用,这里就没有必要讲述了。

文件拷贝

使用dd命令来在两个不同格式的文件之间进行拷贝。完整的命令格式如下:

dd [--image-opts] [-U] [-f FMT] [-O OUTPUT_FMT] [bs=BLOCK_SIZE] [count=BLOCKS] [skip=BLOCKS] if=INPUT of=OUTPUT

将格式为FMTINPUT文件拷贝为格式为OUTPUT_FMTOUTPUT文件中。

默认情况下,以块大小BLOCK_SIZE为512字节为单位来进行拷贝整个文件。但是可以通过参数修改BLOCK_SIZE的大小。如果设置了count=BLOCKS,那么在读取了BLOCKS个块之后就会停止读取了。

所以我们通常的命令格式为

dd -f FMT -O OUTPUT_FMT bs=BLOCK_SIZE count=BLOCKS if=INPUT of=OUTPUT

qemu-system-x86_64

这是qemu的核心应用程序,虚拟机就是通过它创建的。

我们利用它来根据磁盘映像来启动一个虚拟机。

启动虚拟机

qemu-system-x86_64 linux.img

linux.img只要是一个安装了操作系统的磁盘映像文件即可。