住宅主机KVM多系统虚拟化教程
先搞清KVM在住宅主机上能用在哪
KVM(Kernel-based Virtual Machine)是Linux内核自带的虚拟化方案,性能接近原生。
很多朋友以为它只属于机房,其实只要你的家用电脑装了Linux(如Ubuntu Server或桌面版),并且CPU支持虚拟化技术,就能跑KVM,同时运行Windows、另一个Linux发行版或测试环境。
本文就带你把客厅电脑变成多系统实验平台。
动手前检查硬件和系统
1. 确认CPU虚拟化支持
打开终端,执行:
egrep --color=auto '(vmx|svm)' /proc/cpuinfo
如果输出里有vmx(Intel)或svm(AMD),说明硬件支持。
如果没有,可能需要进BIOS开启“Intel VT-x”或“AMD-V”选项。
注意老CPU或部分低功耗型号可能不支持。
2. 更新系统并安装必要软件包
以Ubuntu 22.04/24.04为例:
sudo apt update && sudo apt upgrade -y
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager -y
安装完成后,把当前用户加入libvirt和kvm用户组,否则无法管理虚拟机:
sudo usermod -aG libvirt,kvm $USER
newgrp libvirt # 或重新登录
用virt-manager创建第一台虚拟机
1. 启动图形化管理工具
安装完virt-manager后,在桌面环境或通过SSH转发图形界面启动:
virt-manager
点击左上角“创建新虚拟机”。
你也可以用命令行方式,但新手推荐图形界面。
2. 选择安装源和配置
- 选择“本地安装介质(ISO镜像或CDROM)”,浏览并选中你准备好的系统ISO(比如Windows 10或Ubuntu Desktop)。
- 设置内存和CPU:住宅机常见8G内存的话,分2-4G给虚拟机;CPU核心建议1-2个。
- 磁盘容量:建议20-40G,勾选“立即分配全部磁盘”可提升性能,但会占用实际空间。
- 网络类型:默认NAT模式即可上网;若需要从局域网其他设备访问虚拟机,后面会讲桥接。
- 完成后点击“开始安装”,按ISO内的正常流程装系统。
网络配置:让虚拟机和局域网互通
默认NAT模式只允许虚拟机经宿主机上网,外部设备无法直接访问。
如果需要让虚拟机拥有独立IP(如作为家庭服务器),需要配置桥接网络。
1. 创建桥接网桥
编辑/etc/netplan/01-netcfg.yaml(具体文件名可能不同):
network:
version: 2
renderer: networkd
ethernets:
enp3s0: # 你的物理网卡名
dhcp4: no
bridges:
br0:
interfaces: [enp3s0]
dhcp4: yes
应用配置:
sudo netplan apply
2. 在virt-manager中修改虚拟机网络
右键虚拟机 -> 打开详情 -> 添加硬件 -> 网络,选择“桥接设备”并填入br0。
启动虚拟机后就能看到局域网分配的IP地址。
避坑指南与高频问题解答
Q:启动虚拟机报错“KVM not supported”
A:检查BIOS是否开启虚拟化;若开启仍报错,尝试sudo modprobe kvm_intel或kvm_amd,看是否缺失内核模块。
Q:virt-manager无法连接libvirt
A:先确认服务运行:sudo systemctl status libvirtd;若停止则启动:sudo systemctl start libvirtd && sudo systemctl enable libvirtd。
Q:Windows虚拟机很卡
A:在虚拟机设置里勾选“启用KVM虚拟化”和“Hyper-V时钟”,并安装virtio驱动(可从Fedora项目下载ISO挂载安装),能大幅提升磁盘和网络性能。
Q:桥接后宿主机断网
A:确认物理网卡名写对,netplan apply前最好先备份原配置。如果抢救不及,重启进入recovery模式或通过live USB恢复。
验证多系统正常运行
安装完两个虚拟机(比如一个Windows、一个Ubuntu),分别能同时启动并正常操作。
可以在宿主机上执行virsh list --all查看所有虚拟机状态。
试着在虚拟机之间互相ping通,或者让虚拟机访问外网。
如果都正常,说明你的住宅主机KVM多系统虚拟化环境已经搭建完成。
今后可以随时在新虚拟机里测试软件、搭建服务,而不会影响宿主机稳定。
如果你在配置过程中遇到其他报错,欢迎在评论区留言,我会根据实际情况补充排错方案。