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

举报
华章计算机 发表于 2019/06/06 15:46:01 2019/06/06
【摘要】 本书摘自《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个月内不可修改。