在openEuler上安装KVM虚拟机需依次确认CPU虚拟化启用、加载kvm内核模块、启动libvirtd服务、安装必要组件、配置桥接网络、准备镜像与存储池,最后用virt-install创建虚拟机;任一环节缺失均会导致VNC卡死或“no bootable device”错误。

在openEuler系统上安装KVM虚拟机,必须先确认CPU虚拟化已启用、内核模块已加载、libvirt服务正常运行,再用virt-install命令指定镜像路径、内存大小、磁盘格式和网络桥接方式,否则创建过程会在VNC连接阶段卡死或报错“no bootable device”。
检查硬件与内核支持
执行 grep -E '(vmx|svm)' /proc/cpuinfo,若无任何输出,说明BIOS中未开启Intel VT-x或AMD-V,需重启进BIOS手动启用;ARM平台则直接运行 ls /dev/kvm,返回 /dev/kvm 才表示KVM设备节点存在。
验证内核模块是否就绪:运行 lsmod | grep kvm,必须看到 kvm 和对应厂商模块(如 kvm_intel 或 kvm_amd),缺一则需手动加载 modprobe kvm && modprobe kvm_intel。
安装核心组件并启动服务
使用dnf安装全部必需包:dnf install -y qemu-kvm libvirt virt-install bridge-utils virt-manager。注意不要漏掉 bridge-utils,否则后续无法创建网桥,虚拟机将只能走默认NAT(virbr0),无法被局域网其他设备访问。
启动并设为开机自启:systemctl enable --now libvirtd。这一步必须成功,否则 virsh list 会报错 “Failed to connect to the hypervisor”,且 virt-host-validate 中所有项目均显示 FAIL。
配置桥接网络(关键步骤)
第一步:确认物理网卡名,运行 ip -o link show | awk -F': ' '{print $2}' | grep -v '^lo$',记下真实网卡名(如 enp1s0、eth0 或 ens33)。
第二步:创建网桥配置文件 /etc/sysconfig/network-scripts/ifcfg-br0,内容为:
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
ONBOOT=yes
第三步:修改原物理网卡配置,例如对 ifcfg-enp1s0,删掉 IPADDR/GATEWAY 等地址配置,仅保留:DEVICE=enp1s0 TYPE=Ethernet ONBOOT=yes BRIDGE=br0。
第四步:重启网络服务:systemctl restart NetworkManager。执行 ip a 应同时看到 enp1s0(无IP)和 br0(带IP),否则桥接失败,虚拟机将无法获取外网。
准备镜像与存储池
把 openEuler-22.03-LTS-SP3-x86_64-dvd.iso 文件上传到服务器任意路径,例如 /var/lib/libvirt/images/openEuler.iso。
创建专用存储池避免权限混乱:virsh pool-define-as vmPool dir --target /var/lib/libvirt/images/vm → virsh pool-build vmPool → virsh pool-start vmPool → virsh pool-autostart vmPool。
用virt-install创建虚拟机
方法一:基础命令行安装(推荐新手)
virt-install --name=openEuler-vm1 --ram=2048 --vcpus=2 --disk path=/var/lib/libvirt/images/vm/openEuler-vm1.qcow2,size=30,format=qcow2 --cdrom=/var/lib/libvirt/images/openEuler.iso --network bridge=br0 --graphics vnc,listen=0.0.0.0,port=5910 --noautoconsole。
方法二:跳过图形界面直装(适合批量部署)
在上述命令末尾添加 --location /var/lib/libvirt/images/openEuler.iso --extra-args "inst.ks=http://your-server/ks.cfg console=tty0",前提是已准备好Kickstart应答文件。
注意:若提示 ERROR: disk size check failed,在命令中加入 --check disk_size=off 即可绕过校验,该参数仅用于测试环境,生产环境请确保ISO镜像完整。
执行后终端会输出 VNC 连接地址,例如 vnc://192.168.1.100:5910,用 Virt-Viewer 或 TigerVNC 连接即可进入图形化安装流程。

















