虚拟化系列教程-安装QEMU/KVM的三种方式

RedHat Linux KVM 安装

RedHat 有两款产品提供 KVM 虚拟化:

  1. Red Hat Enterprise Linux:适用于小的环境,提供数目较少的KVM虚机。
  2. Red Hat Enterprise Virtualization (RHEV):提供企业规模的KVM虚拟化环境,包括更简单的管理、HA,性能优化和其它高级功能。
    RedHat Linux KVM:
     KVM 由 libvirt API 和基于该 API的一组工具进行管理和控制。
     KVM 支持系统资源超分,包括内存和CPU的超分。RedHat Linux 最多支持物理 CPU 内核总数的10倍数目的虚拟CPU,但是不支持在一个虚机上分配超过物理CPU内核总数的虚拟CPU。
     支持 KSM (Kenerl Same-page Merging 内核同页合并)

在安装 RedHat Linux 时安装 KVM

选择安装类型为 Virtualizaiton Host :
在这里插入图片描述

可以选择具体的 KVM 客户端、平台和工具:
在这里插入图片描述

在已有的 RedHat Linux 中安装 KVM

这种安装方式要求该系统已经被注册,否则会报错:
[root@centos8 ~]# yum install –y libvirt* virt-* qemu-kvm*
你至少需要安装 qemu-kvm qemu-img 这两个包。
[root@centos8 ~]# yum install qemu-kvm qemu-img
你还可以安装其它工具包:
[root@centos8 ~]# yum install virt-manager libvirt libvirt-python python-virtinst libvirt-client

QEMU/KVM 代码下载编译安装

QEMU/KVM 的代码结构

QEMU/KVM 的代码包括几个部分:
(1)KVM 内核模块是 Linux 内核的一部分。通常 Linux 比较新的发行版(4.18.0-408.el8.x86_64)都包含了 KVM 内核,也可以从得到。比如在我的RedHat 8.7 上:
[root@centos8 isoimages]# uname -r
4.18.0-408.el8.x86_64
[root@centos8 isoimages]# lsmod |grep kvm
kvm_intel 339968 2
kvm 942080 1 kvm_intel
(2)用户空间的工具即 qemu-kvm。qemu-kvm 是 KVM 项目从 QEMU 新拉出的一个分支。在 QEMU 1.3 版本之前,QEMU 和 QEMU-KVM 是有区别的,但是从 2012 年底 GA 的 QEMU 1.3 版本开始,两者就完全一样了。
(3)Linux Guest OS virtio 驱动,也是较新的Linux 内核的一部分了。

安装 QEMU

(1). 配置好网络源
(2). 安装依赖包
[root@centos8 ~]# yum install -y gcc autoconf automake libtool glib* zlib* gcc+ gcc-c++
(3). 从这里下载代码,上传到我的编译环境 Centos8.
[root@centos8 ~]# wget https://download.qemu.org/qemu-7.2.0.tar.xz
[root@centos8 ~]# tar xvJf qemu-7.2.0.tar.xz
[root@centos8 ~]# mkdir /usr/local/qemu7.2.0
[root@centos8 ~]# cd qemu-7.2.0
[root@centos8 qemu-7.2.0]# mkdir build && cd build
[root@centos8 build]#…/configure --prefix=/usr/local/qemu7.2.0 --enable-vnc --enable-kvm --target-list=“x86_64-softmmu”
[root@centos8 build]# make && make install
又或者,我们可以直接从git上下载和编译QEMU:
[root@centos8 ~]# git clone https://git.qemu.org/git/qemu.git
[root@centos8 ~]# cd qemu
[root@centos8 qemu]# git submodule init
[root@centos8 qemu]# git submodule update --recursive
[root@centos8 qemu]#./configure
[root@centos8 qemu]# make
configure 脚本用于生成 Makefile,其选项可以用 ./configure --help 查看。
这里使用到的选项含义如下:
–prefix 指定安装的目录,其实默认好像也是这个目录。
–enable-kvm:编译 KVM 模块,使 Qemu 可以利用 KVM 来访问硬件提供的虚拟化服务。
–enable-vnc:启用 VNC。
–enalbe-werror:编译时,将所有的警告当作错误处理。
–target-list:选择目标机器的架构。默认是将所有的架构都编译,但为了更快的完成编译,指定需要的架构即可。
./configure是一个脚本,会自动检查系统环境,比如编译构建工具是否齐全,源码目录、依赖库目录、安装目录、系统平台和构架信息等其他编译选项。这些信息可以保持默认或通过参数传递给configure。然后configure会根据这些信息生成一个Makefile文件。
make命令会根据Makefile进行编译过程,参数 -j 用来指定编译过程可以同时并行任务的个数,一般为CPU核数的倍数。
make install是将编译好的二进制文件安装到系统上。
Note
其中我们可以看到aarch64-softmmu,aarch64-linux-user,aarch64_be-linux-user。对于这三个编译选项:
aarch64-softmmu:一般选择,用来跑os的,已经开了软件mmu。
aarch64-linux-user:用于跑app
aarch64_be-linux-user :与上面不同的是,用来跑big-endian的app程序
(4). 安装完成
[root@centos9 ~]# /root/qemu-7.2.0/build/qemu-system-x86_64 --version
QEMU emulator version 7.2.0
Copyright © 2003-2022 Fabrice Bellard and the QEMU Project developers
(5). 为方便起见,将qemu-system-x86_64拷贝到/usr/bin或创建一个link
[root@centos9 ~]# cp /root/qemu-7.2.0/build/qemu-system-x86_64 /usr/bin/
[root@centos9 ~]# qemu-s
qemu-storage-daemon qemu-system-x86_64
[root@centos9 ~]# qemu-system-x86_64
qemu: could not load PC BIOS 'bios-256k.bin
[root@centos9 ~]# ln -s /usr/bin/qemu-system-x86_64 /usr/bin/qemu-kvm
至此执行qemu-system-x86_64 --help可以查看帮助信息了。

编译安装过程的问题:

1、./configre过程中:这个过程可能会出现各种问题,缺少各种依赖和库文件。
(1)ERROR: Cannot find Ninja
解决办法:安装re2c,安装Ninja,在安装Ninja时很有可能python版本不够高,还得升级python的版本。
安装 re2c 和 ninja
a、准备编译环境
[root@centos8 ~]# yum -y install git automake gcc+ gcc-c++ libtool
b、获取源码、并编译安装
[root@centos8 ~]# git clone https://github.com/skvadrik/re2c.git re2c
[root@centos8 ~]# cd re2c
[root@centos8 re2c]# mkdir -p m4
[root@centos8 re2c]#./autogen.sh && ./configure --prefix=/usr && make
[root@centos8 re2c]# sudo make install
c、检查是否安装成功
[root@centos8 ~]# re2c -v
re2c 1.1.1
这样就安装完毕了,因为re2c作为基础依赖, 然后可以安装ninja了,ninja官网地址:https://ninja-build.org/,github仓库地址:https://github.com/ninja-build/ninja,可以从github仓库克隆项目切换到release分支或者下载release包,目前最新版是1.11.1,安装过程如下:
[root@centos8 ~]# git clone git://github.com/ninja-build/ninja.git && cd ninja
[root@centos8 ninja]#./configure.py --bootstrap
[root@centos8 ninja]# sudo cp ninja /usr/bin/
现在可以执行 ./configure.py --help 查看帮助,直接执行 ./configure.py --bootstrap 进行编译,编译完成之后,当前目录下会有ninja的可执行文件,执行 ./ninja -h 可以查看帮助。 ninja比较精简,只需要一个可执行文件即可,现在可以做软链或者复制到/usr/bin下面就可以直接调用了,比如: cp ninja /usr/bin/ 然后可以直接使用 ninja 命令,这样就安装好了.
(2)ERROR: glib-2.48 gthread-2.0 is required to compile QEMU
解决办法:安装对应的包
[root@centos8 ~]# yum install glib2 glib2-devel
(3)ERROR:Dependency “pixman-1” not found, tried pkgconfig
解决办法:没有安装pixman,下载pixman源码后编译安装。
[root@centos8 ~]# wget https://www.cairographics.org/releases/pixman-0.40.0.tar.gz #下载的是0.40版本
[root@centos8 ~]# tar -xzvf pixman-0.40.0.tar.gz
[root@centos8 ~]# cd pixman-0.40.0
[root@centos8 pixman-0.40.0]# ./configure #生成Makefile文件
[root@centos8 pixman-0.40.0]# make && make install #编译及安装

安装完成后,找到pixman-1.pc的路径 ,然后修改PKG_CONFIG_PATH它的值:
[root@centos8 ~]# find / -name “pixman-1.pc”
/usr/local/lib/pkgconfig/pixman-1.pc
[root@centos8 ~]# export PKG_CONFIG_PATH=“/usr/local/lib/pkgconfig/” //设置环境变量
使用export设置的环境变量,在另一个shell中是不会生效的,所以后续可能还要设置环境变量。
(4)ERROR: glib-2.56 gthread-2.0 is required to compile QEMU
解决办法:
[root@centos8 ~]# yum install glib2
[root@centos8 ~]# yum install glib2-devel
(5)ERROR: Dependency “sdl2” not found
解决办法:SDL2是一种多媒体的包文件,如果想要启动qemu界面的话,要正确配置。我把yum search sdl找到的源能安装的都安装了,还是不行,最后找到官网下载源码安装的.
这个要是实在安装不了,或者安装了即支持了sdl,而qemu界面也启动不了也没关系,用命令行调试也可以,不影响。
[root@centos8 ~]# git clone https://github.com/libsdl-org/SDL
[root@centos8 ~]# cd SDL
[root@centos8 SDL]# mkdir build
[root@centos8 SDL]# cd build
[root@centos8 build]# …/configure
[root@centos8 build]# make
[root@centos8 build]# sudo make install

猜你喜欢

转载自blog.csdn.net/taoxicun/article/details/128935880