网站首页 > 技术文章 正文
背景
最近俄乌战争打的很火热,很多技术公司开始对俄罗斯进行制裁,包括SAP、Oracle等。我们国家早几年就已经开始推广信息技术的国产化,算是未雨绸缪了。
目前某个项目需要实现基础软件全部国产化,其中操作系统指定银河麒麟v4,CPU使用飞腾处理器。我本地没有这个国产的处理器,但飞腾是基于ARMv8架构的64位处理器,所以理论上基于这个CPU架构的硬件应该都可以。
首先想到的是树莓派,这个开发板集成的ARM CPU,不过要看下是否为ARMv8架构,如果正好有的话可以试一试。不过这也有点重了,能模拟CPU就好了,最终找到了QEMU这个工具,可以在Windows上运行。
这篇文章就在Windows 10上创建一个模拟ARM64平台的虚拟机来安装银河麒麟操作系统。
环境
- 主机操作系统:Windows 10 专业版
- 主机CPU平台:x86-64
- 虚拟机软件:QEMU
下载
银河麒麟v4 ARM版下载地址:「Inspur」- NF2180M3 (ARMv8) – K4NZ BLOG
QEMU下载地址:Download QEMU – QEMU
QEMU的UEFI固件:https://releases.linaro.org/components/kernel/uefi-linaro/latest/release/qemu64/QEMU_EFI.fd
虚拟网卡工具:https://pan.baidu.com/s/1sFSH8AOnLb-I3JWLHV-3Ow?pwd=309c
安装
1、安装QEMU
执行安装文件,一路安装即可。我这里都是默认配置,没有更改。
2、配置虚拟机网络
这一步是在主机创建一个Tap网卡给虚拟机使用,使用【下载】步骤中的 虚拟网卡工具。
这个工具是从某个VPN软件提取出来的,创建虚拟网卡的命令:
tapctl create --name tap0
通过这个命令可以删除:
tapctl delete tap0
注意:tap0是虚拟网卡的名字,可以按照自己的习惯命名,不重复就行了。
然后还要共享主机网络给这个虚拟网卡使用,参照下图:

3、创建虚拟机
这个工具需要使用命令,这里编写一个批处理文件:create.bat,内容如下:
"C:\Program Files\qemu\qemu-img.exe" create -f qcow2 D:\qemu\kylin-v4-arm64\kylin-v4-arm64.qcow2 50G
"C:\Program Files\qemu\qemu-system-aarch64.exe" ^
-m 2048 ^
-cpu cortex-a53 ^
-smp 4,cores=4,threads=1,sockets=1 ^
-M virt ^
-bios D:\qemu\kylin-v4-arm64\QEMU_EFI.fd ^
-device VGA ^
-device nec-usb-xhci ^
-device usb-mouse ^
-device usb-kbd ^
-cdrom D:\qemu\kylin-4.0.2-server-sp2-arm64.iso ^
-net nic,model=virtio ^
-net tap,ifname=tap0 ^
-boot d D:\qemu\kylin-v4-arm64\kylin-v4-arm64.qcow2
简单解读下,里边执行了两个命令:
第一行是创建一个镜像。镜像文件带路径的名字是:D:\qemu\kylin-v4-arm64\kylin-v4-arm64.qcow2,大小是50G。路径和名字都是可以按自己的需求定义的。
第二行是在第一行创建的镜像中创建虚拟机。
- -m 指定内存大小,单位M,2048就是2G。
- -cpu 指定CPU型号,cortex-a53 是一款ARMv8架构的处理器。
- -smp 依次为:逻辑处理器的个数、每个CPU的核心数、每个CPU的线程数、CPU的个数。
- -bios UEFI固件的路径,前文【下载】的步骤中提到过。
- -cdrom 光盘镜像文件的地址,这里就是操作系统安装镜像的路径。
- -boot 当前虚拟机镜像的文件路径。
- -net tap 指定后端网络类型是TAP,ifname指定TAP网卡的名字是tap0。
4、安装操作系统
以管理员身份运行上文中的批处理程序 create.bat,然后会启动QEMU的窗口,并开启操作系统的安装。
这里没什么好说的,按照提示一步步设置就行了。为了方便操作,建议安装图形化界面。

安装过程比较慢,请耐心等待。
5、启动操作系统
安装完毕后,重新启动时需要移除光盘镜像,否则还会进入安装界面。
退出当前的的QEMU窗口,重新创建一个批处理文件 start.bat:
"C:\Program Files\qemu\qemu-system-aarch64.exe" ^
-m 2048 ^
-cpu cortex-a53 ^
-smp 4,cores=4,threads=1,sockets=1 ^
-M virt ^
-bios D:\qemu\kylin-v4-arm64\QEMU_EFI.fd ^
-device VGA ^
-device nec-usb-xhci ^
-device usb-mouse ^
-device usb-kbd ^
-net nic,model=virtio ^
-net tap,ifname=tap0 ^
-boot d D:\qemu\kylin-v4-arm64\kylin-v4-arm64.qcow2
这些参数和上边创建虚拟机的参数差不多,这里就不多介绍了。
以管理员身份运行 start.bat ,启动后,查看电脑属性,其中系统内核中提到的的aarch64就是ARMv8架构支持的。

6、更改软件包源
银河麒麟v4的默认软件包源是光盘,这个可能不好搞。不过这个操作系统是基于ubuntu 16.04的,所以ubuntu 16.04的包源应该可以,但是还要注意针对ARM架构的包源和x64的不太一样,这里给出一个清华大学的镜像包源,国内访问比较快。
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
7、重用镜像
对于安装好系统的镜像,可以通过复制镜像文件的方式做个备份。
如果不小心把系统搞坏了,可以用备份的镜像重新启动一个干净的环境,避免漫长的系统安装过程。
也可以通过复制多个镜像文件,启动多个虚拟机,不过网络那块得想想怎么搞,这里就懒得去折腾了。
以上就是本文的主要内容,如有错漏欢迎指正。
- 上一篇: Python中字符串前的u、r、b、f分别代表的含义
- 下一篇: python ROS 定时发送数据
猜你喜欢
- 2024-12-17 python线程安全:使用Rlock实现可重入锁
- 2024-12-17 python打开内置函数:模式a,a +,w,w +和r +之间的区别?
- 2024-12-17 python ROS 定时发送数据
- 2024-12-17 Python中字符串前的u、r、b、f分别代表的含义
- 2024-12-17 Python 和 R 数据分析/挖掘工具互查
- 05-25Python 3.14 t-string 要来了,它与 f-string 有何不同?
- 05-25Python基础元素语法总结
- 05-25Python中的变量是什么东西?
- 05-25新手常见的python报错及解决方案
- 05-2511-Python变量
- 05-2510个每个人都是需要知道Python问题
- 05-25Python编程:轻松掌握函数定义、类型及其参数传递方式
- 05-25Python基础语法
- 257℃Python短文,Python中的嵌套条件语句(六)
- 257℃python笔记:for循环嵌套。end=""的作用,图形打印
- 256℃PythonNet:实现Python与.Net代码相互调用!
- 251℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 106℃原来2025是完美的平方年,一起探索六种平方的算吧
- 91℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 81℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)