QEMU 8.2.2 Windows 10 部署 ARM 银河麒麟:3步脚本实现一键启动与SSH连接

📅 2026/7/13 9:55:23 👁️ 阅读次数 📝 编程学习
QEMU 8.2.2 Windows 10 部署 ARM 银河麒麟:3步脚本实现一键启动与SSH连接

QEMU 8.2.2 Windows 10 部署 ARM 银河麒麟:3步脚本实现一键启动与SSH连接

在跨架构开发测试场景中,x86平台模拟ARM环境的需求日益增长。本文将演示如何通过QEMU 8.2.2在Windows 10系统上快速搭建银河麒麟ARM64虚拟机环境,并提供三个自动化脚本实现从安装到连接的完整流程。

1. 环境准备与自动化部署方案

传统QEMU部署ARM虚拟机需要手动执行十余条命令,而我们的方案将其简化为三个脚本文件:

deploy_arm_kylin ├── 1_install_qemu.bat # 环境检测与QEMU安装 ├── 2_create_vm.bat # 虚拟磁盘创建与系统安装 └── 3_start_vm.bat # 虚拟机启动与SSH端口映射

1.1 硬件与软件需求

最低配置要求

  • Windows 10 64位系统(版本1903及以上)
  • 四核CPU(推荐Intel i5/i7或同级AMD)
  • 16GB内存(虚拟机分配8GB)
  • 100GB可用磁盘空间

必要组件下载

组件名称推荐版本存储路径示例
QEMU安装包8.2.2 Windows版C:\qemu\installer
银河麒麟ISO镜像V10 SP2 ARM64D:\iso\kylin-server
UEFI固件文件QEMU_EFI.fdC:\qemu\firmware

提示:银河麒麟镜像需从官方渠道获取,UEFI文件可从Linaro官网下载最新稳定版

1.2 自动化安装脚本(1_install_qemu.bat)

@echo off :: 检测系统架构 wmic os get osarchitecture | find "64" >nul || ( echo 错误:需要64位Windows系统 pause exit /b 1 ) :: 创建QEMU安装目录 if not exist "C:\qemu" ( mkdir C:\qemu mkdir C:\qemu\firmware ) :: 下载并安装QEMU(示例使用本地路径) if exist "%~dp0qemu-w64-setup-20230816.exe" ( start /wait "" "%~dp0qemu-w64-setup-20230816.exe" /S /D=C:\qemu ) else ( echo 请将QEMU安装包放置在脚本同级目录 pause exit /b 1 ) :: 添加系统环境变量 setx PATH "%PATH%;C:\qemu" /m echo QEMU 8.2.2安装完成 pause

2. 虚拟机创建与系统安装

2.1 一键创建虚拟磁盘(2_create_vm.bat)

@echo off set QEMU_DIR=C:\qemu set VM_DIR=D:\vm\kylin_arm set ISO_PATH=%~dp0Kylin-Server-10-SP2-aarch64-Release-Build09-20210524.iso :: 验证镜像文件 if not exist "%ISO_PATH%" ( echo 错误:银河麒麟ISO镜像未找到 pause exit /b 1 ) :: 创建虚拟机目录 if not exist "%VM_DIR%" ( mkdir "%VM_DIR%" ) :: 生成80GB虚拟磁盘(qcow2格式) "%QEMU_DIR%\qemu-img.exe" create -f qcow2 "%VM_DIR%\kylin_disk.qcow2" 80G :: 启动安装进程 "%QEMU_DIR%\qemu-system-aarch64.exe" ^ -m 8192 -cpu cortex-a72 -smp 4 ^ -M virt -bios "%QEMU_DIR%\firmware\QEMU_EFI.fd" ^ -device VGA -device nec-usb-xhci ^ -device usb-tablet -device usb-kbd ^ -drive if=none,file="%VM_DIR%\kylin_disk.qcow2",id=hd0 ^ -device virtio-blk-device,drive=hd0 ^ -drive if=none,file="%ISO_PATH%",id=cdrom,media=cdrom ^ -device virtio-scsi-device -device scsi-cd,drive=cdrom ^ -net nic -net user,hostfwd=tcp::2222-:22 echo 安装完成后请运行3_start_vm.bat启动虚拟机 pause

关键参数解析

  • -m 8192:分配8GB内存
  • -cpu cortex-a72:模拟ARM Cortex-A72处理器
  • hostfwd=tcp::2222-:22:将宿主机的2222端口映射到虚拟机22端口

2.2 银河麒麟安装注意事项

  1. 分区方案

    • 建议使用自动分区
    • 手动分区时确保有:
      • /boot至少1GB
      • swap内存的1.5倍
      • /剩余所有空间
  2. 网络配置

    # 虚拟机内执行 nmcli con mod "有线连接" ipv4.method manual ipv4.addresses 192.168.100.2/24 nmcli con up "有线连接"
  3. 性能优化

    • 安装时选择"最小安装"
    • 取消不必要的桌面环境
    • 关闭图形登录界面:
      systemctl set-default multi-user.target

3. 自动化启动与SSH连接

3.1 优化启动脚本(3_start_vm.bat)

@echo off set QEMU_DIR=C:\qemu set VM_DIR=D:\vm\kylin_arm :: 检测虚拟磁盘是否存在 if not exist "%VM_DIR%\kylin_disk.qcow2" ( echo 错误:虚拟磁盘未找到,请先运行2_create_vm.bat pause exit /b 1 ) :: 启动虚拟机(无图形加速) start "QEMU ARM Kylin" "%QEMU_DIR%\qemu-system-aarch64.exe" ^ -m 8192 -cpu cortex-a72 -smp 4 ^ -M virt -bios "%QEMU_DIR%\firmware\QEMU_EFI.fd" ^ -device virtio-gpu-pci ^ -device nec-usb-xhci -device usb-tablet -device usb-kbd ^ -drive if=none,file="%VM_DIR%\kylin_disk.qcow2",id=hd0 ^ -device virtio-blk-device,drive=hd0 ^ -net nic,model=virtio -net user,hostfwd=tcp::2222-:22 ^ -daemonize echo 虚拟机已启动,SSH连接命令: echo ssh -p 2222 kylinuser@127.0.0.1 echo 默认密码:Kylin123123 pause

3.2 SSH连接与文件传输

基础连接

# Windows终端执行 ssh -p 2222 root@localhost

SCP文件传输

# 上传文件到虚拟机 scp -P 2222 .\local_file.txt root@localhost:/home/ # 下载虚拟机文件 scp -P 2222 root@localhost:/var/log/syslog .\

VS Code远程开发配置

  1. 安装Remote - SSH扩展
  2. 添加配置:
    Host QEMU-Kylin HostName localhost User root Port 2222

4. 常见问题排查手册

4.1 启动故障处理

故障现象可能原因解决方案
黑屏无响应UEFI版本不兼容更换为Linaro 2023版UEFI固件
报错"failed to initialize"缺少SDL2.dll安装最新版SDL2运行时库
网络连接超时端口冲突修改脚本中的2222为其他端口

4.2 性能优化方案

内存分配建议

  • 4GB:基础命令行操作
  • 8GB:轻量级服务测试
  • 16GB:完整开发环境

磁盘IO加速

:: 修改3_start_vm.bat的-drive参数 -drive if=none,file="%VM_DIR%\kylin_disk.qcow2",id=hd0,cache=writeback

多核CPU配置

:: 修改-smp参数(示例:8核) -smp 8,sockets=2,cores=4,threads=1

4.3 高级网络配置

桥接模式示例

-net nic,model=virtio -net bridge,br=eth0

端口转发扩展

-hostfwd=tcp::3389-:3389 -hostfwd=tcp::8080-:80