QEMU搭建X86_64 + Ubuntu虚拟系统环境

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

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

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

一、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中设置;若使用虚拟机,可以在虚拟机软件中设置:
在这里插入图片描述
开启后可以通过命令检查是支持KVM

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

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

配置完重启虚拟机可能会遇到不支持嵌套虚拟化的提示如
在这里插入图片描述
可以参考这个教程:https://blog.csdn.net/Officialcareer/article/details/120800562
但是仍然无法解决我的这个错误。

虚拟机访问物理资源时一定是需要通过VMM去建立一个虚拟的Ring0权限的,二内核隔离开启后, 默认会启动hybrid-v, 这个东西和虚拟机是冲突的,所以我就想会不会时Windows升级的过程中默认开启了内核隔离功能,当我打开Windows安全中心>设备安全性>内核隔离,果然是打开的,然后我就关闭了内核隔离,重启了电脑:
在这里插入图片描述
成功进入虚拟机!

三、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命令是之后要用到的
在这里插入图片描述

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(https://blog.csdn.net/CH_sir/article/details/107784528)

–target-list:

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

在这里插入图片描述

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

在这里插入图片描述

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

正在安装的截图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
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   

在这里插入图片描述

(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

在这里插入图片描述
在这里插入图片描述

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

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

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

在这里插入图片描述
在这里插入图片描述

五、可能遇到的问题

1.编译qemu时提示缺少GCC-7.4
在这里插入图片描述

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版本

参考文章

https://blog.csdn.net/Officialcareer/article/details/120800562
https://blog.csdn.net/M82_A1/article/details/98946271
https://www.cnblogs.com/bakari/p/7858029.html

  • 7
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
根据提供的引用内容,这是一个关于QEMU虚拟机的配置问题。具体来说,这个问题涉及到如何在x86_64主机上为x86_64 QEMU域配置CPU模式为“passthrough”。 为了解决这个问题,您需要按照以下步骤进行操作: 1. 确保您的主机支持Intel VT-x或AMD-V虚拟化技术,并且已经启用了这些技术。 2. 安装QEMU和相关的虚拟化软件包。您可以使用以下命令在Ubuntu上安装它们: ```shell sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils cpu-checker ``` 3. 检查您的CPU是否支持虚拟化,并且已经启用了虚拟化支持。您可以使用以下命令检查: ```shell kvm-ok ``` 如果输出结果为“INFO: /dev/kvm exists”和“KVM acceleration can be used”,则表示您的CPU支持虚拟化,并且已经启用了虚拟化支持。 4. 创建一个QEMU域,并将CPU模式设置为“passthrough”。您可以使用以下命令创建一个名为“vm1”的QEMU域,并将CPU模式设置为“passthrough”: ```shell virt-install \ --name vm1 \ --ram 2048 \ --disk path=/var/lib/libvirt/images/vm1.img,size=20 \ --vcpus=2 \ --cpu host-passthrough \ --cdrom /path/to/iso \ --os-type linux \ --os-variant ubuntu18.04 \ --network bridge=br0 \ --graphics vnc,listen=0.0.0.0 ``` 在这个命令中,您需要将“/path/to/iso”替换为您要安装的操作系统的ISO文件的路径。此外,您还需要将“br0”替换为您要使用的网络桥接的名称。 至此,您已经成功地为x86_64 QEMU域配置了CPU模式为“passthrough”。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值