zoukankan      html  css  js  c++  java
  • QEMU 2.10.1 编译安装【转】

    转自:https://blog.csdn.net/candcplusplus/article/details/78320602

    QEMU 2.10.1 编译安装
    原本在 Ubuntu 上可以直接通过apt install qemu-km可以直接安装 QEMU,但是这样安装的版本太低。想用官方的最新版本还得自己编译源码安装。

    本文记录了我在新安装的 Ubuntu 17.10 desktop 安装 QEMU 的过程。

    源码包安装
    下载源码包
    $ wget https://download.qemu.org/qemu-2.10.1.tar.xz
    1
    安装编译工具
    由于我是新安装的系统,所以编译和构建工具都没有。所以先安装一下常用的编译构建工具:

    $ sudo apt install gcc
    $ sudo apt install build-essential
    1
    2
    我还安装了automake,不知需不需要。

    $ sudo apt install automake
    1
    查看 QEMU 的编译信息
    #### 题外话:一般源码的编译过程

    在编译之前先来说明一下编译相关的背景知识。一般通过源码编译安装软件包都要运行下面三条命令:

    shell
    $ ./configure
    $ make
    $ make install

    ./configure是一个脚本会自动检查系统环境,比如编译构建工具是否齐全,源码目录,依赖库目录,安装目录等,系统平台和架构信息,其他编译选项等。这些信息可以保持默认或通过参数传递给 configure。然后configure会根据这些信息生成一个 Makefile文件。./configure -h可以查看它的帮助文档。

    make命令会根据Makefile中的信息真正开始编译过程。make有一个重要的参数-j可以用来指定编译过程可以同时并行多少任务,一般多核 CPU 可以将该参数指定为 CPU 核数来加快编译。

    make install是将编译好的二进制文件安装到系统上。

    在编译 QEMU 之前我们先看一下我们可以配置哪些编译参数:

    $ cd qemu-2.10.1
    $ ./configure -h
    ...
    --target-list=LIST set target list (default: build everything)
    Available targets: aarch64-softmmu alpha-softmmu
    ...
    cris-linux-user hppa-linux-user i386-linux-user ...

    Optional features, enabled with --enable-FEATURE and
    disabled with --disable-FEATURE, default is enabled if available:
    ...
    sdl SDL UI
    --with-sdlabi select preferred SDL ABI 1.2 or 2.0
    gtk gtk UI
    --with-gtkabi select preferred GTK ABI 2.0 or 3.0
    vte vte support for the gtk UI
    curses curses UI
    vnc VNC UI support
    vnc-sasl SASL encryption for VNC server
    vnc-jpeg JPEG lossy compression for VNC server
    vnc-png PNG compression for VNC server
    cocoa Cocoa UI (Mac OS X only)
    virtfs VirtFS
    xen xen backend driver support
    xen-pci-passthrough
    brlapi BrlAPI (Braile)
    curl curl connectivity
    fdt fdt device tree
    bluez bluez stack connectivity
    kvm KVM acceleration support
    ...
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    上面我只贴出了部分输出信息。我大致可以知道我们能指定要生成 QEMU 的平台版本,比如 x86 和 arm。还可以指定需要附加功能,其中比较重要的是 sdl、vnc。

    配置编译选项
    QEMU 默认编译生成所有平台的版本,为了加快编译速度,这里我只选择了我可能会用到的版本。在./configure的--target-list的参数中指定。还选择了 sdl、vnc 的等附加功能。

    由于这些参数太多,我决定把它们写到一个脚本文件 myconfig 中。

    #!/bin/sh
    ./configure --target-list="arm-softmmu,i386-softmmu,x86_64-softmmu,arm-linux-user,i386-linux-user,x86_64-linux-user" --enable-debug --enable-sdl --enable-gtk --enable-vnc --enable-vnc-jpeg --enable-vnc-png --enable-kvm --enable-spice --enable-curl --enable-snappy --enable-tools
    1
    2
    –enable-sdl 是必须的,否则用生成的 QEMU 创建的虚拟机没有画面。启动虚拟机时只会显示一行

    VNC server running on127.0.0.1:5900,这样你就只能通过 VNC 访问虚拟机了。

    如果需要用 VNC 访问虚拟机,可以安装 gvncviewer。

    shell
    $ sudo apt install gvncviewer

    然后

    shell
    $ gvncviewer 127.0.0.1::5900

    就可以看到虚拟机的画面了。

    然后给该脚本文件可执行权限:

    $ sudo chmod +x myconfig
    1
    执行

    $ sudo ./myconfig
    target list arm-softmmu i386-softmmu x86_64-softmmu arm-linux-user i386-linux-user x86_64-linux-user
    pixman system
    SDL support yes (2.0.6)
    GTK support yes (3.22.24)
    curl support yes
    VNC support yes
    VNC SASL support no
    VNC JPEG support yes
    VNC PNG support yes
    ...
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    上面的输出信息表明我们的配置生效了。

    安装编译依赖库
    这些库是根据前面的configure的配置参数,以及我后面运行./configure时缺失提示总结的。

    $ sudo apt install -y pkg-config
    $ sudo apt install -y libpixman-1-dev
    $ sudo apt install -y libfdt-dev
    $ sudo apt install libsdl2-dev # 这个是必须的,否则QEMU无法为虚拟机提供图形界面
    $ sudo apt install libsnappy-dev
    $ sudo apt install libgtk-3-dev
    $ sudo apt install libjpeg-turbo8-dev
    $ sudo apt install libcurl4-openssl-dev
    $ sudo apt install libspice-server-dev
    1
    2
    3
    4
    5
    6
    7
    8
    9
    编译
    $ make -j8
    1
    由于我电脑是 8 核,所以用-j8加快编译。大概一分钟就编译好了。

    我前几天没有通过configure指定要生成的目标平台,也没有给make用-j参数。结果编译了二十多分钟。

    编译完后可以在当前目录看可以执行文件qemu-img,在子目录x86_64-softmm看到qemu-system-x86_64可执行文件,在子目录i386-softmmu看到可执行文件qemu-system-i386。

    安装
    $ sudo make install
    1
    验证一下
    $ qemu-x86_64 --version
    qemu-x86_64 version 2.10.1
    Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers

    $ qemu-system-i386 --version
    QEMU emulator version 2.10.1
    Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers

    1$ qemu-img --version
    qemu-img version 2.10.1
    Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    用 git clone 源码仓库安装
    这种方式我没试过,不知道能不能自动解决依赖问题。

    clone 源码仓库
    官方的 git 代码仓库

    $ git clone git://git.qemu.org/qemu.git
    1
    或者 GitHub 上的镜像源:

    $ git clone git@github.com:qemu/qemu.git
    1
    解决依赖子项目
    $ git submodule init
    $ git submodule update --recursive
    1
    2
    编译安装
    $ ./configure
    $ make
    1
    2
    参考
    https://www.qemu.org/download/#source
    ————————————————
    版权声明:本文为CSDN博主「流沙的刺客」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/candcplusplus/article/details/78320602

    【作者】张昺华
    【大饼教你学系列】https://edu.csdn.net/course/detail/10393
    【新浪微博】 张昺华--sky
    【twitter】 @sky2030_
    【微信公众号】 张昺华
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    【Java EE 学习 36】【struts2】【struts2系统验证】【struts2 ognl值栈】【struts2 ongl标签】【struts2 UI标签】【struts2模型驱动和令牌机制】
    【Java EE 学习 35 下】【struts2】【struts2文件上传】【struts2自定义拦截器】【struts2手动验证】
    【Java EE 学习 35 上】【strus2】【类型转换器】【struts2和Servlet API解耦】【国际化问题】【资源文件乱码问题已经解决】
    【Java EE 学习 34】【struts2学习第一天】
    【JavaScript中的正则表达式】
    【Java EE 学习 33 下】【validate表单验证插件】
    【Java EE 学习 33 上】【JQuery样式操作】【JQuery中的Ajax操作】【JQuery中的XML操作】
    【Java EE 学习 32 下】【JQuery】【JQuey中的DOM操作】
    【Java EE 学习 32 上】【JQuery】【选择器】
    【Java EE 学习 31】【JavaScript基础增强】【Ajax基础】【Json基础】
  • 原文地址:https://www.cnblogs.com/sky-heaven/p/15123910.html
Copyright © 2011-2022 走看看