信创环境模拟:X86架构下部署搭建aarch64的ARM虚拟机

在真实系统为x86架构下,搭建arm64的虚拟开发环境。在该环境中直接下载打包项目依赖的python运行环境。

前言

随着国家信创环境的要求普及,基本和国家沾边的政企事业单位都换成了信创环境,即ARM64的cpu服务器,而且该类服务器是不连接公网的情况。而很多一般企业,开发者的环境基本是X86架构下的Windows。

本教程是在遇到python环境微服务需要部署到信创环境,依赖的很多包包括python自身如statsmodels,需对应arm架构的资源,才可导出到目标服务器运行。

部署准备

  • 作者的环境是:Windows10 X86处理器架构的电脑。(其他环境类似,qemu下载对应版本照着变通下即可)
  • QEMU模拟器:下载地址
  • UEFI文件:下载地址
  • 银河麒麟V10镜像(arm64系统镜像): 请自行下载,或通过本人打包的本项目全部资源下载。我的资源镜像为Kylin-Server-10-SP2-aarch64-Release-Build09-20210524.iso

资源打包下载地址

  1. 链接:csdn文件下载(多个分卷,共5卷,可进入作者空间下载)
  2. 压缩包预览

部署流程

1. 安装qemu软件

双击qemu安装文件进行安装 ,下一步下一步,选择指定路径即可。默认会安装到 C:\Program Files\qemu下.

2.命令行生成虚拟硬盘

  1. 进入cmd命令,win+r或者其他方式,进入到CMD命令窗口中。

  2. cmd进入到qemu安装目录:cd C:\Program Files\qemu

  3. 执行以下命令创建40G硬盘到指定目录,我这里是D:\VM\arm64\文件夹下。

    cmd 复制代码
    qemu-img create -f qcow2 D:\VM\arm64\kylindisk.qcow2 40G

4.生成的虚拟文件如下(框出的文件,其他文件是下载拷贝进去的,下一步有说明):

安装arm64位的系统

  1. 将下载好的fd引导文件和iso镜像文件,拷贝到生成虚拟磁盘的目录:D:\VM\arm64\
  2. 同样,使用cmd命令进入到qemu安装目录,cd C:\Program Files\qemu。
  3. 执行安装镜像安装命令(可以按需调整内存、端口等),里面有几个地址就是指向我们准备的虚拟硬盘、引导文件、镜像文件的。
amd 复制代码
qemu-system-aarch64.exe -m 8192 -cpu cortex-a72 -smp 8,sockets=4,cores=2 -M virt -bios D:\VM\arm64\QEMU_EFI.fd -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file=D:\vm\arm64\kylindisk.qcow2,id=hd0 -device virtio-blk-device,drive=hd0 -drive if=none,file=D:\VM\arm64\Kylin-Server-10-SP2-aarch64-Release-Build09-20210524.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom  -net nic -net user,hostfwd=tcp::2222-:22

截图如下:

  1. 命令解释说明

    这条命令是用于在QEMU中启动一个ARM架构的虚拟机。

    基本配置

    • qemu-system-aarch64.exe: 这是 QEMU 模拟器的主程序,用于模拟 ARM64 架构的系统。

    • -m 8192: 分配 8192 MB(即 8 GB)的内存给虚拟机。

    • -cpu cortex-a72: 指定虚拟机的 CPU 类型为 Cortex-A72。

    • -smp 8,sockets=4,cores=2: 配置虚拟机的 SMP(对称多处理)设置:

      • 8: 总共 8 个 CPU 线程。

      • sockets=4: 4 个 CPU 插槽。

      • cores=2: 每个插槽有 2 个核心。

    • -M virt: 使用 virt 机器类型,这是 QEMU 为 ARM64 架构提供的虚拟机类型。

    BIOS 和启动设备

    • -bios D:\VM\arm64\QEMU_EFI.fd: 指定 EFI 固件文件,用于引导虚拟机。

    设备配置

    • -device VGA: 添加一个 VGA 设备,用于图形输出。

    • -device nec-usb-xhci: 添加一个 NEC USB 3.0 控制器设备。

    • -device usb-mouse: 添加一个 USB 鼠标设备。

    • -device usb-kbd: 添加一个 USB 键盘设备。

    存储设备

    • -drive if=none,file=D:\vm\arm64\kylindisk.qcow2,id=hd0: 配置一个虚拟硬盘,文件为 kylindisk.qcow2,ID 为 hd0,但不直接连接到接口。

    • -device virtio-blk-device,drive=hd0: 将之前配置的虚拟硬盘 hd0 连接到 virtio-blk 设备。

    • -drive if=none,file=D:\VM\arm64\Kylin-Server-10-SP2-aarch64-Release-Build09-20210524.iso,id=cdrom,media=cdrom: 配置一个虚拟光驱,文件为 Kylin-Server-10-SP2-aarch64-Release-Build09-20210524.iso,ID 为 cdrom,媒体类型为 cdrom。

    • -device virtio-scsi-device: 添加一个 virtio-scsi 控制器设备。

    • -device scsi-cd,drive=cdrom: 将之前配置的虚拟光驱 cdrom 连接到 scsi-cd 设备。

    网络配置

    • -net nic: 添加一个网络接口卡。

    • -net user,hostfwd=tcp::2222-:22: 使用用户模式网络,并将主机端口 2222 转发到虚拟机端口 22(SSH 端口)。

执行命令后会跳到可视化界面进行系统安装

  1. 标准的linux系统安装引导界面,按思路安装即可。中间要设置下root密码和点选下虚拟硬盘即可。后面就是漫长等待,一路向下8G内存下大概30分钟。截图如下:



  1. 注意事项
    • 安装设置时要注意,常见的配置,如时区、语言、虚拟硬盘、root密码等。
    • 安装界面鼠标无法控制,可以按上面的提示释放鼠标,并选择最大化窗口,即可正常操作。
    • 有感叹号的地方都要选择或设置,比如下图许可。
  2. 安装完成截图如下(默认账户是root,密码是你自己设置的):

系统的使用

  1. 安装好并关闭后,我们需要再次启动的话(无需指定iso文件启动)
    使用cmd命令行进入到qemu所在位置,执行以下命令:
amd 复制代码
qemu-system-aarch64 -m 8192 -cpu cortex-a72 -smp 8,sockets=4,cores=2 -M virt -bios D:\VM\arm64\QEMU_EFI.fd -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file=D:\vm\arm64\kylindisk.qcow2,id=hd0 -device virtio-blk-device,drive=hd0 -net nic -net user,hostfwd=tcp::2222-:22 
  1. 我们已经做过端口映射了,直接通过宿主机ip:2222,通过ssh可以链接到服务器。
  2. 验证系统是否为arm64的架构。
  3. 如果要新增其他外部端口访问,请在启动命令行中添加端口即可,例如添加8888端口的宿主机访问。...hostfwd=tcp::2222-:22 ,hostfwd=tcp::8888-:8888 ,用逗号间隔即可。
    另外,光开放外部端口访问可能还不行,还需要关闭虚拟机的防火墙,linux命令如下:
bash 复制代码
# 永久关闭防火墙
systemctl disable firewalld
# 查询防火墙状态   
systemctl status firewalld
相关推荐
zkmall35 分钟前
企业电商解决方案哪家好?ZKmall模块商城全渠道支持 + 定制化服务更省心
大数据·运维·重构·架构·开源
美狐美颜sdk5 小时前
跨平台直播美颜SDK集成实录:Android/iOS如何适配贴纸功能
android·人工智能·ios·架构·音视频·美颜sdk·第三方美颜sdk
小雷FansUnion7 小时前
深入理解MCP架构:智能服务编排、上下文管理与动态路由实战
人工智能·架构·大模型·mcp
慌糖8 小时前
微服务介绍
微服务·云原生·架构
June bug9 小时前
【软考中级·软件评测师】下午题·面向对象测试之架构考点全析:分层、分布式、微内核与事件驱动
经验分享·分布式·职场和发展·架构·学习方法·测试·软考
沉在嵌入式的鱼10 小时前
使用nomachine远程连接ARM设备桌面
arm开发·rk3588·远程连接·nomachine
森焱森11 小时前
无人机三轴稳定控制(2)____根据目标俯仰角,实现俯仰稳定化控制,计算出升降舵输出
c语言·单片机·算法·架构·无人机
go546315846513 小时前
修改Spatial-MLLM项目,使其专注于无人机航拍视频的空间理解
人工智能·算法·机器学习·架构·音视频·无人机
凌辰揽月14 小时前
8分钟讲完 Tomcat架构及工作原理
java·架构·tomcat
绝无仅有15 小时前
对接三方SDK开发过程中的问题排查与解决
后端·面试·架构