《KVM实战:原理、进阶与性能调优》 —3.4.3 配置和编译QEMU

举报
华章计算机 发表于 2019/11/24 21:21:51 2019/11/24
【摘要】 本节书摘来自华章计算机《KVM实战:原理、进阶与性能调优》一书中第3章,第3.4.3节,作者是任永杰 程舟。

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,用户可以等同视之)。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。