【信创实战】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 安装完成)
- 六、启动系统:一键运行
-
- [6.1 创建启动脚本](#6.1 创建启动脚本)
- [6.2 验证启动成功](#6.2 验证启动成功)
- [6.3 宿主机与虚拟机共享文件(4 种方案对比)](#6.3 宿主机与虚拟机共享文件(4 种方案对比))
-
- 方案①:SCP/SFTP(推荐,零配置)
- [方案②:共享文件夹(virtfs / 9p,开发推荐)](#方案②:共享文件夹(virtfs / 9p,开发推荐))
- 方案③:镜像磁盘挂载(传大文件)
- [方案④:HTTP 临时服务(应急方案)](#方案④:HTTP 临时服务(应急方案))
- 文件共享方案选型建议
- 七、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 官方手册:https://www.qemu.org/docs/master/
- QEMU ARM 虚拟机说明:https://www.qemu.org/docs/master/system/arm/virt.html
- 银河麒麟官方文档:https://www.kylinos.cn/support/

三、QEMU安装:3分钟完成
3.1 安装步骤
双击下载的 .exe 安装包:
- 选择安装语言:English
- 选择安装路径:
D:\software\QEMU(再次强调:无空格) - 组件选择:保持默认(全选)
- 完成安装

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。
操作步骤:
-
看到启动菜单后,立即 用方向键选择:
Install Kylin-Desktop V11 -
按回车确认
5.3 图形化安装
后续步骤与物理机安装一致:
| 步骤 | 操作 | 建议 |
|---|---|---|
| 语言选择 | 中文 | 默认 |
| 时区选择 | 上海 | 默认 |
| 磁盘分区 | 自动分区 | 新手推荐 |
| 用户创建 | 设置用户名密码 | 记住密码 |
| 开始安装 | 等待15-30分钟 | 不要关闭窗口 |

5.4 安装完成
看到"安装成功,请重启"提示后:
- 关闭QEMU窗口
- 编辑
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 模块,无需额外安装;如
mount报unknown 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固件缺失或路径错误 → 无法启动
排错过程:
- 第一次尝试用网上教程的路径
D:\QEMU_Kylin\bios\QEMU_EFI.fd→ 报错Could not find ROM image - 检查发现
D:\QEMU_Kylin\bios\目录根本不存在 - 搜索 QEMU 安装目录,发现固件在
D:\software\QEMU\share\下 - 该目录有多个固件:
edk2-aarch64-code.fd、edk2-i386-code.fd等 - 因运行 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 保存,两者不匹配。
解决:
- 脚本开头加
chcp 65001 >nul(切换代码页为 UTF-8) - 脚本文件以 UTF-8 with BOM 编码保存(用记事本"另存为"选UTF-8即可)
避坑6:内存不足 → 安装卡顿
症状:安装进度极慢,或报内存错误
根因分析 :QEMU 的 -m 8192 参数会在宿主机上预分配 8GB 地址空间。若宿主机总内存仅 8GB 或已被其他程序占用大半,操作系统会频繁换页(swap),导致虚拟机每秒只能处理几条指令,安装可能从 20 分钟拖到数小时。
排查步骤:
- 宿主机任务管理器 → 性能 → 内存,查看"已提交"是否接近上限
- 安装时观察宿主机磁盘灯是否狂闪(swap 抖动)
- 若已卡住,不要强行关闭,先在任务管理器结束
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 |
中 | 通用 |
排错过程:
- 第一次用
if=ide挂载 → 麒麟安装程序识别到磁盘但写入极慢 - 改用
virtio-blk-device→ 识别正常,速度提升明显 - 必须用
-drive if=none,...,id=hd0+-device virtio-blk-device,drive=hd0两段式挂载
解决 :使用 qcow2 格式,且通过 virtio-blk-device 设备挂载(本文脚本已配置正确)。
避坑8:网络不通 → 无法SSH
症状 :ssh -p 2222 user@localhost 连接失败
排查步骤:
- 宿主机执行
netstat -ano | findstr :2222确认端口转发已生效 - 虚拟机内执行
sudo systemctl status sshd确认 sshd 已启动 - 虚拟机内执行
ip addr确认有10.0.2.15网段地址
解决 :检查启动命令中的 -net user,hostfwd=tcp::2222-:22 是否完整;确认虚拟机内 sshd 服务已启动。
避坑9:显示卡死 → SDL兼容问题
症状:界面冻结,鼠标键盘无响应,但 QEMU 进程仍在运行
根因分析 :默认的 -device usb-mouse 使用相对坐标,与 QEMU 的 SDL 显示后端配合时,鼠标进入窗口后会被"抓取"且无法释放,造成"卡死"假象。实际是鼠标事件被锁定在窗口内,键盘焦点也未正确切换。
排查步骤:
- 按
Ctrl+Alt+G尝试释放 grab ------ 若鼠标恢复,说明是抓取问题 - 若
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并锁定版本号,避免不同环境间版本漂移导致问题:
bashpip 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 |
本文所有内容的一页纸总结 |
获取方式:
- 点击右上角「关注」博主
- 私信发送「麒麟ARM」
关于作者
高校教务管理者 | AI应用工程师 | 国产信创实践者
专注:政务AI可计算框架、高校知识图谱、信创虚拟化、AI+HI协同范式
你的高校,开始信创替代了吗? 在评论区留下你的场景------比如"我们在用鲲鹏服务器"或"我们还在评估阶段"------我会持续整理读者的真实案例,后续出一篇《高校信创ARM环境的5种典型部署架构》。
💡 如果这篇文章帮你少踩了一个坑,点个赞就是对我最大的鼓励。 遇到任何问题,欢迎评论区交流,我会逐条回复。
