一、写在前面
主要介绍qemu在Centos中的安装过程,以及遇到的一些麻烦。网上教程好多都是在Ubuntu环境下的安装,但是公司给的环境大都是Centos,没办法花了一天的时间,磕磕绊绊弄好了。
QEMU的安装方式一般有两种:
方式1:一种是使用yum源安装:这种方式对于qemu-system-x86_64命令不识别。
yum install qemu-kvm
方式2:使用QEMU源码进行编译安装,会比较复杂,可能需要安装各种依赖,但可以解决上述问题。
二、QEMU源码编译安装:
下载源码:官网地址:https://www.qemu.org/download/
可以下载安装包后解压,也可用git下载,两种方式在官网主页就有。我这里使用安装包的方式,以下是整个安装的过程,三步:配置./configure生成Makefile——编译源码——安装。
wget https://download.qemu.org/qemu-7.0.0.tar.xz
tar xvJf qemu-7.0.0.tar.xz
mkdir build && cd build #在下载目录新建文件夹build,一般不会在源码目录中编译。
//配置
../configure --prefix=/usr/local/qemu --target-list="x86_64-softmmu"
#--prefix 指定安装的目录,其实默认好像也是这个目录。
#--target-list 这里只配置了x86_64平台,想要其他平台可以用 ./configure --help 查看可以配置的平台。
//编译
make -j16 #有8个内核
//安装
make install
./configure是一个脚本,会自动检查系统环境,比如编译构建工具是否齐全,源码目录、依赖库目录、安装目录、系统平台和构架信息等其他编译选项。这些信息可以保持默认或通过参数传递给configure。然后configure会根据这些信息生成一个Makefile文件。
make命令会根据Makefile进行编译过程,参数 -j 用来指定编译过程可以同时并行任务的个数,一般为CPU核数的倍数。
make install是将编译好的二进制文件安装到系统上。
三、编译安装过程的问题:
1、./configre过程中:这个过程可能会出现各种问题,缺少各种依赖和库文件。
(1)ERROR: Cannot find Ninja
解决办法:安装re2c,安装Ninja,在安装Ninja时很有可能python版本不够高,还得升级python的版本。
Python镜像网站 国内通过官网下载python时超级慢,用镜像网站会快很多。
以上几个文档基本解决了我的问题,可以好好参考一下。
(2)ERROR: glib-2.48 gthread-2.0 is required to compile QEMU
解决办法:安装对应的包
yum install glib2 glib2-devel
(3)ERROR:Dependency "pixman-1" not found, tried pkgconfig
解决办法:没有安装pixman,下载pixman源码后编译安装。下载地址:pixman源码地址
wget https://www.cairographics.org/releases/pixman-0.40.0.tar.gz #下载的是0.40版本
tar -xzvf pixman-0.40.0.tar.gz
cd pixman-0.40.0
./configure #生成Makefile文件
make && make install #编译及安装
安装完成后,找到pixman-1.pc的路径 ,然后修改PKG_CONFIG_PATH它的值:
[root@awesome build]# find / -name "pixman-1.pc"
/usr/local/lib/pkgconfig/pixman-1.pc
[root@awesome build]# export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/" //设置环境变量
使用export设置的环境变量,在另一个shell中是不会生效的,所以后续可能还要设置环境变量。
参考文档:centos安装qemu遇到Dependency “pixman-1“ not found的问题
(4)ERROR: glib-2.56 gthread-2.0 is required to compile QEMU
解决办法:
# yum install glib2
# yum install glib2-devel
(5)ERROR: Dependency "sdl2" not found
解决办法:SDL2是一种多媒体的包文件,如果想要启动qemu界面的话,要正确配置。我把yum search sdl找到的源能安装的都安装了,还是不行,最后找到官网下载源码安装的,可以按这个文档操作:sdk安装
这个要是实在安装不了,或者安装了即支持了sdl,而qemu界面也启动不了也没关系,用命令行调试也可以,不影响。
git clone https://github.com/libsdl-org/SDL
cd SDL
mkdir build
cd build
../configure
make
sudo make install
安装后的截图:这是安装了所有的平台。
四:总结
不同的环境下可能会遇到各种问题,我能收集并解决的问题如上了,解决不了的大家慢慢搜索吧,多分享。
另几个参考文档也可以看一看:
Booting a Custom Linux Kernel in QEMU and Debugging It With GDB