QEMU搭建X86_64 + Ubuntu虚拟系统环境 本文记录一下学习和使用QEMU虚拟工具的过程,初次尝试,如有错误请各位大佬帮忙指正。

提示:不推荐在低版本的Ubuntu中操作,QEMU需要很多依赖所用到的版本比较高,低版本ubuntu系统无法一键安装或者升级到对应的高版本的依赖,需要手动下载安装,期间可能会遇到各种问题,建议还是用20或以上的版本,避免很多麻烦。

当前环境: Workstation 16 Pro、Ubuntu20.04

文章目录:

  • 一、qemu介绍
  • 二、查看环境
  • 1.编译工具
  • 2.查看系统是否支持KVM
  • 3.修复主机不支持KVM嵌套虚拟化
  • 三、qemu安装
  • 1.安装依赖
  • 2.下载qemu源码
  • 3.编译qemu
  • 四、安装linux操作系统
  • 4.1 无图形界面安装
  • (1).操作系统镜像下载
  • (2).创建虚拟硬盘
  • (3).虚拟机安装
  • (4).再次打开创建的虚拟机
  • 4.2 制作一个有图形界面的虚拟系统
  • (1).操作系统镜像下载
  • (2).创建虚拟硬盘
  • (3).安装ubuntu20.04图形界面的系统
  • (4).再次打开创建的虚拟机
  • 五、可能遇到的问题
  • 参考文章

一、qemu介绍

QEMU 是一个通用的开源机器仿真器和虚拟化器。

当用作机器仿真器时,QEMU 可以在另一台机器(例如您自己的 PC)上运行为一台机器(例如 ARM 板)制作的操作系统和程序。通过使用动态平移,它实现了非常好的性能。

当用作虚拟器时,QEMU 通过直接在主机 CPU 上执行客户机代码来实现接近本机的性能。QEMU 在 Xen hypervisor 下执行或使用 Linux 中的 KVM 内核模块时支持虚拟化。使用 KVM 时,QEMU 可以虚拟化 x86、服务器和嵌入式 PowerPC、64 位 POWER、S390、32 位和 64 位 ARM 以及 MIPS 客户机。 QEMU是一个支持跨平台虚拟化的虚拟机,QEMU的优势是可以跨指令集,VMware和Virtualbox之类的工具通常只能在x86计算机上虚拟出一个x86计算机,而QEMU支持在x86上虚拟出一个ARM计算机

二、查看环境

1.编译工具

$ gcc -v    # gcc版本不低于7.40
$ dpkg -l | grep glib    # 查看glib

2.查看系统是否支持KVM

开启处理器中的虚拟化 Intel VT-x/EPT或AMD-V/RVI(V)选项,若使用主机,请在BIOS中设置;若使用虚拟机,可以在虚拟机软件中设置:

qemu 虚拟镜像如何挂载本地共享文件目录 qemu虚拟软件_Ubuntu

开启后可以通过命令检查是支持KVM:

$ grep -E '(vmx|svm)' /proc/cpuinfo	# cpu虚拟化支持
$ lsmod|grep kvm   # 查看Linux内核是否已安装KVM内核模块

3.修复主机不支持KVM嵌套虚拟化

配置完重启虚拟机可能会遇到不支持嵌套虚拟化的提示如

qemu 虚拟镜像如何挂载本地共享文件目录 qemu虚拟软件_ubuntu_02

可以参考这个教程:

但是仍然无法解决我的这个错误。虚拟机访问物理资源时一定是需要通过VMM去建立一个虚拟的Ring0权限的,二内核隔离开启后, 默认会启动hybrid-v, 这个东西和虚拟机是冲突的,所以我就想会不会时Windows升级的过程中默认开启了内核隔离功能,当我打开Windows安全中心>设备安全性>内核隔离,果然是打开的,然后我就关闭了内核隔离,重启了电脑:

qemu 虚拟镜像如何挂载本地共享文件目录 qemu虚拟软件_ubuntu_03

成功进入虚拟机!

三、qemu安装

1.安装依赖

apt-get update
# 下载依赖项
apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev
apt-get install libaio-dev libbluetooth-dev libbrlapi-dev libbz2-dev
apt-get install libnfs-dev libiscsi-dev
# 实际编译时还需要这个依赖
sudo apt-get install ninja-build

2.下载qemu源码

2.1 从git克隆 QEMU / QEMU · GitLab

git clone https://gitlab.com/qemu-project/qemu.git

git下载qemu成功后会产生一个cd进入到qemu目录下,ls查看所有文件如下,其中configure命令是之后要用到的

qemu 虚拟镜像如何挂载本地共享文件目录 qemu虚拟软件_运维_04

2.2 官网下载qemu-5.1.0.tar.xz

# 解压Qemu源码
$ xz -d qemu-5.1.0.tar.xz
$ tar xvf qemu-5.1.0.tar

3.编译qemu

对编译不太熟悉的同学可以看看这篇文章

3.1 创建一个工作空间来编译: 以官网下载的源码为例

$ cd qemu-5.1.0
# Prepare a native debug build.
$ mkdir -p bin/debug/native
$ cd bin/debug/native
# Return to the QEMU root directory.
$ cd ../../..

3.2 编译解释 configure为shell脚本,用于生成Makefile,其使用方法可使用如下命令查看:

./configure --help

–enable-kvm:

编译KVM模块,是qemu可利用KVM来访问硬件提供的虚拟化服务

–enable-vnc:

启动VNC(远程控制工具软件)

拓展:VNC()

–target-list:

目标机器的构架,默认是将所有架构都编译,为了更快完成编译,指定需要的架构即可。

qemu 虚拟镜像如何挂载本地共享文件目录 qemu虚拟软件_Ubuntu_05

3.3 开始编译 这里选择x86_64-softmmu

$ cd bin/debug/native
$ ../../../configure --enable-kvm --enable-debug --enable-vnc --target-list="x86_64-softmmu"
$ make -j8
$ make install

# 通过指令查看编译是否成功
$ qemu-system-x86_64 -M help

qemu 虚拟镜像如何挂载本地共享文件目录 qemu虚拟软件_虚拟化_06

四、安装linux操作系统

4.1 无图形界面安装

(1).操作系统镜像下载

Ubuntu镜像下载地址 这里下载的版本是ubuntu-20.04.5-live-server-amd64.iso

(2).创建虚拟硬盘

利用qemu-img指令可以创建1个空的虚拟硬盘,便于后面安装的时候将系统安装到虚拟硬盘上 进入到工作空间/qemu/bin/debug/native目录下 使用以下命令创建虚拟硬盘

qemu-img create ubuntu-20.04.5-amd64.img 10G

在当前目录下会生成ubuntu20.04.5-amd64.img这样一个文件

(3).虚拟机安装

将上面的镜像文件ubuntu-20.04.5-live-server-amd64.iso 放 在/qemu/bin/debug/native该目录下

qemu 虚拟镜像如何挂载本地共享文件目录 qemu虚拟软件_Ubuntu_07

然后使用以下命令安装:

qemu-system-x86_64 -m 2048 -smp 2 --enable-kvm ubuntu-20.04.5-amd64.img -cdrom ubuntu-20.04.5-live-server-amd64.iso

-m 2048 —— 给客户机分配2G内存(也可以输入“2G”); -smp 2 —— 指定客户机为对称多处理器结构并分配2个CPU; –enable-kvm —— 允许kvm(速度快很多) -cdrom * —— 分配客户机的光驱

ps:输入上述命令会直接进入安装界面,如果命令行卡在那里(没有报错),大概率是没有正常安装,检查命令中的参数是否正确,**(如无特殊需求,建议只用这几个基本参数就好)**然后重新执行安装命令。

正在安装的截图:

qemu 虚拟镜像如何挂载本地共享文件目录 qemu虚拟软件_运维_08

qemu 虚拟镜像如何挂载本地共享文件目录 qemu虚拟软件_虚拟化_09

qemu 虚拟镜像如何挂载本地共享文件目录 qemu虚拟软件_运维_10

Ubuntu无图形界面安装步骤参考

(4).再次打开创建的虚拟机

启动虚拟机输入命令如下:(不再加载iso镜像)

qemu-system-x86_64 -m 2048 -smp 2 --enable-kvm ubuntu-20.10-desktop-amd64.img

第一次用此命令开启虚拟机可能会有点慢,需要耐心等待

至此通过QEMU工具安装无界面Ubuntu x86_64虚拟系统完成!接下来尝试带图形UI的Ubuntu

4.2 制作一个有图形界面的虚拟系统

(1).操作系统镜像下载

下载Ubuntu桌面版ubuntu-20.04.4-desktop-amd64.iso

(2).创建虚拟硬盘

emu-img create -f qcow2 test-vm-2.qcow2 10G

qemu 虚拟镜像如何挂载本地共享文件目录 qemu虚拟软件_运维_11

(3).安装ubuntu20.04图形界面的系统

qemu-system-x86_64 -m 2048 -smp 2 --enable-kvm test-vm-2.qcow2 -cdrom ubuntu-20.04.4-desktop-amd64.iso

qemu 虚拟镜像如何挂载本地共享文件目录 qemu虚拟软件_虚拟化_12

qemu 虚拟镜像如何挂载本地共享文件目录 qemu虚拟软件_虚拟化_13

(4).再次打开创建的虚拟机

重新启动有点慢,需要耐心等待

qemu-system-x86_64 -m 2048 -smp 2 --enable-kvm test-vm-2.qcow2

qemu 虚拟镜像如何挂载本地共享文件目录 qemu虚拟软件_linux_14

qemu 虚拟镜像如何挂载本地共享文件目录 qemu虚拟软件_运维_15

五、可能遇到的问题

1.编译qemu时提示缺少GCC-7.4

qemu 虚拟镜像如何挂载本地共享文件目录 qemu虚拟软件_虚拟化_16

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-7 g++-7
gcc-7 --version

如果仍无法解决: 下载gcc-7.4的tar.gz安装包

apt-get remove gcc  # 删除原有的gcc
tar -zxvf gcc-7.4.0.tar.gz    # 解压tar.gz
cd gcc-7.4.0
# 创建一个build目录,在该目录下编译,避免污染源码。
mkdir build
cd build
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
make
make install

gcc -v    # 查看gcc版本

参考文章