• 编译qemu-kvm和安装qemu-kvm


    libvirt 編譯

     https://opengers.github.io/virtualization/kvm-libvirt-qemu-1/

    http://smilejay.com/2012/06/qemu-kvm_compilation_installation/

    3.4 编译和安装qemu-kvm

    除了在内核空间的KVM模块之外,在用户空间需要QEMU[注6]来模拟所需要CPU和设备模型以及用于启动客户机进程,这样才有了一个完整的KVM运行环境。而qemu-kvm是为了针对KVM专门做了修改和优化的QEMU分支[注7],在本书写作的2012年,qemu-kvm分支里面的小部分特性还没有完全合并进入到qemu的主干代码之中,所以本书中采用qemu-kvm来讲解。

    在编译和安装了KVM并且启动到编译的内核之后,下面来看一下qemu-kvm的编译和安装。

    3.4.1 下载qemu-kvm源代码

    目前的QEMU项目针对KVM的代码分支qemu-kvm也是由Redhat公司的Gleb Natapov和Marcelo Tosatti作维护者(Maintainer),代码也是托管在kernel.org上。

    qemu-kvm开发代码仓库的网页连接为:http://git.kernel.org/?p=virt/kvm/qemu-kvm.git

    其中,可以看到有如下3个URL连接可供下载开发中的最新qemu-kvm的代码仓库。 git://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git
    http://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git
    https://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git

    可以根据自己实际需要选择3个中任一个用git clone命令下载即可,它们是完全一样的。

    另外,可以到sourceforge.net的如下链接中根据需要下载qemu-kvm各个发布版本的代码压缩包(作者建议使用最新的正式发布版本,因为它的功能更多,同时也比较稳定)。

    http://sourceforge.net/projects/kvm/files/qemu-kvm/

    在本节讲解编译时,以下载开发中的最新的qemu-kvm.git为例,获取其代码仓库过程如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    [root@jay-linux kvm_demo]# git clone git://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git qemu-kvm.git
    Initialized empty Git repository in /root/kvm_demo/qemu-kvm.git/.git/
    remote: Counting objects: 145222, done.
    remote: Compressing objects: 100% (35825/35825), done.
    remote: Total 145222 (delta 114656), reused 137663 (delta 107444)
    Receiving objects: 100% (145222/145222), 40.83 MiB | 10.33 MiB/s, done.
    Resolving deltas: 100% (114656/114656), done.
    [root@jay-linux kvm_demo]# cd qemu-kvm.git
    [root@jay-linux kvm.git]# pwd
    /root/kvm_demo/qemu-kvm.git
    3.4.2 配置和编译qemu-kvm

    qemu-kvm的配置并不复杂,通常情况下,可以直接运行代码仓库中configure文件进行配置即可。当然,如果对其配置并不熟悉,可以运行“./configure –help”命令查看配置的一些选项及其帮助信息。

    显示配置的帮助手册信息如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    [root@jay-linux qemu-kvm.git]# ./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: i386-softmmu x86_64-softmmu
    <!- 此处省略百余行帮助信息的输出 ->
    --disable-guest-agent    disable building of the QEMU Guest Agent
    --enable-guest-agent     enable building of the QEMU Guest Agent
    --with-coroutine=BACKEND coroutine backend. Supported options:
    gthread, ucontext, sigaltstack, windows
    
    NOTE: The object files are built at the place where configure is launched

    执行configure文件进行配置的过程如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    [root@jay-linux qemu-kvm.git]# ./configure
    Install prefix    /usr/local
    BIOS directory    /usr/local/share/qemu
    binary directory  /usr/local/bin
    library directory /usr/local/lib
    include directory /usr/local/include
    config directory  /usr/local/etc
    Manual directory  /usr/local/share/man
    ELF interp prefix /usr/gnemul/qemu-%M
    Source path       /root/kvm_demo/qemu-kvm.git
    C compiler        gcc
    Host C compiler   gcc
    <!– 此处省略数十行 –>
    VNC support       yes     #通常需要通过VNC连接到客户机中
    <!– 此处省略十余行 –>
    KVM support       yes     #这是对KVM的支持
    TCG interpreter   no
    KVM device assig. yes    #这是对KVM中VT-d功能的支持
    <!– 此处省略十余行 –>
    OpenGL support    yes
    libiscsi support  no
    build guest agent yes
    coroutine backend ucontext

    需要注意的是,上面命令行输出的KVM相关的选项需要是配置为yes,另外,一般VNC的支持也是配置为yes的(因为通常需要用VNC连接到客户机中)。

    【2013.05.13 updated】 在configure时,可能遇到“glib-2.12 required to compile QEMU”的错误,是需要安装glib2和glib2-dev软件包,在RHEL上的安装命令为“yum install glib2 glib2-devel”,在Ubuntu上安装的过程为“apt-get install libglib2.0 libglib2.0-dev”。

    经过配置之后,进行编译就很简单了,直接执行make即可进行编译,如下所示:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    [root@jay-linux qemu-kvm.git]# make -j 20
    GEN   config-host.h
    GEN   trace.h
    GEN   qemu-options.def
    GEN   qmp-commands.h
    GEN   qapi-types.h
    GEN   qapi-visit.h
    GEN   tests/test-qapi-types.h
    GEN   tests/test-qapi-visit.h
    GEN   tests/test-qmp-commands.h
    CC    libcacard/cac.o
    CC    libcacard/event.o
    <!– 此处省略数百行的编译时输出信息 –>
    CC    x86_64-softmmu/target-i386/cpu.o
    CC    x86_64-softmmu/target-i386/machine.o
    CC    x86_64-softmmu/target-i386/arch_memory_mapping.o
    CC    x86_64-softmmu/target-i386/arch_dump.o
    CC    x86_64-softmmu/target-i386/kvm.o
    CC    x86_64-softmmu/target-i386/hyperv.o
    LINK  x86_64-softmmu/qemu-system-x86_64

    可以看到,最后有编译生成qemu-system-x86_64文件,它就是我们常用的qemu-kvm的命令行工具(在多数Linux发行版中自带的qemu-kvm软件包的命令行是qemu-kvm,只是名字不同而已)。

    3.4.2 安装qemu-kvm

    编译完成之后,运行“make install”命令即可安装qemu-kvm,其过程如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    [root@jay-linux qemu-kvm.git]# make install | tee make-install.log
    install -d -m 0755 “/usr/local/share/qemu”
    install -d -m 0755 “/usr/local/etc/qemu”
    install -c -m 0644 /root/kvm_demo/qemu-kvm.git/sysconfigs/target/target-x86_64.conf “/usr/local/etc/qemu”
    install -c -m 0644 /root/kvm_demo/qemu-kvm.git/sysconfigs/target/cpus-x86_64.conf “/usr/local/share/qemu”
    install -d -m 0755 “/usr/local/bin”
    install -c -m 0755  vscclient qemu-ga qemu-nbd qemu-img qemu-io  “/usr/local/bin”
    install -d -m 0755 “/usr/local/libexec”
    <!– 此处省略数行的安装时输出信息 –>
    make[1]: Entering directory `/root/kvm_demo/qemu-kvm.git/x86_64-softmmu’
    install -m 755 qemu-system-x86_64 “/usr/local/bin”
    strip “/usr/local/bin/qemu-system-x86_64″
    make[1]: Leaving directory `/root/kvm_demo/qemu-kvm.git/x86_64-softmmu’

    qemu-kvm的安装过程的主要任务有这几个:创建qemu的一些目录,拷贝一些配置文件到相应的目录下,拷贝一些firmware文件(如:sgabios.bin, kvmvapic.bin)到目录下以便qemu-kvm的命令行启动时可以找到对应的固件提供给客户机使用,拷贝keymaps到相应的目录下以便在客户机中支持各种所需键盘类型,拷贝qemu-system-x86_64、qemu-img等可执行程序到对应的目录下。下面的一些命令行检查了qemu-kvm被安装了之后的系统状态。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    [root@jay-linux qemu-kvm.git]# which qemu-system-x86_64
    /usr/local/bin/qemu-system-x86_64
    [root@jay-linux qemu-kvm.git]# which qemu-img
    /usr/local/bin/qemu-img
    [root@jay-linux qemu-kvm.git]# ls /usr/local/share/qemu/
    bamboo.dtb        mpc8544ds.dtb     petalogix-ml605.dtb       pxe-pcnet.rom    slof.bin            vgabios-vmware.bin
    bios.bin          multiboot.bin     petalogix-s3adsp1800.dtb  pxe-rtl8139.rom  spapr-rtas.bin
    cpus-x86_64.conf  openbios-ppc      ppc_rom.bin               pxe-virtio.rom   vgabios.bin
    keymaps           openbios-sparc32  pxe-e1000.rom             qemu-icon.bmp    vgabios-cirrus.bin
    kvmvapic.bin      openbios-sparc64  pxe-eepro100.rom          s390-zipl.rom    vgabios-qxl.bin
    linuxboot.bin     palcode-clipper   pxe-ne2k_pci.rom          sgabios.bin      vgabios-stdvga.bin
    [root@jay-linux qemu-kvm.git]# ls /usr/local/share/qemu/keymaps/
    ar    common  de     en-gb  es  fi  fr     fr-ca  hr  is  ja  lv  modifiers  nl-be  pl  pt-br  sl  th
    bepo  da      de-ch  en-us  et  fo  fr-be  fr-ch  hu  it  lt  mk  nl         no     pt  ru     sv  tr

    由于qemu-kvm是用户空间的程序,安装之后不用重启系统,直接用qemu-system-x86_64、qemu-img这样的命令行工具即可使用qemu-kvm了。

  • 相关阅读:
    04:求整数的和与均值
    03:均值
    02:财务管理
    C8-3 三角形还是长方形? (100/100 分数)
    C8-2 圆的周长和面积 (100/100 分数)
    C8-1 复数加减乘除 (100/100 分数)
    C7-3 用类实现a+b (100/100 分数)
    C7-2 多继承 (100/100 分数)
    C7-1 账户类(100/100)
    数组第k小数
  • 原文地址:https://www.cnblogs.com/dream397/p/13926042.html
Copyright © 2020-2023  润新知