🧑🏻‍💻

Manjaro/Arch Linux中安装使用QEMU/KVM/virt-manager运行虚拟机

Published
Last Updated
修改:2024-02-28

检查依赖条件

首先确认主机机器硬件支持虚拟化技术,运行命令:
$ grep -Ec 'vmx|svm|0xc0f' /proc/cpuinfo
notion image
如果上述命令输出结果数字大于0,说明主机CPU支持虚拟化技术,否则无法继续后续操作。如果CPU实际上支持虚拟化,需要到BIOS中手动开启CPU虚拟化功能后再回来尝试。
 
确认系统内核中存在KVM模块:
$ zgrep CONFIG_KVM= /proc/config.gz
notion image
如果上述命令输出CONFIG_KVM=y或者CONFIG_KVM=m,则说明已存在该模块。
 
确认KVM内核模块已经被加载好了:
$ lsmod | grep kvm
notion image
如果有上述类似的输出,说明满足后续操作的条件。
如果上述命令没有输出任何内容,需要去手动加载该内核模块,可参考这里的操作。

安装程序包

运行命令以安装所需程序包:
$ sudo pacman -Syu $ sudo pacman -S qemu-full libvirt iptables-nft dnsmasq virt-manager
上述安装的程序包的主要功能为:
  • qemu-full
    • QEMU模拟器,提供了多种CPU架构的全系统(Full-System)模拟及虚拟化功能,并且提供可视化虚拟机运行窗口。QEMU可使用KVM 以加速虚拟机实例的运行。
  • libvirt
    • 提供了与QEMU的便捷交互功能,包含libvirtd后台服务,以及命令行前端工具virsh
  • iptables-nft, dnsmasq
    • 虚拟机的默认NAT/DHCP 网络模式所需依赖。
  • virt-manager
    • 可视化的虚拟机管理工具,作为libvirtd服务的可视化前端与之交互以创建和管理虚拟机实例。
notion image
notion image
 
安装完成上述程序包后,发现新增了用户组:
  • libvirt
  • libvirt-qemu
  • qemu
将系统当前用户加入到上述用户组:
$ sudo usermod -aG libvirt $USER $ sudo usermod -aG libvirt-qemu $USER $ sudo usermod -aG qemu $USER
 
启动libvirtd服务:
$ sudo systemctl start libvirtd $ sudo systemctl enable libvirtd $ sudo systemctl status libvirtd
notion image
 
启动libvirt 虚拟网络default ,使其状态为active
$ sudo virtsh net-list --all $ sudo virtsh net-autostart default $ sudo virtsh net-start default
notion image

创建运行虚拟机

  1. 运行可视化管理工具virt-manager
$ virt-manager
notion image
 
  1. 点击菜单栏的创建虚拟机按钮➕,创建新的虚拟机实例。
      • 在弹出窗口中选择安装方法Local install media (ISO image or CDROM)
      • 目标虚拟机架构默认选择x86_64
      • 点击Forward 按钮继续
notion image
 
  1. 选择安装镜像文件。
      • 点击Browse 按钮
      • 在弹出窗口中点击Browse Local 按钮
      • 选择已提前下载好的ubuntu 22.04 desktop x86_64安装镜像
      • 点击Forward 按钮继续
      • 在弹出的提醒框中选择Yes ,以使后续在虚拟机中安装系统时可成功读取镜像文件的内容
notion image
notion image
notion image
notion image
 
  1. 填写虚拟机所需内存大小及虚拟CPU核数,点击Forward 按钮继续。
notion image
 
  1. 填写虚拟机存储磁盘大小,点击Forward 继续。
notion image
 
  1. 确认虚拟机配置信息,点击Finish 按钮。
notion image
 
  1. 上述操作将自动启动虚拟机可视化窗口,在该窗口中按照系统安装流程安装该操作系统。
若主机鼠标被该窗口获取而无法移出,可按组合键左ctrl + 左alt
notion image
notion image

增强功能

  • 虚拟机与主机共享粘贴板
    • 虚拟机中安装的Ubuntu 22.04 Desktop已经内置安装了spice-vdagent 并且已自动开启了spice-vdagentd 服务,主机与虚拟机已可共享粘贴板,对于其他操作系统的虚拟机可以参考这里安装启用对应的spice-vdagent包和服务
  • 虚拟机自动分辨率
    • 同样需要在虚拟机系统中安装spice-vdagent 和启用spice-vdagentd 服务。并且在虚拟机窗口菜单栏中勾选中view -> Scale Display -> Auto resize VM with window ,这样当调整虚拟机窗口时,内部的虚拟机界面能自动调整为适配的分辨率。
  • 虚拟机共享主机文件夹
    • 最简单的方法是在主机系统中安装启用samba服务,可参考这里,并共享主机中的文件夹,在虚拟机系统中需要安装cifs-utils ,然后使用mount 命令手动挂载或者在/etc/fstab文件中自动挂载主机系统中分享的文件夹到虚拟机文件系统中,可参考这里需要注意虚拟机被自动分配的虚拟网段默认为192.168.122.0/24 ,需要在宿主机samba服务配置文件中允许该网段的客户端访问。

参考链接

  1. https://wiki.archlinux.org/title/KVM
  1. https://wiki.archlinux.org/title/QEMU
  1. https://wiki.archlinux.org/title/Libvirt
  1. https://wiki.archlinux.org/title/Virt-manager
  1. https://wiki.archlinux.org/title/Samba
  1. https://linuxhint.com/mount-smb-shares-ubuntu/
  1. https://forum.level1techs.com/t/solved-qemu-network-default-is-not-active-booting-from-hard-disk/194698