适用于: openEuler 22.03 SP4 ARM64(aarch64)架构服务器
安装流程总览
环境检查 → 安装软件包 → 配置网络 → 启动服务 → 验证环境 → 创建虚拟机
一、环境检查
1.1 系统信息确认
查看系统架构(必须是aarch64)
uname -m
查看系统版本
cat /etc/openEuler-release
查看CPU信息
lscpu | grep -E "Architecture|CPU\(s\)|Model name"

1.2 虚拟化支持检查
检查虚拟化扩展
lscpu | grep Virtualization
检查KVM设备
ls -l /dev/kvm
如果/dev/kvm不存在,加载KVM模块
modprobe kvm
lsmod | grep kvm

1.3 查看网卡信息
查看所有网络接口
ip link show
查看网卡详细信息
nmcli device status
记录物理网卡名称(后面配置Bond需要,下图是我已经做过聚合的网卡,可忽略,不影响后续配置,只记住物理网卡名就行)
示例: enp125s0f0, enp125s0f1

二、软件包安装(一键完成)
2.1 核心虚拟化组件安装
更新系统
dnf update -y
安装虚拟化组
dnf groupinstall "Virtualization Host" -y
安装核心组件
dnf install -y \
qemu-kvm \
qemu-img \
qemu-system-aarch64 \
libvirt \
libvirt-client \
libvirt-daemon \
libvirt-daemon-driver-qemu \
virt-install \
virt-manager \
virt-viewer \
libguestfs-tools
安装ARM64 UEFI固件
dnf install -y edk2-aarch64
安装网络工具
dnf install -y \
bridge-utils \
NetworkManager \
net-tools
安装Web管理界面
dnf install -y \
cockpit \
cockpit-machines \
cockpit-storaged \
cockpit-networkmanager
安装VNC服务器
dnf install -y tigervnc-server
安装监控工具
dnf install -y htop iotop sysstat bash-completion
启动libvirtd
systemctl enable --now libvirtd
systemctl status libvirtd
三、网络配置(Bond+Bridge高可用)
3.1 配置说明
架构: 物理网卡(enp125s0f0 + enp125s0f1) → Bond0(主备) → Bridge(br0) → 虚拟机
优势: 网卡冗余 + 虚拟机直连物理网络
3.2 清理旧配置(如有)
查看现有连接
nmcli connection show
停止并删除旧的连接(根据实际情况调整)
for uuid in (nmcli -t -f UUID,DEVICE connection show \| grep ':-\*' | cut -d: -f1); do
echo "Deleting $uuid"
nmcli connection delete $uuid
done
3. 3 创建 Bond 聚合
假设你使用 模式 802.3ad (LACP) 或 mode=balance-rr (轮询),可以根据交换机支持选择。
创建 bond0
nmcli connection add type bond ifname bond0 con-name bond0 mode 802.3ad
添加物理网口到 bond0
nmcli connection add type bond-slave ifname enp125s0f0 master bond0
nmcli connection add type bond-slave ifname enp125s0f1 master bond0
设置 bond0 IP (静态为例)
nmcli connection modify bond0 ipv4.addresses 192.168.10.3/24
nmcli connection modify bond0 ipv4.gateway 192.168.10.1
nmcli connection modify bond0 ipv4.dns "8.8.8.8 114.114.114.114"
nmcli connection modify bond0 ipv4.method manual
nmcli connection modify bond0 ipv6.method ignore
启动 bond
nmcli connection up bond0
如果交换机不支持 LACP,可以使用 mode=balance-rr 或 mode=active-backup。
3. 4 在 Bond 上创建桥接 br0
创建桥接 br0,绑定到 bond0
nmcli connection add type bridge ifname br0 con-name br0
nmcli connection modify br0 bridge.stp no # 禁用生成树,可选
nmcli connection modify br0 ipv4.addresses 192.168.10.3/24
nmcli connection modify br0 ipv4.gateway 192.168.10.1
nmcli connection modify br0 ipv4.method manual
nmcli connection modify br0 ipv6.method ignore
将 bond0 作为桥接接口
nmcli connection add type bridge-slave ifname bond0 master br0
启动桥接
nmcli connection up br0

3. 5 验证网络状态
查看 bond 状态cat /proc/net/bonding/bond0
查看桥接状态
bridge link
ip addr show br0
测试网络,ping网关
ping -c 3 192.168.10.1

四、服务启动和配置
4.1 启动核心服务
启动libvirt服务
systemctl start libvirtd
systemctl enable libvirtd
启动日志服务
systemctl start virtlogd
systemctl enable virtlogd
检查服务状态
systemctl status libvirtd --no-pager
4.2 配置存储池(使用/home目录)
创建存储目录结构
mkdir -p /home/kvm/images # 虚拟机磁盘存储
mkdir -p /home/kvm/iso # ISO镜像存储
mkdir -p /home/kvm/nvram # UEFI NVRAM存储
mkdir -p /home/kvm/backup # 备份目录
设置权限
chmod 755 /home/kvm
chmod 755 /home/kvm/images
chmod 755 /home/kvm/iso
chmod 755 /home/kvm/nvram
chmod 755 /home/kvm/backup
设置SELinux上下文(如果启用了SELinux)
setenforce 0 2>/dev/null || true
chcon -R -t virt_image_t /home/kvm 2>/dev/null || true
停止并删除旧的default存储池(如果存在)
virsh pool-destroy default 2>/dev/null || true
virsh pool-undefine default 2>/dev/null || true
定义新的default存储池(指向/home/kvm/images)
virsh pool-define-as default dir --target /home/kvm/images
启动存储池
virsh pool-start default
设置开机自启
virsh pool-autostart default
创建ISO存储池(可选)
virsh pool-define-as iso dir --target /home/kvm/iso
virsh pool-start iso
virsh pool-autostart iso
virsh pool-list --all
virsh pool-info default
ls -lh /home/kvm/
4.3 启动Cockpit Web界面
启动Cockpit
systemctl start cockpit.socket
systemctl enable cockpit.socket
检查状态
systemctl status cockpit.socket --no-pager
显示访问地址
echo "Cockpit访问: https://$(hostname -I | awk '{print $1}'):9090"

4.4 配置VNC服务器(可选)
设置VNC密码
vncpasswd
创建启动配置
cat > ~/.vnc/xstartup << 'EOF'
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
启动 GNOME 桌面环境
exec gnome-session &
EOF
设置权限
chmod +x ~/.vnc/xstartup
启动VNC服务器
vncserver :1
查看VNC进程
vncserver -list
五、防火墙配置
添加libvirt服务
firewall-cmd --permanent --add-service=libvirt
添加Cockpit
firewall-cmd --permanent --add-service=cockpit
添加VNC端口
firewall-cmd --permanent --add-port=5900-5910/tcp
firewall-cmd --permanent --add-port=5901/tcp
添加虚拟机VNC端口范围
firewall-cmd --permanent --add-port=5920-5950/tcp
重载防火墙
firewall-cmd --reload
验证配置
firewall-cmd --list-all
六 、创建第一个虚拟机
7.1 下载ARM64镜像
进入ISO存储目录
cd /home/kvm/iso
下载openEuler ARM64镜像(约4GB)
wget https://mirrors.openanolis.cn/anolis/23.3/isos/GA/aarch64/AnolisOS-23.3-aarch64-dvd.iso
查看下载的镜像
ls -lh /home/kvm/iso/
7.2 准备UEFI固件
NVRAM目录已在存储池配置时创建
/home/kvm/nvram
验证UEFI固件文件存在
ls -lh /usr/share/edk2/aarch64/
复制UEFI固件到NVRAM目录(可选,首次创建虚拟机时会自动生成)
确保 nvram 目录存在
mkdir -p /home/kvm/nvram && \
复制 UEFI 固件文件
cp /usr/share/edk2/aarch64/QEMU_EFI-pflash.raw /home/kvm/nvram/QEMU_EFI.fd && \
检查是否成功
-f /home/kvm/nvram/QEMU_EFI.fd \] \&\& echo "✓ UEFI固件准备完成" \|\| echo "⚠ 复制固件失败,请检查权限或磁盘空间"
#### ******7.3 创建虚拟机(推荐方式)******
# 确保 nvram 目录存在
mkdir -p /home/kvm/nvram
# 提前创建虚拟机磁盘,这里我使用了两块盘符,一块作为数据盘,一块作为系统盘
qemu-img create -f qcow2 /home/kvm/images/vm01_system.qcow2 500G
qemu-img create -f qcow2 /home/kvm/images/vm01_data.qcow2 10T
# 生成独立 VARS 文件(对应后续创建的虚拟机,建议前缀相同方便区分)
cp /usr/share/edk2/aarch64/vars-template-pflash.raw /home/kvm/nvram/vm01_VARS.fd
# 使用桥接网络 + UEFI启动 + /home存储
# 重点来了,我试了几次都未能成功启动openEuler-22.03-LTS-SP4的系统,无奈暂时放弃安装欧拉,同志可以试试其他欧拉版本
virt-install \\
--connect qemu:///system \\
--virt-type kvm \\
--name vm01 \\
--arch aarch64 \\
--vcpus 4 \\
--memory 4096 \\
--os-variant centos8 \\
--cdrom /home/kvm/iso/openEuler-22.03-LTS-SP4-aarch64-dvd.iso \\
--disk path=/home/kvm/images/vm01_system.qcow2,size=500,format=qcow2,bus=virtio \\
--disk path=/home/kvm/images/vm01_data.qcow2,size=10240,format=qcow2,bus=virtio \\
--network bridge=br0,model=virtio \\
--noautoconsole
# 已成功安装AnolisOS,照着抄即可,如果失败建议更换其他版本AnolisOS
virt-install \\
--connect qemu:///system \\
--virt-type kvm \\
--name vm02 \\
--arch aarch64 \\
--vcpus 4 \\
--memory 4096 \\
--os-variant centos8 \\
--cdrom /home/kvm/iso/AnolisOS-23.3-aarch64-dvd.iso \\
--disk path=/home/kvm/images/vm02_system.qcow2,size=500,format=qcow2,bus=virtio \\
--disk path=/home/kvm/images/vm02_data.qcow2,size=10240,format=qcow2,bus=virtio \\
--network bridge=br0,model=virtio \\
--noautoconsole

# 查看虚拟机状态
virsh list --all
1️⃣ 查看虚拟机状态
virsh list --all
2️⃣ 连接到安装控制台(文本模式)
virsh console vm01
按 Ctrl+\] 退出控制台。
3️⃣ 查看磁盘信息
virsh domblklist vm02
4️⃣ 停止/启动虚拟机
virsh shutdown vm02
virsh start vm02
#如果你希望 通过 VNC 图形界面安装,可以指定端口,例如:不过需要你的电脑安装相关VNC 图形界面操作软件比如MobaXterm.exe等,网上搜很多哈
virt-viewer --connect qemu:///system vm02
### ******八、虚拟机管理******
#### ******8.1 常用命令******
# 查看所有虚拟机
virsh list --all
# 启动虚拟机
virsh start vm01
# 关闭虚拟机
virsh shutdown vm01
# 强制关闭
virsh destroy vm01
# 重启
virsh reboot vm01
# 开机自启
virsh autostart vm01
# 查看虚拟机信息
virsh dominfo vm01
# 查看VNC端口
virsh vncdisplay vm01
# 查看虚拟机IP(需要虚拟机运行且安装guest agent)
virsh domifaddr vm01
# 编辑虚拟机配置
virsh edit vm01
#### ******8.2 连接虚拟机******
# 方式1: VNC客户端
# 地址: 服务器IP:VNC端口
# 例如: 192.168.10.3:5902
# 方式2: 串口控制台
virsh console vm01
# 方式3: virt-viewer
virt-viewer vm01
# 方式4: Cockpit Web界面
# https://192.168.10.3:9090
### ******九、性能优化******
#### ******9.1 CPU优化******
# 编辑虚拟机
virsh edit vm01
# 修改CPU配置
\