661 字
3 分钟
KVM-QEMU-Libvirt安装记录

软件介绍#

KVM(Kernel-based Virtual Machine)

  • 是Linux内核中的一个虚拟化模块,基于CPU硬件虚拟化。

QEMU (Quick Emulator)

  • 提供了完整的虚拟化功能,包括硬件设备的模拟、虚拟机的启动和管理等

Libvirt

  • 一个用于虚拟化管理的开源 API、守护进程和工具集。
    • 提供命令行工具(如 virsh)或者图形用户界面(如 virt-manager)来管理虚拟化资源

前期工作#

电脑主板中开启cpu虚拟化支持,不懂自己去🔍

安装软件包#

# 更新软件源
sudo pacman -Syy
# 安装软件包
sudo pacman -S qemu-full qemu-emulators-full virt-manager dnsmasq vde2 bridge-utils libvirt
  • vde2: 一个虚拟化的网络交换机
  • bridge-utils: 网络配置工具

配置操作#

libvirt用户组#

# 将用户加入libvirt组,但有一些virsh net命令还是需要sudo执行
# 我为了省事配置了bash alias; alias virsh='sudo virsh'
sudo usermod -aG libvirt $USER

配置libvirtd服务自启动#

sudo systemctl enable --now libvirtd.service

配置nat网络和仅主机网络#

qemu网络配置文件路径:/etc/libvirt/qemu/networks/

[lee@Arch-8845 ~]$ tree /etc/libvirt/qemu/networks/
/etc/libvirt/qemu/networks/
├── autostart
│   ├── default.xml -> /etc/libvirt/qemu/networks/default.xml
│   └── host-only.xml -> /etc/libvirt/qemu/networks/host-only.xml
├── default.xml
└── host-only.xml
2 directories, 4 files

地址规划:

  • 192.168.100.0/24 为仅主机网络

  • 192.168.200.0/24 为NAT网络

配置default(NAT) 网络

# 配置私网网段
sudo EDITOR=vim virsh net-edit default

配置 host-only 仅主机网络

思路:将default.xml文件复制一份,命名为host-only.xml,编辑host-only.xml,

  • 修改forward块,mode=“none”;
  • 删除uuid块
  • 删除mac address块
[lee@Arch-8845 ~]$ sudo virsh net-define /etc/libvirt/qemu/networks/host-only.xml
/etc/libvirt/qemu/networks/host-only.xml定义网络host-only
[lee@Arch-8845 ~]$sudo virsh net-start host-only
网络 host-only 已开始
[lee@Arch-8845 ~]$ sudo virsh net-autostart host-only
网络host-only标记为自动启动

结果如下

[lee@Arch-8845 ~]$ virsh net-dumpxml default
<network>
<name>default</name>
<uuid>c74f4b4a-2993-4cfa-aeec-bb7024026587</uuid>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virbr1' stp='on' delay='0'/>
<mac address='aa:bb:cc:dd:ee:ff'/>
<ip address='192.168.200.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.200.2' end='192.168.200.254'/>
</dhcp>
</ip>
</network>
[lee@Arch-8845 ~]$ virsh net-dumpxml host-only
<network>
<name>host-only</name>
<uuid>b428106d-8deb-4b09-a201-8fc672309877</uuid>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='ff:ee:dd:cc:bb:aa'/>
<ip address='192.168.100.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.100.2' end='192.168.100.254'/>
</dhcp>
</ip>
</network>

配置libvirt防火墙后端#

现在新的firewalld默认使用nftables作为后端,libvirt默认配置的防火墙后端是iptables,这里需要修改一下

/etc/libvirt/network.conf
firewall_backend = "nftables"

配置主机防火墙#

这块主要是允许NAT网络地址段允许KVM虚拟机访问宿主机的服务如DNS,科学等工具

这里网段根据你自己的设置修改

sudo firewall-cmd --permanent --zone=public --add-source=192.168.200.0/24
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.200.0/24" accept'
sudo firewall-cmd --reload

设置网络自启动#

sudo virsh net-autostart default
sudo virsh net-autostart host-only

重启libvirtd服务#

sudo systemctl restart libvirtd.service

后续的相关学习视频#

了解virsh命令#

这个UP主可以关注一下,浪潮的大佬

KVM+VirGL 在 Windows 11 虚拟机中开启图形加速!🔥#

KVM-QEMU-Libvirt安装记录
https://v0nl1.com/posts/kvm-qemu/
作者
V0nl1
发布于
2025-10-14
许可协议
CC BY-NC-SA 4.0