《KVM实战:原理、进阶与性能调优》一3.4.3 配置和编译QEMU
3.4.3 配置和编译QEMU
QEMU的配置并不复杂,通常情况下,直接运行代码仓库中configure文件进行配置即可。当然,如果对其配置不熟悉,可以运行“./configure --help”命令查看配置的一些选项及其帮助信息。
显示配置的帮助信息如下:
[root@kvm-host qemu]# ./configure --help
Usage: configure [options]
Options: [defaults in brackets after descriptions]
Standard options:
--help print this message
--prefix=PREFIX install in PREFIX [/usr/local]
--interp-prefix=PREFIX where to find shared libraries, etc.
use %M for cpu name [/usr/gnemul/qemu-%M]
--target-list=LIST set target list (default: build everything)
Available targets: aarch64-softmmu alpha-softmmu
arm-softmmu cris-softmmu i386-softmmu lm32-softmmu
m68k-softmmu microblazeel-softmmu microblaze-softmmu
mips64el-softmmu mips64-softmmu mipsel-softmmu
mips-softmmu moxie-softmmu or32-softmmu
ppc64-softmmu ppcemb-softmmu ppc-softmmu
s390x-softmmu sh4eb-softmmu sh4-softmmu
sparc64-softmmu sparc-softmmu tricore-softmmu
unicore32-softmmu x86_64-softmmu xtensaeb-softmmu
xtensa-softmmu aarch64-linux-user alpha-linux-user
armeb-linux-user arm-linux-user cris-linux-user
i386-linux-user m68k-linux-user
microblazeel-linux-user microblaze-linux-user
mips64el-linux-user mips64-linux-user
mipsel-linux-user mips-linux-user
mipsn32el-linux-user mipsn32-linux-user
or32-linux-user ppc64abi32-linux-user
ppc64le-linux-user ppc64-linux-user ppc-linux-user
s390x-linux-user sh4eb-linux-user sh4-linux-user
sparc32plus-linux-user sparc64-linux-user
sparc-linux-user tilegx-linux-user
unicore32-linux-user x86_64-linux-user
Advanced options (experts only):
<!- 此处省略百余行帮助信息的输出 ->
NOTE: The object files are built at the place where configure is launched
以上configure选项中我们特别提一下“--target-list”,它指定QEMU对客户机架构的支持。可以看到,对应的选项非常多,表面上QEMU对客户机的架构类型的支持是非常全面的。由于在本书中(也是多数的实际使用场景)我们只使用x86架构的客户机,因此指定“--target-list= x86_64-softmmu”,可以节省大量的编译时间。
执行configure文件进行配置的过程如下:
[root@kvm-host qemu]# ./configure --target-list=x86_64-softmmu
Install prefix /usr/local
BIOS directory /usr/local/share/qemu
...
ELF interp prefix /usr/gnemul/qemu-%M
Source path /root/qemu
<!-- 以上是指定一些目录前缀,省略十几行。可以由configure的--prefix选项影响 -->
C compiler cc
Host C compiler cc
...
QEMU_CFLAGS -I/usr/include/pixman-1 -Werror -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -fPIE -DPIE -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wmissing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong
LDFLAGS -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -pie -m64 -g
<!-- 以上显示了后续编译qemu时会采用的编译器及编译选项。也可以由configure对应选项控制。-->
...
host CPU x86_64
host big endian no
target list x86_64-softmmu #这里就是我们--target-list指定的
...
VNC support yes #通常需要通过VNC连接到客户机中。默认
...
KVM support yes #这是对KVM的支持。默认
...
在配置完以后,qemu目录下会生成config-host.mak和config.status文件。config-host.mak里面可以查看你通过上述configure之后的结果,它会在后续make中被引用。config.status是为用户贴心设计的,便于后续要重新configure时,只要执行“./config.status”就可以恢复上一次configure的配置。这对你苦心配置了很多选项,而后又忘了的情况非常有用。
经过配置之后,编译就很简单了,直接执行make即可。
最后,编译生成x86_64-softmmu /qemu-system-x86_64文件,就是我们需要的用户空间用于其KVM客户机的工具了(在多数Linux发行版中自带的qemu-kvm软件包的命令行是qemu-kvm,只是名字不同的downstream,用户可以等同视之)。
- 点赞
- 收藏
- 关注作者
评论(0)