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_
【微信公众号】 张昺华
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
原文地址:https://www.cnblogs.com/sky-heaven/p/15123910.html