0
点赞
收藏
分享

微信扫一扫

编译安装QEMU虚拟机

一、安装环境

操作平台:VMware Workstation 17 Pro

虚拟机操作系统:RockyLinux 8.9

虚拟化引擎:Intel VT-x 打开

编译安装QEMU虚拟机_QEMU

二、安装依赖包

[root@localhost ~]# yum install -y gcc gcc-c++ make autoconf automake libtool zlib-devel libaio-devel pixman-devel glib2 glib2-devel python38 git
[root@localhost ~]# git clone https://kkgithub.com/skvadrik/re2c
[root@localhost ~]# cd re2c
[root@localhost re2c]# ./autogen.sh
[root@localhost re2c]# ./configure
[root@localhost re2c]# make
[root@localhost re2c]# make install
[root@localhost re2c]# cd
[root@localhost ~]#
[root@localhost ~]# clone https://kkgithub.com/ninja-build/ninja.git
[root@localhost ~]# cd ninja
[root@localhost ~]# ./configure.py --bootstrap
[root@localhost ~]# cp ninja /usr/bin
[root@localhost ~]# ninja --version
[root@localhost ~]# ninja --version
1.12.0.git
[root@localhost ~]#

三、安装QEMU

获取QEMU源码包,可以从QEMU官网上下载QEMU源码的tar包,以命令行下载5.0.0版本的QEMU为例:

[root@localhost ~]# wget https://download.qemu.org/qemu-5.0.0.tar.xz
[root@localhost ~]# tar xJf qemu-5.0.0.tar.xz
[root@localhost ~]# cd qemu-5.0.0/
[root@localhost qemu-5.0.0]# ./configure 
[root@localhost qemu-5.0.0]# make && make install
====================================================
这个过程大约需要等待1小时,硬件性能越好编译安装越快
====================================================

[root@node1 qemu-8.2.0]# yum -y install python38
Last metadata expiration check: 0:28:20 ago on Sun 14 Jan 2024 09:27:35 AM CST.
Dependencies resolved.
==========================================================================================================================================================================================================================================================
 Package                                                           Architecture                                   Version                                                                         Repository                                         Size
==========================================================================================================================================================================================================================================================
Installing:
 python38                                                          x86_64                                         3.8.17-2.module+el8.9.0+1418+f0d66789                                           appstream                                          80 k
Installing dependencies:
 python38-libs                                                     x86_64                                         3.8.17-2.module+el8.9.0+1418+f0d66789                                           appstream                                         8.3 M
 python38-pip-wheel                                                noarch                                         19.3.1-7.module+el8.9.0+1418+f0d66789                                           appstream                                         1.0 M
 python38-setuptools-wheel                                         noarch                                         41.6.0-5.module+el8.9.0+1418+f0d66789                                           appstream                                         303 k
Installing weak dependencies:
 python38-pip                                                      noarch                                         19.3.1-7.module+el8.9.0+1418+f0d66789                                           appstream                                         1.7 M
 python38-setuptools                                               noarch                                         41.6.0-5.module+el8.9.0+1418+f0d66789                                           appstream                                         666 k
Enabling module streams:
 python38                                                                                                         3.8                                                                                                                                    

Transaction Summary
==========================================================================================================================================================================================================================================================
Install  6 Packages

Total download size: 12 M
Installed size: 44 M
Downloading Packages:
(1/6): python38-3.8.17-2.module+el8.9.0+1418+f0d66789.x86_64.rpm                                                                                                                                                          476 kB/s |  80 kB     00:00    
(2/6): python38-pip-wheel-19.3.1-7.module+el8.9.0+1418+f0d66789.noarch.rpm                                                                                                                                                1.3 MB/s | 1.0 MB     00:00    
(3/6): python38-pip-19.3.1-7.module+el8.9.0+1418+f0d66789.noarch.rpm                                                                                                                                                      1.2 MB/s | 1.7 MB     00:01    
(4/6): python38-setuptools-41.6.0-5.module+el8.9.0+1418+f0d66789.noarch.rpm                                                                                                                                               1.2 MB/s | 666 kB     00:00    
(5/6): python38-setuptools-wheel-41.6.0-5.module+el8.9.0+1418+f0d66789.noarch.rpm                                                                                                                                         1.3 MB/s | 303 kB     00:00    
(6/6): python38-libs-3.8.17-2.module+el8.9.0+1418+f0d66789.x86_64.rpm                                                                                                                                                     2.1 MB/s | 8.3 MB     00:03    
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                                                                     2.5 MB/s |  12 MB     00:04     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                                                                                  1/1 
  Installing       : python38-setuptools-wheel-41.6.0-5.module+el8.9.0+1418+f0d66789.noarch                                                                                                                                                           1/6 
  Installing       : python38-pip-wheel-19.3.1-7.module+el8.9.0+1418+f0d66789.noarch                                                                                                                                                                  2/6 
  Installing       : python38-libs-3.8.17-2.module+el8.9.0+1418+f0d66789.x86_64                                                                                                                                                                       3/6 
  Installing       : python38-3.8.17-2.module+el8.9.0+1418+f0d66789.x86_64                                                                                                                                                                            4/6 
  Running scriptlet: python38-3.8.17-2.module+el8.9.0+1418+f0d66789.x86_64                                                                                                                                                                            4/6 
  Installing       : python38-setuptools-41.6.0-5.module+el8.9.0+1418+f0d66789.noarch                                                                                                                                                                 5/6 
  Running scriptlet: python38-setuptools-41.6.0-5.module+el8.9.0+1418+f0d66789.noarch                                                                                                                                                                 5/6 
  Installing       : python38-pip-19.3.1-7.module+el8.9.0+1418+f0d66789.noarch                                                                                                                                                                        6/6 
  Running scriptlet: python38-pip-19.3.1-7.module+el8.9.0+1418+f0d66789.noarch                                                                                                                                                                        6/6 
  Verifying        : python38-3.8.17-2.module+el8.9.0+1418+f0d66789.x86_64                                                                                                                                                                            1/6 
  Verifying        : python38-libs-3.8.17-2.module+el8.9.0+1418+f0d66789.x86_64                                                                                                                                                                       2/6 
  Verifying        : python38-pip-19.3.1-7.module+el8.9.0+1418+f0d66789.noarch                                                                                                                                                                        3/6 
  Verifying        : python38-pip-wheel-19.3.1-7.module+el8.9.0+1418+f0d66789.noarch                                                                                                                                                                  4/6 
  Verifying        : python38-setuptools-41.6.0-5.module+el8.9.0+1418+f0d66789.noarch                                                                                                                                                                 5/6 
  Verifying        : python38-setuptools-wheel-41.6.0-5.module+el8.9.0+1418+f0d66789.noarch                                                                                                                                                           6/6 

Installed:
  python38-3.8.17-2.module+el8.9.0+1418+f0d66789.x86_64                           python38-libs-3.8.17-2.module+el8.9.0+1418+f0d66789.x86_64                       python38-pip-19.3.1-7.module+el8.9.0+1418+f0d66789.noarch                             
  python38-pip-wheel-19.3.1-7.module+el8.9.0+1418+f0d66789.noarch                 python38-setuptools-41.6.0-5.module+el8.9.0+1418+f0d66789.noarch                 python38-setuptools-wheel-41.6.0-5.module+el8.9.0+1418+f0d66789.noarch                

Complete!
[root@node1 qemu-8.2.0]#

在RockyLinux 8.9版本的系统环境中,不建议编译安装5.0.0以上版本的QEMU,一些源码包编译过程对编译环境要求较为苛刻,需要安装很多依赖包,由于操作系统的差异以及依赖包的版本迭代,编译环境与源码包的开发环境有较大的不同,导致编译失败,过程中需要不断地手动纠错,如果你对该软件的开发环境不熟悉,出现报错时建议直接更换源码包版本继续尝试,这是最节省时间的做法,一点点经验之谈。博主尝试安装过5.2.0和8.2.0版本,均以失败告终。

编译安装完成以后,就可以看到系统可以使用很多qemu相关的命令了

[root@localhost ~]# qemu-				# 输入qemu后按两次tab键
qemu-aarch64              qemu-i386                 qemu-mips64el             qemu-ppc64abi32           qemu-sparc32plus          qemu-system-lm32          qemu-system-nios2         qemu-system-sh4eb         qemu-trace-stap
qemu-aarch64_be           qemu-img                  qemu-mipsel               qemu-ppc64le              qemu-sparc64              qemu-system-m68k          qemu-system-or1k          qemu-system-sparc         qemu-x86_64
qemu-alpha                qemu-io                   qemu-mipsn32              qemu-pr-helper            qemu-storage-daemon       qemu-system-microblaze    qemu-system-ppc           qemu-system-sparc64       qemu-xtensa
qemu-arm                  qemu-keymap               qemu-mipsn32el            qemu-riscv32              qemu-system-aarch64       qemu-system-microblazeel  qemu-system-ppc64         qemu-system-tricore       qemu-xtensaeb
qemu-armeb                qemu-m68k                 qemu-nbd                  qemu-riscv64              qemu-system-alpha         qemu-system-mips          qemu-system-riscv32       qemu-system-unicore32     
qemu-cris                 qemu-microblaze           qemu-nios2                qemu-s390x                qemu-system-arm           qemu-system-mips64        qemu-system-riscv64       qemu-system-x86_64        
qemu-edid                 qemu-microblazeel         qemu-or1k                 qemu-sh4                  qemu-system-cris          qemu-system-mips64el      qemu-system-rx            qemu-system-xtensa        
qemu-ga                   qemu-mips                 qemu-ppc                  qemu-sh4eb                qemu-system-hppa          qemu-system-mipsel        qemu-system-s390x         qemu-system-xtensaeb      
qemu-hppa                 qemu-mips64               qemu-ppc64                qemu-sparc                qemu-system-i386          qemu-system-moxie         qemu-system-sh4           qemu-tilegx     
[root@localhost ~]# 
[root@localhost ~]# which qemu-img 
/usr/local/bin/qemu-img

查看qemu版本

[root@localhost ~]# qemu-img -V
qemu-img version 5.0.0
Copyright (c) 2003-2020 Fabrice Bellard and the QEMU Project developers

四、创建及使用虚拟机

第一步:检查硬件是否支持虚拟化,如果有输出则表示硬件有虚拟化支持

[root@localhost ~]# egrep -o 'vmx|svm' /proc/cpuinfo
vmx
vmx

第二步:QEMU使用KVM来提升虚拟机性能,如果不启用KVM会导致性能损失。要使用KVM,首先要检查硬件是否有虚拟化支持,如果kvm_intel/kvm_amd、KVM模块被显示出来,则KVM模块已经加载。

[root@localhost ~]# lsmod | grep kvm
kvm_intel             344064  0
kvm                   962560  1 kvm_intel
irqbypass              16384  1 kvm

第三步:使用qemu-img create命令创建虚拟机镜像。虚拟机镜像用来模拟虚拟机的磁盘,在启动虚拟机之前需要创建镜像文件

[root@localhost ~]# qemu-img create -f qcow2 /opt/openEuler.qcow2 30G
Formatting '/opt/openEuler.qcow2', fmt=qcow2 size=32212254720 cluster_size=65536 lazy_refcounts=off refcount_bits=16

-f选项用于指定镜像的格式,qcow2格式是QEMU最常用的镜像格式。openEuler.qcow2是镜像文件的名字,存放在/opt目录下,30G是镜像文件大小。

可以使用qemu-img info命令查看虚拟磁盘信息,创建出来的虚拟磁盘不会立即分配所有空间

[root@localhost ~]# ls -lh /opt/openEuler.qcow2 
-rw-r--r--. 1 root root 193K Jan 14 13:56 /opt/openEuler.qcow2
[root@localhost ~]# 
[root@localhost ~]# qemu-img info /opt/openEuler.qcow2 
image: /opt/openEuler.qcow2
file format: qcow2
virtual size: 30 GiB (32212254720 bytes)
disk size: 196 KiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

镜像文件创建完成后,可使用qemu-system-x86来启动x86架构的虚拟机:

[root@localhost ~]# qemu-system-x86_64 /opt/openEuler.qcow2
VNC server running on ::1:5900

此时虚拟机已经启动了,开放了一个vnc端口“5900”,我们新建一个窗口,查看端口监听状态

[root@localhost ~]# ss -tulnp | grep 5900
tcp   LISTEN 0      1           127.0.0.1:5900       0.0.0.0:*    users:(("qemu-system-x86",pid=57236,fd=11))             
tcp   LISTEN 0      1               [::1]:5900          [::]:*    users:(("qemu-system-x86",pid=57236,fd=9))

默认监听在本机环回地址上“127.0.0.1”,还需要安装一个vnc工具,来连接虚拟机

[root@localhost ~]# yum -y install tigervnc

安装完成以后,在桌面就会出现这样一个图标,鼠标点击它打开

编译安装QEMU虚拟机_Linux_02

输入IP:Port,点击Connect

编译安装QEMU虚拟机_QEMU_03

编译安装QEMU虚拟机_虚拟机_04

因为/opt/openEuler.qcow2虚拟磁盘中并未给虚拟机安装操作系统,所以会提示“No bootable device”,无可启动设备。

第四步:准备操作系统镜像,以openEuler为例

[root@localhost ~]# wget -P /opt https://mirrors.ustc.edu.cn/openeuler/openEuler-20.03-LTS/ISO/x86_64/openEuler-20.03-LTS-x86_64-dvd.iso
[root@localhost ~]# ls -lh /opt/openEuler-20.03-LTS-x86_64-dvd.iso 
-rw-r--r--. 1 root root 4.2G Mar 26  2020 /opt/openEuler-20.03-LTS-x86_64-dvd.iso

第五步:启动带有cdrom的虚拟机

[root@localhost ~]# qemu-system-x86_64 -m 2048 -enable-kvm /opt/openEuler.qcow2 -cdrom /opt/openEuler-20.03-LTS-x86_64-dvd.iso 
VNC server running on ::1:5900

-m指定虚拟机内存大小,默认单位是MB, -enable-kvm使用KVM进行加速,-cdrom添加openEuler的安装镜像。可使用vnc工具连接虚拟机进入控制台,安装操作系统,安装完成后重起虚拟机便会从硬盘(/opt/openEuler.qcow2)启动。

编译安装QEMU虚拟机_编译安装_05

系统安装中...

编译安装QEMU虚拟机_编译安装_06

安装完成后点击“Reboot”重启

编译安装QEMU虚拟机_虚拟机_07

虚拟机自动从虚拟磁盘启动

编译安装QEMU虚拟机_QEMU_08

进入系统后,查看ip地址,ping外网试试

编译安装QEMU虚拟机_QEMU_09

在虚拟机vnc控制台中,执行关机命令

# shutdown -h

vnc控制台自动退出,宿主机命令行恢复等待输入状态

编译安装QEMU虚拟机_虚拟机_10

之后再启动这台虚拟机只需要执行:

# qemu-system-x86_64 -m 2048 -enable-kvm /opt/openEuler.qcow2

编译安装QEMU虚拟机_编译安装_11

五、安装图形化界面管理虚机

命令行启动虚拟机比较繁琐,适合开发者,但对于普通用户来说,采用图形界面管理虚拟机则更为方便。采用图形界面管理QEMU虚拟机需要安装virt-manager,RHEL 系列的发行版只需要执行命令:

[root@localhost ~]# yum -y install virt-manager

安装完成后,在桌面应用程序中会出现这样一个图标,这个就是virt-manager

编译安装QEMU虚拟机_虚拟机_12

鼠标单击它打开,通过这个图形化工具,也可以用来管理QEMU/KVM虚拟机,但是通过qemu-system-x86_64命令手动创建的虚拟机默认是看不到的

编译安装QEMU虚拟机_KVM_13

或者通过命令行输入“virt-manager”回车,也可以打开它

编译安装QEMU虚拟机_编译安装_14

我们可以通过它来新建一个虚拟机,这个就不展开操作了

编译安装QEMU虚拟机_编译安装_15


参阅

QEMU 1: 使用QEMU创建虚拟机 - 码农教程

ninja简介及安装_ninja安装-CSDN博客

CentOS安装QEMU详细教程 - 小四LINUX

CentOS/Redflag 7.3安装qemu 5.0记录 - wswang - 博客园

qemu-system-x86_64方式创建KVM虚拟机-CSDN博客

qemu-img命令详解-CSDN博客

qemu-img详解_笔记大全_设计学院

QEMU - Arch Linux 中文维基

举报

相关推荐

0 条评论