【信创实战】x86电脑运行麒麟ARM系统:QEMU虚拟化完全指南(含一键脚本、性能优化、AI部署)

【信创实战】x86电脑运行麒麟ARM系统:QEMU虚拟化完全指南(含一键脚本、性能优化、AI部署)

一句话总结:本文给出在 Windows x86 电脑上用 QEMU 运行银河麒麟 V11 ARM64 系统的完整方案,含一键脚本、9 大避坑、国产化源配置与 AI 部署,复制即可用。

📌 本文是「高校信创AI实战」系列第一篇 | 核心命题:用一台x86电脑,搭建完整的国产化ARM开发与AI测试环境

文章目录

  • 【信创实战】x86电脑运行麒麟ARM系统:QEMU虚拟化完全指南(含一键脚本、性能优化、AI部署)
    • 环境与版本声明
    • 一、前言:为什么高校需要ARM虚拟化?
      • [1.1 信创政策的"硬约束"](#1.1 信创政策的"硬约束")
      • [1.2 虚拟化:成本最低的信创测试方案](#1.2 虚拟化:成本最低的信创测试方案)
      • [1.3 为什么选 QEMU,而不是 VMware / VirtualBox?](#1.3 为什么选 QEMU,而不是 VMware / VirtualBox?)
      • [1.4 本文能帮你什么](#1.4 本文能帮你什么)
    • 二、环境准备:物料清单
      • [2.1 硬件要求](#2.1 硬件要求)
      • [2.2 软件物料与目录结构](#2.2 软件物料与目录结构)
      • [2.3 下载地址](#2.3 下载地址)
    • 三、QEMU安装:3分钟完成
      • [3.1 安装步骤](#3.1 安装步骤)
      • [3.2 验证安装](#3.2 验证安装)
    • 四、创建虚拟磁盘:1条命令
      • [4.1 创建磁盘文件](#4.1 创建磁盘文件)
      • [4.2 验证磁盘](#4.2 验证磁盘)
    • 五、安装银河麒麟系统:核心步骤
      • [5.1 启动安装程序](#5.1 启动安装程序)
      • [.2 关键操作:5秒选择](#.2 关键操作:5秒选择)
      • [5.3 图形化安装](#5.3 图形化安装)
      • [5.4 安装完成](#5.4 安装完成)
    • 六、启动系统:一键运行
    • 七、9大避坑指南(我踩过的坑)
      • [避坑1:路径空格 → 命令解析失败](#避坑1:路径空格 → 命令解析失败)
      • [避坑2:错过5秒选择 → 进入预览模式](#避坑2:错过5秒选择 → 进入预览模式)
      • [避坑3:选错模拟器 → 无法启动ARM系统](#避坑3:选错模拟器 → 无法启动ARM系统)
      • [避坑4:UEFI固件缺失或路径错误 → 无法启动](#避坑4:UEFI固件缺失或路径错误 → 无法启动)
      • [避坑5:中文乱码 → 脚本无法阅读](#避坑5:中文乱码 → 脚本无法阅读)
      • [避坑6:内存不足 → 安装卡顿](#避坑6:内存不足 → 安装卡顿)
      • [避坑7:磁盘格式错误 → 无法识别](#避坑7:磁盘格式错误 → 无法识别)
      • [避坑8:网络不通 → 无法SSH](#避坑8:网络不通 → 无法SSH)
      • [避坑9:显示卡死 → SDL兼容问题](#避坑9:显示卡死 → SDL兼容问题)
    • 八、性能优化:让虚拟机飞起来
      • [8.1 CPU模型选择](#8.1 CPU模型选择)
      • [8.2 VirtIO设备加速](#8.2 VirtIO设备加速)
      • [8.3 KVM嵌套虚拟化(仅ARM宿主机生效)](#8.3 KVM嵌套虚拟化(仅ARM宿主机生效))
    • 九、国产化源配置:直击下载慢的痛点
      • [9.1 APT源配置(麒麟V11)](#9.1 APT源配置(麒麟V11))
      • [9.2 校内源配置(高校专属加速)](#9.2 校内源配置(高校专属加速))
      • [9.3 Pip源配置(Python包加速)](#9.3 Pip源配置(Python包加速))
      • [9.4 虚拟环境+源配置(最佳实践)](#9.4 虚拟环境+源配置(最佳实践))
      • [9.5 Docker镜像源配置](#9.5 Docker镜像源配置)
      • [9.6 Docker Hub镜像加速(ARM专用)](#9.6 Docker Hub镜像加速(ARM专用))
      • [9.7 一键配置脚本](#9.7 一键配置脚本)
      • [9.8 源配置验证清单](#9.8 源配置验证清单)
    • 十、开发环境配置:从系统到生产力
      • [10.1 安装Docker(ARM版)](#10.1 安装Docker(ARM版))
      • [10.2 安装Python开发环境](#10.2 安装Python开发环境)
      • [10.3 安装Node.js(如需前端开发)](#10.3 安装Node.js(如需前端开发))
      • [10.4 开发环境验证清单](#10.4 开发环境验证清单)
    • 十一、AI部署实战:在ARM上跑DeepSeek
      • [11.1 安装Ollama(ARM版)](#11.1 安装Ollama(ARM版))
      • [11.2 拉取DeepSeek模型](#11.2 拉取DeepSeek模型)
      • [11.3 验证模型运行](#11.3 验证模型运行)
      • [11.4 安装MaxKB(可选)](#11.4 安装MaxKB(可选))
    • 十二、速查卡:一页纸回顾
      • [12.1 命令速查](#12.1 命令速查)
      • [12.2 参数速查](#12.2 参数速查)
      • [12.3 源配置速查表](#12.3 源配置速查表)
      • [12.4 故障排查流程](#12.4 故障排查流程)
    • 十三、总结与进阶
    • 变更日志
    • [📥 配套资源](#📥 配套资源)
    • 关于作者

环境与版本声明

⚠️ 本文验证环境(2026年7月实测):

  • 宿主机:Windows 11 家庭版,Intel Core Ultra 9 275HX(24 核),16GB 内存
  • QEMU:11.0.50(v11.0.0-12631-g54e84cdc7a)
  • 麒麟镜像:Kylin-Desktop-V11-2603-Release-20260228-ARM64.iso
  • UEFI 固件 :QEMU 自带 edk2-aarch64-code.fd

⚠️ 适用范围:本文脚本适用于 QEMU 10.x / 11.x,麒麟 V11 2603 及邻近版本。其他版本参数可能需要微调。

⚠️ 性能边界 :x86_64 宿主机上为纯软件模拟(TCG),性能约为原生 ARM 的 1/5~1/10,适合功能验证、教学演示、兼容性测试,不适合大规模计算或生产部署。生产环境请使用 ARM 物理机或 ARM 云服务器。

前置条件检查清单

开始前请逐项确认(满足全部条件再动手,可避免 80% 的安装失败):

检查项 命令 / 方法 期望结果 不满足的处理
QEMU 已安装 D:\software\QEMU\qemu-system-aarch64.exe --version 显示版本号 先完成第三章安装
固件文件存在 dir D:\software\QEMU\share\edk2-aarch64-code.fd 文件存在 重装 QEMU 并勾选全部组件
麒麟 ISO 已下载 dir D:\QEMU_Kylin\isos\Kylin-Desktop-V11-2603-Release-20260228-ARM64.iso 文件存在 kylinos.cn 下载 ARM64 版
宿主机内存 ≥16GB 任务管理器 → 性能 → 内存 ≥16GB 关闭其他程序或升级内存
磁盘可用空间 ≥50GB dir D:\QEMU_Kylin\vms\kylin_v11\ 查看盘符剩余 ≥50GB 清理磁盘
CMD 支持中文 打开 CMD 输入 echo 测试 正常显示 脚本已加 chcp 65001,无需处理

一、前言:为什么高校需要ARM虚拟化?

1.1 信创政策的"硬约束"

2026年,教育行业信创替代进入深水区。越来越多的高校收到明确要求:

"新建信息系统须优先采用国产芯片架构,现有系统逐步迁移。"

而国产芯片的主流架构是ARM(鲲鹏、飞腾)。问题随之而来:

场景 困境
开发测试 没有ARM服务器,如何测试应用兼容性?
教学实验 采购ARM设备成本高,如何让学生上手?
AI部署 国产AI框架(如MindSpore)优先支持ARM,如何验证?
系统迁移 x86应用迁移到ARM,如何提前验证?

1.2 虚拟化:成本最低的信创测试方案

复制代码
方案对比:

采购ARM服务器        虚拟机方案
├── 成本:2-5万元/台   ├── 成本:0元(现有电脑)
├── 周期:采购+部署1月 ├── 周期:1小时搭建
├── 风险:买错配置     ├── 风险:随时调整
└── 扩展:固定硬件     └── 扩展:无限克隆

结论:虚拟化是"先验证、再采购"的最优路径

1.3 为什么选 QEMU,而不是 VMware / VirtualBox?

这是读者最常问的问题。三种方案在跨架构虚拟化场景下差异显著:

维度 QEMU VMware Workstation VirtualBox
跨架构支持 ✅ x86_64 宿主跑 ARM/MIPS/RISC-V ❌ 仅同架构 ❌ 仅同架构
ARM 系统支持 ✅ 完整(aarch64 + UEFI) ❌ 不支持 ❌ 不支持
性能(同架构) 中(TCG 模拟) 高(硬件虚拟化)
开源免费 ✅ GPL ❌ 商业 ✅ GPL
信创生态 ✅ 鲲鹏/飞腾官方文档引用
适用场景 跨架构信创测试(本文) x86 虚拟化 个人 x86 实验

结论 :要在 x86 电脑上运行 ARM 版麒麟,QEMU 是唯一可行方案。VMware/VirtualBox 只能在 x86_64 宿主机上运行 x86 系统,无法模拟 ARM 指令集。

1.4 本文能帮你什么

读完本文,你将获得

  • ✅ 一套在Windows/Linux上运行银河麒麟ARM系统的完整方案
  • ✅ 一个一键启动脚本(复制粘贴即可用)
  • 9个避坑指南(我踩过的坑,你不用再踩)
  • ✅ 从虚拟化到AI部署的完整闭环(Ollama+DeepSeek+MaxKB)
  • 国产化源配置方案(APT/Pip/Docker,直击下载慢的痛点)

适合谁:高校信息化人员、信创开发者、AI应用工程师、技术爱好者


二、环境准备:物料清单

2.1 硬件要求

项目 最低配置 推荐配置 说明
CPU x86_64任意 支持虚拟化(VT-x) 本文用Intel Core Ultra 9 275HX测试
内存 8GB 16GB+ 虚拟机分配8GB,宿主机留8GB
磁盘 50GB 100GB+ 系统+开发环境+AI模型
系统 Windows 10/11 Windows 11 / Linux 本文以Windows为主

2.2 软件物料与目录结构

本文统一使用以下目录结构(路径无空格):

复制代码
📁 D:\software\QEMU\              <-- QEMU安装目录
├── qemu-system-aarch64.exe       <-- ARM64模拟器主程序
├── qemu-img.exe                  <-- 磁盘工具
└── 📁 share\
    └── edk2-aarch64-code.fd      <-- ARM64 UEFI固件(QEMU自带)

📁 D:\QEMU_Kylin\                 <-- 虚拟机工作区
├── 📁 isos\
│   └── Kylin-Desktop-V11-2603-Release-20260228-ARM64.iso  <-- 麒麟V11镜像
└── 📁 vms\
    └── 📁 kylin_v11\
        ├── system.img            <-- 虚拟磁盘(本文创建)
        ├── install.bat           <-- 安装脚本(本文创建)
        └── start.bat             <-- 启动脚本(本文创建)

⚠️ 避坑1:路径不要有空格

默认安装路径 C:\Program Files\QEMU 会导致命令行转义失败。建议安装到 D:\software\QEMU 这类无空格路径。

2.3 下载地址

物料 官方地址 说明
QEMU https://qemu.weilnetz.de/w64/ Windows 64-bit 安装包
麒麟镜像 https://www.kylinos.cn/ 需注册下载,选 ARM64 版本
UEFI固件 QEMU安装包自带 安装后在 share\ 目录下

官方文档参考:


三、QEMU安装:3分钟完成

3.1 安装步骤

双击下载的 .exe 安装包:

  1. 选择安装语言:English
  2. 选择安装路径:D:\software\QEMU再次强调:无空格
  3. 组件选择:保持默认(全选)
  4. 完成安装

3.2 验证安装

打开CMD或PowerShell:

bash 复制代码
D:\software\QEMU\qemu-system-aarch64.exe --version

预期输出:

复制代码
QEMU emulator version 11.0.50 (v11.0.0-12631-g54e84cdc7a)
Copyright (c) 2003-2026 Fabrice Bellard and the QEMU Project developers

验证固件文件存在(后续启动会用到):

bash 复制代码
dir D:\software\QEMU\share\edk2-aarch64-code.fd

预期输出:

复制代码
2026/07/17  18:00         2,097,152 edk2-aarch64-code.fd

💡 关键点 :本文运行的是 ARM64 系统,必须用 qemu-system-aarch64.exe,而非 qemu-system-x86_64.exe。后者只能运行 x86 系统,无法模拟 ARM 指令集。


四、创建虚拟磁盘:1条命令

4.1 创建磁盘文件

bash 复制代码
D:\software\QEMU\qemu-img create -f qcow2 D:\QEMU_Kylin\vms\kylin_v11\system.img 80G

参数说明:

  • create:创建磁盘
  • -f qcow2:动态分配格式(用多少占多少,最大80G)
  • 80G:最大容量

预期输出:

复制代码
Formatting 'D:\QEMU_Kylin\vms\kylin_v11\system.img', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=85899345920 lazy_refcounts=off refcount_bits=16

4.2 验证磁盘

bash 复制代码
D:\software\QEMU\qemu-img info D:\QEMU_Kylin\vms\kylin_v11\system.img

预期输出:

复制代码
image: D:\QEMU_Kylin\vms\kylin_v11\system.img
file format: qcow2
virtual size: 80 GiB (85899345920 bytes)
disk size: 194 KiB    <-- 注意:实际只占用196KB,动态分配生效

五、安装银河麒麟系统:核心步骤

5.1 启动安装程序

将以下命令保存为 install.bat,放在 D:\QEMU_Kylin\vms\kylin_v11\ 目录:

batch 复制代码
@echo off
chcp 65001 >nul
set QEMU_DIR=D:\software\QEMU
set VM_DIR=D:\QEMU_Kylin\vms\kylin_v11
set BIOS_DIR=D:\software\QEMU\share
set ISO_DIR=D:\QEMU_Kylin\isos

echo [1/3] 正在启动虚拟机...
"%QEMU_DIR%\qemu-system-aarch64.exe" ^
  -m 8192 ^
  -cpu cortex-a72 ^
  -smp 8,sockets=4,cores=2 ^
  -M virt ^
  -bios "%BIOS_DIR%\edk2-aarch64-code.fd" ^
  -device VGA ^
  -device nec-usb-xhci ^
  -device usb-mouse ^
  -device usb-kbd ^
  -drive if=none,file="%VM_DIR%\system.img",id=hd0 ^
  -device virtio-blk-device,drive=hd0 ^
  -drive if=none,file="%ISO_DIR%\Kylin-Desktop-V11-2603-Release-20260228-ARM64.iso",id=cdrom,media=cdrom ^
  -device virtio-scsi-device ^
  -device scsi-cd,drive=cdrom ^
  -net nic,model=virtio ^
  -net user,hostfwd=tcp::2222-:22

echo [2/3] 虚拟机已关闭
echo [3/3] 如安装完成,请运行 start.bat 启动系统
pause

💡 关键说明

  • chcp 65001 >nul 将CMD代码页切换为UTF-8,避免中文乱码(脚本需以UTF-8 with BOM编码保存)
  • 可执行文件是 qemu-system-aarch64.exe(ARM64模拟器),不是 qemu-system-x86_64.exe
  • 固件用 QEMU 自带的 edk2-aarch64-code.fd,无需单独下载

核心参数说明

参数 含义 选型理由
-m 8192 8GB 内存 麒麟桌面版最低要求 4GB,AI 部署建议 8GB+
-cpu cortex-a72 ARM CPU 模型 性能与兼容性平衡点(见第八章分析)
-smp 8,sockets=4,cores=2 8 核 编译/AI 推理需要多核
-M virt ARM 通用虚拟机 QEMU 官方推荐的 ARM 机型
-device virtio-blk-device VirtIO 磁盘 比模拟 IDE 快 30%+
-net user,hostfwd=tcp::2222-:22 端口转发 宿主机 2222 → 虚拟机 22,便于 SSH

双击运行 install.bat

.2 关键操作:5秒选择

⚠️ 避坑2:安装界面出现后,必须在5秒内选择

默认会进入"Try Kylin"预览模式,不会安装到硬盘。如果错过,关闭窗口重新运行 install.bat

操作步骤

  1. 看到启动菜单后,立即 用方向键选择:

    复制代码
    Install Kylin-Desktop V11
  2. 按回车确认

5.3 图形化安装

后续步骤与物理机安装一致:

步骤 操作 建议
语言选择 中文 默认
时区选择 上海 默认
磁盘分区 自动分区 新手推荐
用户创建 设置用户名密码 记住密码
开始安装 等待15-30分钟 不要关闭窗口

5.4 安装完成

看到"安装成功,请重启"提示后:

  1. 关闭QEMU窗口
  2. 编辑 install.bat删除ISO相关行 (或直接用下一节的 start.bat

六、启动系统:一键运行

6.1 创建启动脚本

新建 start.bat

batch 复制代码
@echo off
chcp 65001 >nul
set QEMU_DIR=D:\software\QEMU
set VM_DIR=D:\QEMU_Kylin\vms\kylin_v11
set BIOS_DIR=D:\software\QEMU\share

echo ============================================
echo   银河麒麟 V11 ARM64 虚拟机启动器
echo   作者:萧青山
echo   系列:高校信创AI实战(1/n)
echo ============================================
echo.

echo [1/3] 检查虚拟磁盘...
if not exist "%VM_DIR%\system.img" (
    echo 错误:虚拟磁盘不存在,请先运行 install.bat
    pause
    exit /b 1
)

echo [2/3] 启动虚拟机...
echo     内存: 8GB
echo     CPU:  Cortex-A72 x8
echo     磁盘: %VM_DIR%\system.img
echo     SSH:  localhost:2222
echo.

"%QEMU_DIR%\qemu-system-aarch64.exe" ^
  -m 8192 ^
  -cpu cortex-a72 ^
  -smp 8,sockets=4,cores=2 ^
  -M virt ^
  -bios "%BIOS_DIR%\edk2-aarch64-code.fd" ^
  -device VGA ^
  -device nec-usb-xhci ^
  -device usb-mouse ^
  -device usb-kbd ^
  -drive if=none,file="%VM_DIR%\system.img",id=hd0 ^
  -device virtio-blk-device,drive=hd0 ^
  -net nic,model=virtio ^
  -net user,hostfwd=tcp::2222-:22

echo.
echo [3/3] 虚拟机已关闭
echo     SSH连接命令: ssh -p 2222 user@localhost
pause

双击 start.bat,看到登录界面即成功。

6.2 验证启动成功

启动后在宿主机 PowerShell 验证端口转发:

bash 复制代码
# 检查 2222 端口是否监听
netstat -ano | findstr :2222

预期输出:

复制代码
TCP    0.0.0.0:2222    0.0.0.0:0    LISTENING    50908

若虚拟机内已启动 sshd,可测试 SSH 连接:

bash 复制代码
ssh -p 2222 user@localhost
# 输入安装时设置的密码

6.3 宿主机与虚拟机共享文件(4 种方案对比)

信创开发常需在宿主机与麒麟虚拟机之间传文件:宿主机下载的代码包、ISO、模型权重需送进虚拟机;虚拟机内编译的产物、日志需取回宿主机。本节给出 4 种方案,按推荐度排序。

方案对比

方案 方向 速度 配置难度 适用场景
① SCP/SFTP(推荐) 双向 中(受 TCG 限制) ⭐ 零配置 临时传文件、脚本化传输
② 共享文件夹(virtfs/9p) 双向 ⭐⭐⭐ 需改启动参数 频繁双向同步、开发目录挂载
③ 镜像磁盘挂载 宿主→虚拟机 ⭐⭐ 需制作镜像 传大文件(模型权重、ISO)
④ HTTP 临时服务 宿主→虚拟机 ⭐ 一行命令 临时下载、无 SCP 环境时
方案①:SCP/SFTP(推荐,零配置)

利用第六章已配置的 SSH 端口转发(hostfwd=tcp::2222-:22),无需额外配置。

bash 复制代码
# 宿主机 → 虚拟机(上传)
scp -P 2222 D:\path\to\file.tar.gz user@localhost:~/uploads/

# 虚拟机 → 宿主机(下载)
scp -P 2222 user@localhost:~/build/output.log D:\downloads\

# 传整个目录(-r 递归)
scp -P 2222 -r D:\project\ user@localhost:~/projects/

# 指定密钥免密登录(可选,避免每次输密码)
ssh-keygen -t ed25519                          # 宿主机生成密钥
ssh-copy-id -p 2222 user@localhost             # 推送公钥到虚拟机

验证 :虚拟机内 ls ~/uploads/ 应看到文件。

💡 SFTP 工具 :Windows 下推荐 WinSCP 或 FileZilla,主机填 localhost,端口填 2222,图形化拖拽传输,适合大批量文件。

方案②:共享文件夹(virtfs / 9p,开发推荐)

通过 QEMU 的 virtio-9p 设备将宿主机目录挂载到虚拟机,实现实时双向同步,适合开发目录共享。

第 1 步:修改 start.bat,添加 virtfs 参数

qemu-system-aarch64.exe 命令中追加以下参数(与 -device 同级):

batch 复制代码
  -virtfs local,path=D:\QEMU_Kylin\share,mount_tag=hostshare,security_model=none,id=hostshare ^

完整示例(仅展示新增行,其余参数不变):

batch 复制代码
"%QEMU_DIR%\qemu-system-aarch64.exe" ^
  -m 8192 ^
  -cpu cortex-a72 ^
  -smp 8,sockets=4,cores=2 ^
  -M virt ^
  -bios "%BIOS_DIR%\edk2-aarch64-code.fd" ^
  -device VGA ^
  -device nec-usb-xhci ^
  -device usb-mouse ^
  -device usb-kbd ^
  -drive if=none,file="%VM_DIR%\system.img",id=hd0 ^
  -device virtio-blk-device,drive=hd0 ^
  -net nic,model=virtio ^
  -net user,hostfwd=tcp::2222-:22 ^
  -virtfs local,path=D:\QEMU_Kylin\share,mount_tag=hostshare,security_model=none,id=hostshare

第 2 步:在宿主机创建共享目录

powershell 复制代码
mkdir D:\QEMU_Kylin\share
# 把要共享的文件放进去,如 requirements.txt、模型权重等

第 3 步:虚拟机内挂载 9p 设备

bash 复制代码
# 创建挂载点
sudo mkdir -p /mnt/hostshare

# 临时挂载(重启后失效)
sudo mount -t 9p -o trans=virtio,version=9p2000.L hostshare /mnt/hostshare

# 验证
ls /mnt/hostshare/
# 应看到宿主机 D:\QEMU_Kylin\share 下的文件

# 开机自动挂载(追加到 /etc/fstab)
echo "hostshare /mnt/hostshare 9p trans=virtio,version=9p2000.L 0 0" | sudo tee -a /etc/fstab

第 4 步:验证双向同步

bash 复制代码
# 虚拟机内写文件
echo "from VM" | sudo tee /mnt/hostshare/test.txt
# 宿主机 D:\QEMU_Kylin\share\ 应立即出现 test.txt

# 宿主机写文件 → 虚拟机立即可读
cat /mnt/hostshare/test.txt

⚠️ 避坑(9p 共享)

  • security_model=none 不做权限映射,生产环境改用 security_model=mapped-xattr(需文件系统支持 xattr)
  • 麒麟 V11 内核已内置 9p 模块,无需额外安装;如 mountunknown filesystem type '9p',执行 sudo modprobe 9p 9pnet_virtio
  • 9p 不支持文件锁(flock),Git 仓库、SQLite 数据库等需锁文件的应用不要直接放在共享目录
  • 大文件(>1GB)传输速度优于 SCP,但首次访问有缓存延迟
方案③:镜像磁盘挂载(传大文件)

将文件打包成 .img 磁盘镜像,挂载为虚拟机的第二块硬盘。适合传输模型权重(GB 级)、ISO 等。

powershell 复制代码
# 第 1 步:宿主机创建 FAT32 镜像(1GB 示例)
D:\software\QEMU\qemu-img.exe create -f raw D:\QEMU_Kylin\vms\kylin_v11\share.img 1G

# 第 2 步:宿主机格式化为 FAT32(Windows 需用 diskpart 或第三方工具)
# 简化做法:用 OSFMount / ImDisk 挂载后格式化,再拷入文件
batch 复制代码
:: 第 3 步:start.bat 追加第二块硬盘
  -drive if=none,file="%VM_DIR%\share.img",id=hd1,format=raw ^
  -device virtio-blk-device,drive=hd1 ^
bash 复制代码
# 第 4 步:虚拟机内挂载
sudo mkdir -p /mnt/share
sudo mount /dev/vdb /mnt/share        # vdb 是第二块 virtio 磁盘
ls /mnt/share

⚠️ 注意:FAT32 单文件上限 4GB;超过请用 exFAT 或 ext4(但 ext4 宿主机 Windows 难以读取)。

方案④:HTTP 临时服务(应急方案)

宿主机起一个临时 HTTP 服务,虚拟机内用 wget 下载。适合无 SCP 环境或临时传单文件。

powershell 复制代码
# 宿主机 PowerShell(在文件所在目录执行)
python -m http.server 8000
# 或
npx serve -l 8000
bash 复制代码
# 虚拟机内(需先确认网关 IP,通常为 10.0.2.2,即 QEMU user 网络的宿主机地址)
ip route | grep default       # 查看默认网关
wget http://10.0.2.2:8000/requirements.txt

💡 网关 IP 规律 :QEMU -net user 模式下,虚拟机看到的宿主机 IP 固定为 10.0.2.2,虚拟机自身为 10.0.2.15

文件共享方案选型建议
场景 推荐方案 理由
临时传几个脚本/配置文件 ① SCP 零配置,命令行直接用
开发目录双向同步(代码热更新) ② 9p 共享 实时同步,IDE 改完虚拟机立即可见
传 5GB+ 模型权重 ③ 镜像磁盘 避免 SCP 长时间占用网络
临时给别人下载,无 SSH 环境 ④ HTTP 一行命令,用完即关

⚠️ 性能提示:TCG 模拟模式下所有 I/O 都经软件翻译,大文件传输速度约为原生 ARM 的 1/3~1/5。传 10GB 模型权重预计 5-15 分钟(视宿主机磁盘速度)。


七、9大避坑指南(我踩过的坑)

避坑1:路径空格 → 命令解析失败

错误路径 正确路径
C:\Program Files\QEMU D:\software\QEMU
D:\Program Files (x86)\QEMU D:\qemu_tools

症状 :命令行报 系统找不到指定路径

避坑2:错过5秒选择 → 进入预览模式

症状:系统从ISO启动,但安装程序没有运行,进入桌面预览

解决 :1.关闭窗口,重新运行 install.bat眼睛盯着屏幕,出现菜单立即选择;2.点击桌面系统安装快捷方式安装系统。

避坑3:选错模拟器 → 无法启动ARM系统

症状 :用 qemu-system-x86_64.exe 启动ARM镜像,黑屏或直接退出

根因分析 :x86_64 版本的 QEMU 只能运行 x86 系统,它不具备 ARM 指令集翻译能力(TCG)。运行 ARM 镜像必须使用 qemu-system-aarch64.exe,这是本文最核心的避坑点。

解决 :必须使用 qemu-system-aarch64.exe

避坑4:UEFI固件缺失或路径错误 → 无法启动

排错过程

  1. 第一次尝试用网上教程的路径 D:\QEMU_Kylin\bios\QEMU_EFI.fd → 报错 Could not find ROM image
  2. 检查发现 D:\QEMU_Kylin\bios\ 目录根本不存在
  3. 搜索 QEMU 安装目录,发现固件在 D:\software\QEMU\share\
  4. 该目录有多个固件:edk2-aarch64-code.fdedk2-i386-code.fd
  5. 因运行 ARM64 系统,选用 edk2-aarch64-code.fd

症状 :报错 Could not find ROM image 'D:\QEMU_Kylin\bios\QEMU_EFI.fd'

解决 :QEMU安装后固件在 D:\software\QEMU\share\ 目录下,ARM64 对应文件名是 edk2-aarch64-code.fd,不是 QEMU_EFI.fd

避坑5:中文乱码 → 脚本无法阅读

症状 :CMD窗口中 echo 输出的中文显示为乱码

根因:CMD 默认代码页是 GBK(936),而脚本文件若以 UTF-8 无 BOM 保存,两者不匹配。

解决

  1. 脚本开头加 chcp 65001 >nul(切换代码页为 UTF-8)
  2. 脚本文件以 UTF-8 with BOM 编码保存(用记事本"另存为"选UTF-8即可)

避坑6:内存不足 → 安装卡顿

症状:安装进度极慢,或报内存错误

根因分析 :QEMU 的 -m 8192 参数会在宿主机上预分配 8GB 地址空间。若宿主机总内存仅 8GB 或已被其他程序占用大半,操作系统会频繁换页(swap),导致虚拟机每秒只能处理几条指令,安装可能从 20 分钟拖到数小时。

排查步骤

  1. 宿主机任务管理器 → 性能 → 内存,查看"已提交"是否接近上限
  2. 安装时观察宿主机磁盘灯是否狂闪(swap 抖动)
  3. 若已卡住,不要强行关闭,先在任务管理器结束 qemu-system-aarch64.exe

解决

  • 最低方案:宿主机至少 16GB 内存,虚拟机分配 8GB
  • 紧凑方案:宿主机仅 8GB 时,虚拟机降到 -m 4096(仅够装系统,装完再调回)
  • 最佳方案:宿主机 32GB,虚拟机 8GB,宿主机留 24GB 给系统和其他程序

避坑7:磁盘格式错误 → 无法识别

症状:安装程序找不到磁盘,或进入安装界面后"磁盘"列表为空

根因分析:QEMU 支持多种磁盘格式与挂载方式,组合错误会导致客户机内核无法识别设备:

磁盘格式 特点 适用场景
qcow2 动态分配、支持快照、压缩 推荐(本文选用)
raw 原始镜像、性能略高、无快照 性能极致场景
img 通用容器,需指定格式 不推荐,易混淆
挂载方式 客户机识别为 性能 兼容性
virtio-blk-device /dev/vda 需内核驱动
ide(老式) /dev/sda 通用
scsi /dev/sda 通用

排错过程

  1. 第一次用 if=ide 挂载 → 麒麟安装程序识别到磁盘但写入极慢
  2. 改用 virtio-blk-device → 识别正常,速度提升明显
  3. 必须用 -drive if=none,...,id=hd0 + -device virtio-blk-device,drive=hd0 两段式挂载

解决 :使用 qcow2 格式,且通过 virtio-blk-device 设备挂载(本文脚本已配置正确)。

避坑8:网络不通 → 无法SSH

症状ssh -p 2222 user@localhost 连接失败

排查步骤

  1. 宿主机执行 netstat -ano | findstr :2222 确认端口转发已生效
  2. 虚拟机内执行 sudo systemctl status sshd 确认 sshd 已启动
  3. 虚拟机内执行 ip addr 确认有 10.0.2.15 网段地址

解决 :检查启动命令中的 -net user,hostfwd=tcp::2222-:22 是否完整;确认虚拟机内 sshd 服务已启动。

避坑9:显示卡死 → SDL兼容问题

症状:界面冻结,鼠标键盘无响应,但 QEMU 进程仍在运行

根因分析 :默认的 -device usb-mouse 使用相对坐标,与 QEMU 的 SDL 显示后端配合时,鼠标进入窗口后会被"抓取"且无法释放,造成"卡死"假象。实际是鼠标事件被锁定在窗口内,键盘焦点也未正确切换。

排查步骤

  1. Ctrl+Alt+G 尝试释放 grab ------ 若鼠标恢复,说明是抓取问题
  2. Ctrl+Alt+G 无效,检查任务管理器中 QEMU CPU 占用 ------ 若为 0%,则是显示卡死而非系统卡死

解决

  • 方案1(推荐):用 -device usb-tablet 替换 -device usb-mouse,tablet 使用绝对坐标,无需抓取
  • 方案2:保留 usb-mouse,但熟悉 Ctrl+Alt+G 快捷键释放鼠标
  • 方案3:若仍卡死,添加 -display gtk 切换显示后端(需 QEMU 编译时支持 GTK)
batch 复制代码
:: 修改后的设备配置(替换 usb-mouse)
-device nec-usb-xhci ^
-device usb-tablet ^
-device usb-kbd ^

八、性能优化:让虚拟机飞起来

8.1 CPU模型选择

这是性能调优最关键的参数。不同 CPU 模型在性能与兼容性间有显著差异:

模型 性能 兼容性 适用场景 风险提示
cortex-a53 最高 老旧系统、教学 性能差,不推荐生产测试
cortex-a72 推荐(平衡) 本文选用
cortex-a76 新系统 部分老软件可能不识别
max 最高 实验性 启用所有特性,可能触发未知 bug

修改 -cpu 参数即可切换。本文推荐 cortex-a72:经过长期验证,麒麟 V11 完整支持,性能足够跑通开发与 AI 部署流程。

8.2 VirtIO设备加速

已在前文配置中使用:

  • virtio-blk-device:磁盘I/O加速30%+(对比 if=ide,基于 QEMU 官方基准测试与麒麟系统实测,4K 随机读写吞吐提升约 30%-40%)
  • virtio-net:网络I/O加速(减少模拟 e1000 的协议栈开销)
  • virtio-scsi:CD-ROM兼容(支持 SCSI 协议,兼容性优于 virtio-blk 挂载光驱)

⚠️ 边界说明 :VirtIO 需要客户机内核驱动支持。麒麟 V11 内置 VirtIO 驱动,无需额外安装;若运行其他精简版 Linux,可能需要手动加载 virtio_blk 模块。

8.3 KVM嵌套虚拟化(仅ARM宿主机生效)

如果宿主机是 ARM 架构 Linux(如鲲鹏服务器),且 CPU 支持虚拟化:

bash 复制代码
# 检查是否支持KVM
lsmod | grep kvm

# 启动命令添加
-enable-kvm \
-cpu host

性能提升:KVM下ARM虚拟机性能接近原生(90%+)。

⚠️ 重要边界说明 :在 x86_64 宿主机上无法用 KVM 加速 ARM 虚拟机(架构不同,KVM 仅支持同架构加速)。KVM 仅在 ARM 宿主机上对 ARM 虚拟机生效。

Windows 下本文方案为纯软件模拟(TCG),性能约为原生 ARM 的 1/5~1/10,适合功能验证而非大规模计算。若需生产级性能,必须使用 ARM 物理机。


九、国产化源配置:直击下载慢的痛点

在麒麟ARM环境中,默认源往往存在以下问题:

  • 官方源在国外或限速,下载速度极慢
  • 部分软件包在默认源中缺失
  • Docker镜像拉取失败或超时

以下是经过验证的国产化源配置方案

9.1 APT源配置(麒麟V11)

Step 1:备份默认源

bash 复制代码
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 预期输出:无报错即成功
ls /etc/apt/sources.list.bak

Step 2:编辑源列表

bash 复制代码
sudo nano /etc/apt/sources.list

Step 3:替换为清华镜像源(推荐)

bash 复制代码
# 删除原有内容,添加以下行:

deb https://mirrors.tuna.tsinghua.edu.cn/kylin-ubuntu/v11/ main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/kylin-ubuntu/v11/ main-security restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/kylin-ubuntu/v11/ main-updates restricted universe multiverse

备选:中科大源

bash 复制代码
deb https://mirrors.ustc.edu.cn/kylin-ubuntu/v11/ main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/kylin-ubuntu/v11/ main-security restricted universe multiverse
deb https://mirrors.ustc.edu.cn/kylin-ubuntu/v11/ main-updates restricted universe multiverse

⚠️ 避坑10:源地址路径必须匹配系统版本

麒麟V11的源路径是 kylin-ubuntu/v11/,与V10的 v10/ 不同。直接复制V10或Ubuntu源会导致 404 Not Found。配置前请到镜像站确认目录是否存在:

bash 复制代码
# 验证目录是否存在(应返回 200 OK)
curl -I https://mirrors.tuna.tsinghua.edu.cn/kylin-ubuntu/v11/

Step 4:更新缓存

bash 复制代码
sudo apt clean
sudo apt update
# 预期输出:All packages are up to date 或显示可升级包数量

Step 5:验证速度

bash 复制代码
# 测试下载速度
sudo apt install -y htop
# 预期:几秒内安装完成,下载速度 >1MB/s
htop --version
# 预期输出:htop 3.x.x

观察下载速度,如果达到1MB/s+,说明源配置成功。

9.2 校内源配置(高校专属加速)

如果你的高校有镜像站,优先使用校内源(速度最快):

bash 复制代码
# 示例:某高校镜像站(请替换为实际地址)
deb https://mirrors.your-university.edu.cn/kylin/v11/ main restricted universe multiverse

常见高校镜像站

高校 镜像站地址
清华大学 mirrors.tuna.tsinghua.edu.cn
中国科学技术大学 mirrors.ustc.edu.cn
阿里云 mirrors.aliyun.com
腾讯云 mirrors.cloud.tencent.com

9.3 Pip源配置(Python包加速)

Step 1:创建pip配置文件

bash 复制代码
mkdir -p ~/.pip
nano ~/.pip/pip.conf

Step 2:添加清华PyPI镜像

ini 复制代码
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn

[install]
use-mirrors = true
mirrors = https://pypi.tuna.tsinghua.edu.cn

备选:阿里云PyPI

ini 复制代码
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com

Step 3:验证配置

bash 复制代码
pip3 config list
# 预期输出:
# global.index-url='https://pypi.tuna.tsinghua.edu.cn/simple'
# global.trusted-host='pypi.tuna.tsinghua.edu.cn'

pip3 install requests -v  # -v显示详细下载地址
# 预期:Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple

9.4 虚拟环境+源配置(最佳实践)

在麒麟ARM上开发,建议使用虚拟环境隔离:

bash 复制代码
# 安装venv
sudo apt install -y python3-venv python3-pip
# 预期:无报错完成

# 创建项目目录
mkdir -p ~/projects/教务AI
cd ~/projects/教务AI

# 创建虚拟环境
python3 -m venv venv
# 预期:生成 venv/ 目录

# 激活环境
source venv/bin/activate
# 预期:命令提示符变为 (venv) $

# 升级pip并配置源
pip install --upgrade pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

# 安装依赖(锁定版本,确保可复现)
pip install numpy==1.26.4 pandas==2.2.2 flask==3.0.3
# 预期输出:Successfully installed numpy-1.26.4 pandas-2.2.2 flask-3.0.3

⚠️ 风险提示 :生产环境部署时,建议将依赖写入 requirements.txt 并锁定版本号,避免不同环境间版本漂移导致问题:

bash 复制代码
pip freeze > requirements.txt

9.5 Docker镜像源配置

Step 1:创建Docker配置目录

bash 复制代码
sudo mkdir -p /etc/docker

Step 2:编辑daemon.json

bash 复制代码
sudo nano /etc/docker/daemon.json

Step 3:添加国内镜像加速

json 复制代码
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}

⚠️ 避坑11:JSON格式错误

daemon.json必须是严格JSON格式,最后一个元素后面不能有逗号。格式错误会导致Docker无法启动。

验证命令:sudo docker info 无报错即配置正确。

Step 4:重启Docker

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl restart docker
# 预期:无报错

# 验证配置
sudo docker info | grep -A 10 "Registry Mirrors"
# 预期输出:
#  Registry Mirrors:
#   https://docker.mirrors.ustc.edu.cn/
#   https://hub-mirror.c.163.com/
#   https://mirror.baidubce.com/

9.6 Docker Hub镜像加速(ARM专用)

部分镜像在ARM架构下需要从特定仓库拉取:

bash 复制代码
# 拉取ARM版Ubuntu
sudo docker pull arm64v8/ubuntu:22.04
# 预期:Status: Downloaded newer image for arm64v8/ubuntu:22.04

# 拉取ARM版MySQL
sudo docker pull arm64v8/mysql:8.0

# 拉取ARM版Redis
sudo docker pull arm64v8/redis:7.0

常用ARM镜像前缀

镜像 ARM版地址 说明
Ubuntu arm64v8/ubuntu 基础系统
MySQL arm64v8/mysql 数据库
Redis arm64v8/redis 缓存
Nginx arm64v8/nginx Web服务器
Python arm64v8/python 运行环境

9.7 一键配置脚本

将以下保存为 setup-sources.sh,在麒麟ARM系统中运行:

bash 复制代码
#!/bin/bash
# setup-sources.sh
# 一键配置麒麟V11 ARM环境的国产化源
# 适用:银河麒麟V11 ARM64
# 版本:v1.0 (2026-07-17)

set -e

echo "=========================================="
echo "  麒麟V11 ARM64 国产化源配置脚本"
echo "  作者:高校信创AI实战"
echo "  版本:v1.0 (2026-07-17)"
echo "=========================================="
echo ""

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# 检查root权限
if [ "$EUID" -ne 0 ]; then 
    echo -e "${RED}错误:请使用 sudo 运行此脚本${NC}"
    exit 1
fi

echo "[1/5] 备份原有配置..."
cp /etc/apt/sources.list /etc/apt/sources.list.bak.$(date +%Y%m%d)
echo -e "${GREEN}✓ APT源已备份${NC}"

echo ""
echo "[2/5] 配置APT清华镜像源..."
cat > /etc/apt/sources.list << 'EOF'
deb https://mirrors.tuna.tsinghua.edu.cn/kylin-ubuntu/v11/ main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/kylin-ubuntu/v11/ main-security restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/kylin-ubuntu/v11/ main-updates restricted universe multiverse
EOF
echo -e "${GREEN}✓ APT源已配置${NC}"

echo ""
echo "[3/5] 更新APT缓存..."
apt clean
apt update -y
echo -e "${GREEN}✓ APT缓存已更新${NC}"

echo ""
echo "[4/5] 配置Pip清华镜像源..."
mkdir -p ~/.pip
cat > ~/.pip/pip.conf << 'EOF'
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
EOF
echo -e "${GREEN}✓ Pip源已配置${NC}"

echo ""
echo "[5/5] 配置Docker镜像加速..."
mkdir -p /etc/docker
cat > /etc/docker/daemon.json << 'EOF'
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
systemctl daemon-reload
systemctl restart docker
echo -e "${GREEN}✓ Docker镜像加速已配置${NC}"

echo ""
echo "=========================================="
echo -e "${GREEN}  所有源配置完成!${NC}"
echo "=========================================="
echo ""
echo "验证命令:"
echo "  apt update          # 测试APT源"
echo "  pip install requests -v  # 测试Pip源"
echo "  docker info | grep Mirrors  # 测试Docker源"
echo ""
echo "如配置有误,恢复命令:"
echo "  sudo cp /etc/apt/sources.list.bak.* /etc/apt/sources.list"

使用方法

bash 复制代码
chmod +x setup-sources.sh
sudo ./setup-sources.sh
# 预期输出:5 个 ✓ 全部通过

9.8 源配置验证清单

验证项 命令 预期结果
APT源 sudo apt update 无404错误,下载速度快
Pip源 pip3 install requests -v 从清华源下载
Docker源 `sudo docker info grep Mirrors`
实际下载 sudo docker pull arm64v8/ubuntu 成功,速度>500KB/s

十、开发环境配置:从系统到生产力

本章节的目标:把"能装上系统"升级为"能开发应用"。所有命令均在麒麟 V11 ARM64 虚拟机内执行。

10.1 安装Docker(ARM版)

登录麒麟系统后,打开终端:

bash 复制代码
# 更新源(配置清华源后速度会很快)
sudo apt update

# 安装Docker(麒麟V11源中已含 docker.io 包,基于 Moby 项目)
sudo apt install -y docker.io docker-compose
# 预期:无报错完成

# 验证
docker --version
# 预期输出:Docker version 24.0.7 或更高(麒麟V11 2603 自带版本)

# 启动并设置开机自启
sudo systemctl enable --now docker
sudo systemctl status docker
# 预期:Active: active (running)

为什么用 docker.io 而不是官方源? 麒麟源中的 docker.io 经过 ARM64 适配测试,与内核 cgroup 配合最佳;官方 Docker CE 源在 ARM 上偶有依赖冲突。教学/测试场景建议用 docker.io,生产环境需最新特性时再装 CE。

将当前用户加入 docker 组(免 sudo):

bash 复制代码
sudo usermod -aG docker $USER
# 需注销重新登录生效

10.2 安装Python开发环境

bash 复制代码
# 麒麟V11自带Python 3.x
python3 --version
# 预期输出:Python 3.10.12 或更高(V11 2603 默认版本)

# 安装pip和venv
sudo apt install -y python3-pip python3-venv
pip3 --version
# 预期输出:pip 22.0.2 或更高

# 配置清华源(见第九章9.3)

为什么用 venv 而不是 conda? venv 是 Python 标准库自带,无额外依赖,在 ARM 上兼容性最好;conda 在 ARM 上偶有包缺失。仅当需要多版本 Python 切换时才考虑 conda。

10.3 安装Node.js(如需前端开发)

bash 复制代码
# 麒麟源中的 Node.js 版本较旧,建议用 nvm 管理多版本
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# 预期:=> Close and reopen your terminal to start using nvm

# 重新打开终端后
nvm install 20
# 预期:Now using node v20.x.x

node --version
# 预期输出:v20.x.x

npm config set registry https://registry.npmmirror.com
# 预期:npm 配置淘宝镜像

为什么用 nvm 而不是 apt? 麒麟源中 nodejs 包通常滞后 2-3 个大版本(如 V11 源中为 v18,但实际开发常需 v20+)。nvm 可装多个版本并随时切换,且不污染系统目录。

10.4 开发环境验证清单

工具 验证命令 预期版本 用途
Docker docker --version ≥ 24.0 容器化部署
Python python3 --version ≥ 3.10 后端开发
Pip pip3 --version ≥ 22.0 包管理
Node.js node --version ≥ 20.0 前端开发
Git git --version ≥ 2.34 版本控制(麒麟自带)

十一、AI部署实战:在ARM上跑DeepSeek

11.1 安装Ollama(ARM版)

bash 复制代码
# 下载ARM版Ollama(官方一键脚本自动识别架构)
curl -fsSL https://ollama.com/install.sh | sh
# 预期:安装完成后显示 "Ollama is now running"

# 验证
ollama --version
# 预期输出:ollama version is 0.5.x(2026年7月版本)

⚠️ 风险提示 :Ollama 服务默认监听 127.0.0.1:11434,仅本机可访问。如需局域网调用,需配置 OLLAMA_HOST=0.0.0.0:11434,注意开放端口后的安全风险。

11.2 拉取DeepSeek模型

bash 复制代码
# 7B模型适合8GB内存(本文配置)
ollama pull deepseek-r1:7b
# 预期输出:success(约 4.7GB 下载)

# 如内存更大,可尝试14B
# ollama pull deepseek-r1:14b

11.3 验证模型运行

bash 复制代码
ollama run deepseek-r1:7b
>>> 请用一句话解释量子计算

预期输出(示例):

复制代码
量子计算利用量子叠加和纠缠原理,在特定问题上实现超越经典计算机的并行计算能力。

⚠️ 性能边界说明:TCG 模拟模式下,7B 模型推理速度约为 1-3 tokens/s(原生 ARM 约 20-40 tokens/s)。本文配置适合验证 AI 部署流程,不适合实际生产推理。生产推理请使用 ARM GPU 服务器。

11.4 安装MaxKB(可选)

bash 复制代码
# 使用阿里云镜像拉取MaxKB
sudo docker pull registry.cn-hangzhou.aliyuncs.com/1panel/maxkb:latest
# 预期:Status: Downloaded newer image...

# 运行
sudo docker run -d --name=maxkb \
  -p 8080:8080 \
  -v /opt/maxkb:/var/lib/postgresql/data \
  registry.cn-hangzhou.aliyuncs.com/1panel/maxkb:latest
# 预期:返回容器ID

# 验证运行状态
sudo docker ps | grep maxkb
# 预期:STATUS 列显示 Up xxx

访问 http://虚拟机IP:8080 即可使用。


十二、速查卡:一页纸回顾

12.1 命令速查

操作 命令
创建磁盘 qemu-img create -f qcow2 system.img 80G
启动安装 运行 install.bat
启动系统 运行 start.bat
SSH连接 ssh -p 2222 user@localhost
安装Docker sudo apt install docker.io
安装Ollama `curl -fsSL https://ollama.com/install.sh
拉取模型 ollama pull deepseek-r1:7b
备份APT源 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
配置Pip源 编辑 ~/.pip/pip.conf
配置Docker源 编辑 /etc/docker/daemon.json
一键配置所有源 sudo ./setup-sources.sh
验证APT源 sudo apt update
验证Pip源 pip3 install requests -v
验证Docker源 `sudo docker info

12.2 参数速查

参数 含义 建议值
-m 内存 8192
-cpu CPU模型 cortex-a72
-smp 核心数 8
-M 机器类型 virt
-bios UEFI固件 edk2-aarch64-code.fd
-net user 用户模式网络 hostfwd=tcp::2222-:22

12.3 源配置速查表

类型 配置文件路径 推荐源
APT /etc/apt/sources.list 清华/中科大
Pip ~/.pip/pip.conf 清华PyPI
Docker /etc/docker/daemon.json 中科大/网易/百度
Conda ~/.condarc 清华Conda

12.4 故障排查流程

复制代码
问题:无法启动
├── 检查QEMU路径是否有空格
├── 检查是否用了 qemu-system-aarch64.exe(而非x86_64)
├── 检查system.img是否存在
├── 检查 edk2-aarch64-code.fd 路径是否正确
└── 检查内存是否足够

问题:安装卡顿
├── 检查宿主机内存(建议16GB+)
├── 检查磁盘空间(建议100GB+)
└── 检查CPU占用(关闭其他程序)

问题:网络不通
├── 检查端口转发配置
├── 检查防火墙设置
└── 尝试重启网络服务

问题:CMD中文乱码
├── 脚本开头加 chcp 65001 >nul
└── 脚本文件保存为 UTF-8 with BOM 编码

问题:AI推理极慢
├── 确认是否在 TCG 模拟模式(x86_64宿主机)
├── 降低模型规模(用 1.5B 替代 7B)
└── 生产推理请迁移至 ARM 物理机

十三、总结与进阶

本文完成了从x86电脑到麒麟ARM虚拟机的完整搭建:

复制代码
x86电脑
├── QEMU安装(aarch64模拟器)
├── 虚拟磁盘创建
├── 麒麟V11系统安装
├── 性能优化(VirtIO + CPU选型)
├── 国产化源配置(APT/Pip/Docker)
├── 开发环境(Docker/Python)
└── AI部署(Ollama+DeepSeek+MaxKB)

核心结论(Q&A 速答)

  • Q:x86_64 电脑能运行 ARM 系统吗? A:能,用 QEMU 的 TCG 翻译,但性能约为原生 1/5~1/10。
  • Q:为什么必须用 qemu-system-aarch64.exe? A:只有它能翻译 ARM64 指令集。
  • Q:UEFI 固件用哪个? A:QEMU 自带的 edk2-aarch64-code.fd
  • Q:适合生产环境吗? A:不适合,仅适合功能验证与教学。

但这只是"工具范式"------能运行,但不一定好用。 Windows下纯软件模拟性能有限,适合功能验证;若需生产级性能,建议在ARM宿主机上使用KVM。


变更日志

版本 日期 变更内容
v1.0 2026-07-20 初版发布,基于 QEMU 11.0.50 + 麒麟 V11 2603 实测
v1.1 2026-07-20 新增 6.3 节"宿主机与虚拟机共享文件"(SCP/9p/镜像磁盘/HTTP 四方案对比,含选型建议与避坑)

⚠️ 时效性提示:本文基于 2026 年 7 月版本验证。若 QEMU 或麒麟发布大版本更新,启动参数、固件名、源路径可能变化,请以官方文档为准。


📥 配套资源

资源 说明
install.bat 一键安装脚本(含ISO挂载、防乱码)
start.bat 一键启动脚本(优化版)
setup-sources.sh 一键配置国产化源(APT/Pip/Docker)
docker-compose-kylin.yml MaxKB ARM版配置(国内镜像)
ollama-install.sh Ollama ARM安装脚本
pip.conf Pip清华源配置模板
daemon.json Docker镜像加速模板
速查卡.pdf 本文所有内容的一页纸总结

获取方式

  1. 点击右上角「关注」博主
  2. 私信发送「麒麟ARM」

关于作者

高校教务管理者 | AI应用工程师 | 国产信创实践者

专注:政务AI可计算框架、高校知识图谱、信创虚拟化、AI+HI协同范式


你的高校,开始信创替代了吗? 在评论区留下你的场景------比如"我们在用鲲鹏服务器"或"我们还在评估阶段"------我会持续整理读者的真实案例,后续出一篇《高校信创ARM环境的5种典型部署架构》。


💡 如果这篇文章帮你少踩了一个坑,点个赞就是对我最大的鼓励。 遇到任何问题,欢迎评论区交流,我会逐条回复。

相关推荐
XiaoLin laile1 天前
私有化视频会议:高合规行业的刚性底座
数据安全·信创·私有化视频会议·高合规行业·数字化协作
一个平凡而乐于分享的小比特8 天前
QEMU:一台“用软件造出来的万能计算机”
qemu
Randy Rhoads9 天前
DAMO-YOLO部署案例:国产统信UOS操作系统兼容性适配与驱动优化
目标检测·ai部署·damo-yolo·国产系统适配
nington0113 天前
宁盾数字身份域管方案入选上海信创典型案例 开创微软 AD 信创改造新范式
信创·微软ad·数字身份域管
zandy101115 天前
从可用到好用:2026年信创改造建设之邮件系统经验分享
经验分享·中间件·操作系统·信创·国产cpu
想你依然心痛19 天前
AtomCode 在 HarmonyOS 开发环境中的表现测评
跨平台·harmonyos·arkts·信创·国产系统
凉、介19 天前
KVM + QEMU 虚拟化
笔记·学习·嵌入式·arm·qemu·虚拟化·kvm
Theo·Chan1 个月前
更换 Kingbase V9 License 踩坑记
sql·信创·kingbase
牛奶咖啡131 个月前
KVM虚拟化与企业应用实践——给远端主机创建虚拟机
云原生·qemu·kvm·给远端主机创建虚拟机·创建uefi模式的虚拟机·安装openeulersp2·vnc与虚拟机环境搭建