【Windows】QEMU 启动 openEuler aarch64/arm64 架构系统
一、下载 openEuler aarch64/arm64 架构镜像
下载页面

下载某一版本镜像
- 架构:aarch64 架构
- 场景:云计算(这里有qcow2格式镜像)

- 下载后是下面的压缩包,找工具解压即可的到qcow2镜像

二、找一个 QEMU_EFI.fd 文件
QEMU_EFI.fd 是 QEMU 模拟器专用的 UEFI 固件镜像文件 ,本质是EDK2 (TianoCore) 项目为 ARM64 架构编译的虚拟固件 ,作用相当于真实计算机主板上的UEFI BIOS 芯片。
三、写一个启动qemu的bat脚本
可以直接执行命令启动,也可以方便的将命令写入bat脚本中,方便重复执行。
我这里提供一个我自己的bat脚本,因为我的这个是最后完全使用的,所以其中有一个iso文件,那是后面会说到的一个工具包文件,因为qemu上使用dnf连网下载太慢了,所以用这个挂载配置本地源来使用。
仅供参考:
powershell
@echo off
setlocal enabledelayedexpansion
chcp 65001 >nul
cls
title openEuler 22.03 ARM64 Control Panel
:: ===================== 你的 everything ISO 文件路径 =====================
set "ISO_FILE=openEuler-22.03-LTS-SP1-everything-aarch64-dvd.iso"
:: ============================================================================
echo.
echo ============================================================
echo openEuler 22.03-LTS-SP1 ARM64 VM
echo ============================================================
echo.
echo [VM Configuration]
echo - RAM: 8192 MB (8GB)
echo - CPU Cores: 8
echo - Arch: ARM64 (aarch64)
echo - Image: openEuler 22.03-LTS-SP1-aarch64.qcow2
echo.
echo [Login Info]
echo - Username: root
echo - Password: openEuler12#$
echo.
echo [Network]
echo - SSH Forward: Windows 2222 → VM 22
echo - Xshell/XFTP: 127.0.0.1 Port 2222
echo.
echo [Operations]
echo - Normal Shutdown: Run command "poweroff" in VM
echo - Force Stop: Close the VM running window directly
echo ============================================================
echo.
:: 自动检测 ISO 是否存在
set "CDROM_ARG="
if exist "%ISO_FILE%" (
echo [✅STATUS] ISO file detected, loading virtual CD-ROM
set "CDROM_ARG=-drive file="%ISO_FILE%",format=raw,if=virtio,media=cdrom"
) else (
echo [✅STATUS] No ISO file detected, starting VM normally
)
echo.
echo [✅STATUS] VM is starting in a new window...
echo.
start "openEuler ARM64 Running Window" /wait qemu-system-aarch64.exe ^
-m 8192 ^
-smp 8 ^
-cpu cortex-a72 ^
-machine virt ^
-bios QEMU_EFI.fd ^
-drive file=openEuler-22.03-LTS-SP1-aarch64.qcow2,format=qcow2,if=virtio ^
!CDROM_ARG! ^
-net nic,model=virtio ^
-net user,hostfwd=tcp::2222-:22 ^
-nographic
echo.
echo ============================================================
echo [STATUS] VM has been CLOSED!
echo Exit Code: %errorlevel%
echo ============================================================
echo.
echo Press any key to close this window...
pause >nul
四、下一个离线软件包ISO(可以,但建议)
aarch64架构的全量安装ISO,包含了运行完整系统所需的全部组件
- 还是前面下载qcow2镜像的页面
- 场景:服务器
- 下载:
Offline Everything ISO

- 下载好后,就是一个非常大的iso文件

五、启动虚拟机
将前面下载的四个东西放在一起,点击脚本启动虚拟机即可。

脚本会启动两个窗口
一个窗口是我显示的系统信息和登录默认用户名密码。

一个窗口是系统启动的窗口
我这里是执行着
top命令,你进去是登录,让输入用户名和密码,按上面信息输入即可,都是默认用户名和密码。

六、远程连接
我这用的连接工具:Xshell/XFTP(也可以用其他工具,ssh连接工具很多的)
连接信息:
- 主机:127.0.0.1
- 端口:2222
- 用户名:root
- 密码:openEuler12#$
连接成功后,你可以在Xshell/XFTP中操作虚拟机,Xshell可以打开Xftp,传文件用它也方便,当然你scp也行。

七、配置软件源
(一)挂载光驱
1. 查看光驱
从 lsblk 能看到 vdb 就是通过 QEMU 虚拟光驱加载的 openEuler ISO 镜像!
bash
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
vda 253:0 0 40G 0 disk
├─vda1 253:1 0 2G 0 part /boot
└─vda2 253:2 0 38G 0 part /
vdb 253:16 0 16.1G 1 disk
2. 挂载光驱
mount的时候出现mount: /mnt/cdrom: WARNING: source write-protected, mounted read-only.这个警告完全从正常,不是错误,挂载已经成功了。
bash
# 创建挂载目录
mkdir -p /mnt/cdrom
# 挂载vdb(你的光驱)
mount /dev/vdb /mnt/cdrom
# 验证挂载成功(能看到文件就是没问题)
ls /mnt/cdrom
(二)本地 DNF 源配置
1. 备份系统原有网络源(防止冲突)
bash
mkdir -p /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/ 2>/dev/null
2. 创建本地 DVD 源配置文件
bash
cat > /etc/yum.repos.d/local-dvd.repo << EOF
[LocalDVD]
name=openEuler 22.03 Local DVD Source
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
EOF
3. 清空旧缓存 + 生成新的本地缓存
bash
dnf clean all
dnf makecache