网站搜索

如何在 Manjaro/Archlinux 上安装 KVM/QEMU


在此页

  1. QEMU 是什么?

KVM是Kernel-based Virtual Machine的缩写,是一种基于Linux内核模块的虚拟化技术解决方案。 KVM 是一种在 Linux x86 机器上运行的开源软件解决方案,支持硬件虚拟化扩展 Intel VT 或 AMD-V。 KVM 内核模块从 2.6.20 版开始就被运往 Linux 内核,并作为可加载内核模块移植到其他操作系统,如 FreeBSD 和 Illumos。

KVM技术将Linux机器变成hypervisor虚拟化,称为宿主机。在主机上,您将能够创建多个称为虚拟机 (VM) 的隔离系统。每个虚拟机都有自己的系统(可以是Linux、Windows或BSD),也有私有的虚拟化硬件,如内存、CPU、网卡、磁盘、显卡等。

什么是 QEMU?

QEMU 或 Quick Emulator 是用于硬件虚拟化的开源系统模拟器和虚拟器。一般作为虚拟器配合KVM内核模块来运行虚拟机。为了让来宾机器/虚拟机获得出色的性能,它将利用硬件虚拟化扩展,例如 Intel VT 或 AMD-V。 QEMU/KVM 虚拟化主要用作数据中心的管理程序。

在本指南中,您将学习如何在 Manjaro/Archlinux 机器上设置 KVM/QEMU 虚拟化。此外,您还将学习如何使用 GUI 应用程序“virt-manager”创建第一个虚拟机 - 一个用于管理虚拟机的桌面用户界面。

先决条件

  • 具有 x86 或 64 位架构的 Manjaro/Archlinux。
  • 具有虚拟化支持的 CPU/处理器(Intel VT 或 AMD-V)。
  • 具有 sudo root 权限的非 root 用户。

检查系统架构和 CPU 虚拟化支持

首先查看机器架构,以及对Intel CPU的虚拟化加速Intel VT和AMD CPU的AMD-v的硬件支持。

1. 执行以下命令检查您系统的系统架构。

uname -m

您将获得以下输出。

Linux machine1 5.4.134-1 #1 SMP PREEMPT Tue Jul 06 08:10:03 UTC 2021 x86_64 GNU/Linux

可以看出,目前使用的是“x86_64”或“64位”架构,内核版本为“5.4”的Linux系统。

2. 接下来,通过运行以下命令检查硬件虚拟化支持。

sudo lscpu | grep Virtualization

对于 Intel 处理器,您将看到类似如下的输出。

Virtualization:                  VT-x

对于 AMD 处理器,下面是类似的输出。

Virtualization:                  AMD-V

3. 或者,您可以使用以下命令在您的计算机上启用嵌套虚拟化。

sudo modprobe -r kvm_intel
sudo modprobe kvm_intel nested=1

之后,执行以下命令来验证嵌套虚拟化。

cat /sys/module/kvm_intel/parameters/nested

如果您得到类似\Y\ 或 \1\ 的输出,则表示启用了功能嵌套虚拟化。否则,您将看到错误消息“没有这样的文件或目录”。

安装 QEMU 和 Virt-Manager 包

1. 要安装 qemu 和 virt-manager 软件包,请运行以下命令。

sudo pacman -S qemu virt-manager libvirt virt-viewer dnsmasq vde2 bridge-utils openbsd-netcat ebtables libguestfs

对于 manjaro 系统,\iptables\ 和 \ebtables\ 之间会存在包冲突。输入 \y\ 删除默认的 iptables 包并将其替换为 \ebtables\ 和 \nftables\。

以下是您必须知道的基本软件包:

  • qemu:一个开源机器模拟器和虚拟器。
  • 虚拟经理;用于管理虚拟机的 GUI 应用程序。
  • libvirt:用于控制 KVM、QEMU 等虚拟化引擎的 API。
  • dnsmasq:轻量级 DNS 转发器和 DHCP 服务器。
  • bridge-utils:用于配置 Linux 以太网桥的实用程序。
  • libguestfs:用于修改虚拟机 (VM) 磁盘映像的工具集。

2. 接下来,使用以下命令启动并启用 libvirtd 服务。

sudo systemctl enable --now libvirtd

您将获得如下类似的输出。

Created symlink /etc/systemd/system/multi-user.target.wants/libvirtd.service → /usr/lib/systemd/system/libvirtd.service.
Created symlink /etc/systemd/system/sockets.target.wants/virtlockd.socket → /usr/lib/systemd/system/virtlockd.socket.
Created symlink /etc/systemd/system/sockets.target.wants/virtlogd.socket → /usr/lib/systemd/system/virtlogd.socket.
Created symlink /etc/systemd/system/sockets.target.wants/libvirtd.socket → /usr/lib/systemd/system/libvirtd.socket.
Created symlink /etc/systemd/system/sockets.target.wants/libvirtd-ro.socket → /usr/lib/systemd/system/libvirtd-ro.socket.

3. 之后,执行以下命令查看libvirtd服务状态。

sudo systemctl status libvirtd

你应该会看到类似如下的输出。如图所示,libvritd 服务处于活动状态并正在运行。

? libvirtd.service - Virtualization daemon
     Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; disabled; vendor preset: disabled)
     Active: active (running) since Fri 2021-07-23 10:33:25 UTC; 6s ago
TriggeredBy: ? libvirtd-ro.socket
             ? libvirtd.socket
             ? libvirtd-admin.socket
       Docs: man:libvirtd(8)
             https://libvirt.org
   Main PID: 16828 (libvirtd)
      Tasks: 19 (limit: 32768)
     Memory: 16.4M
        CPU: 226ms
     CGroup: /system.slice/libvirtd.service
             ??16828 /usr/bin/libvirtd --timeout 120

允许非 root 用户使用 KVM/QEMU 虚拟化

默认情况下,只有用户“root”可以创建和管理虚拟机。要允许非 root 用户创建和管理虚拟机,您应该遵循下面的 libvirtd 配置。

1. 执行以下命令编辑 libvirtd 配置。

sudo nano /etc/libvirt/libvirtd.conf

取消注释选项 \unix_sock_group\ 并输入组名 \libvirt\。

# Set the UNIX domain socket group ownership. This can be used to
# allow a 'trusted' set of users access to management capabilities
# without becoming root.
#
# This setting is not required or honoured if using systemd socket
# activation.
#
# This is restricted to 'root' by default.
unix_sock_group = "libvirt"

之后,取消注释选项 \unix_sock_rw_perms\ 并将权限保留为默认值 \0770\。

# Set the UNIX socket permissions for the R/W socket. This is used
# for full management of VMs
#
# This setting is not required or honoured if using systemd socket
# activation.
#
# Default allows only root. If PolicyKit is enabled on the socket,
# the default will change to allow everyone (eg, 0777)
#
# If not using PolicyKit and setting group ownership for access
# control, then you may want to relax this too.
unix_sock_rw_perms = "0770"

通过按 Ctrl+x 按钮并键入 y 保存配置,然后回车。

2. 接下来,使用以下命令将您的用户添加到组 \libvirt\。

sudo usermod -a -G libvirt username

3. 之后,重新启动 libvirtd 服务以应用新配置。

sudo systemctl restart libvirtd

现在 \libvirt\ 组中的所有用户都可以创建和配置虚拟机。

使用 virt-manager 验证 QEMU/KVM 安装

现在从您的应用程序菜单中打开应用程序“virt-manager”。

1. 在 virt-manager 应用程序上单击菜单“编辑 -> 连接详细信息”。

2. 在“Overview”选项卡上,您会看到 virt-manager 将自动连接到“qemu:///system”。

3. 移至“虚拟网络”选项卡,您将看到“默认”网络配置。

  • 接口:virbr0
  • 开机自动启动:是
  • IP 地址:192.168.122.0/24
  • 范围 DHCP IP 地址:192.168.122.2 - 192.168.122.254
  • 网络类型:NAT

4. 现在移至“存储”选项卡,您将看到“默认”池存储配置。

  • 类型:文件系统目录
  • 大小:取决于您的磁盘
  • 位置:/var/lib/libvirt/images
  • 开机自动启动:是

所有虚拟机映像都将在此默认存储中可用,即目录 \/var/lib/libvirt/images\。

5. 接下来,单击“+”按钮为 ISO 映像文件创建新的池存储。所有 ISO 文件操作系统都将在此池中可用。

遵循存储配置如下:

  • 姓名:国际标准化组织
  • 类型:目录:文件系统目录
  • 目标路径:/path/directory/to/your/iso/

单击“完成”按钮以完成该过程。之后,您就可以创建新的虚拟机了。

使用 virt-manager 创建新的虚拟机

1. 在 virt-manager 应用程序中,单击按钮 \+\ 创建一个新的虚拟机。

2. 选择“本地安装媒体”以使用 ISO 映像进行安装,然后单击“前进”按钮继续。

3. 单击“浏览”按钮选择 ISO 文件。

现在选择存储池“ISO”并选择安装的 iso 文件(本例中为“Debian 10”),然后单击“选择卷”。

取消选中“从安装媒体/源自动检测”选项,键入您要安装的操作系统(本例中为“Debian 10”),然后再次单击“前进”按钮继续。

4. 为虚拟机选择多少内存和CPU,然后点击“前进”。

5. 为虚拟机选择多少磁盘并点击“前进”。

6. 仔细检查您的配置并单击“完成”按钮进行安装。

7、现在虚拟机已经启动并运行了QEMU/KVM虚拟化,可以继续安装os了。

结论

恭喜!你已经学习了如何在 Manjaro/Archlinux 机器上设置 QEMU/KVM 虚拟化。此外,如何使用 virt-manager 应用程序创建虚拟机。现在您可以使用您喜欢的操作系统创建虚拟机。您可以使用其他 Linux 发行版、Windows 或 BSD 系列操作系统。