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

news2024/11/29 6:43:35

在真实系统为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\文件夹下。
    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. 执行安装镜像安装命令(可以按需调整内存、端口等),里面有几个地址就是指向我们准备的虚拟硬盘、引导文件、镜像文件的。
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所在位置,执行以下命令:
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命令如下:
# 永久关闭防火墙
systemctl disable firewalld
# 查询防火墙状态   
systemctl status firewalld

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2227096.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Cesium基础-(Entity)-(Box)

** 里边包含Vue、React框架代码详细步骤、以及代码详细解释 ** 3、Box 盒子 以下是 BoxGeometry 类的属性、方法和静态方法,以表格形式展示: 属性 属性名类型默认值描述minimumCartesian3盒子的最小 x, y, 和 z 坐标。maximumCartesian3盒子的最大 x, y, 和 z 坐标。vertex…

四个模型(CV、CA、左转CT、右转CT)的交互式多模型系统,介绍与MATLAB例程

文章目录 引言一、模型概述1.1 连续变量模型(CV)1.2 离散变量模型(CA)1.3 左转控制器(CT)1.4 右转控制器(CT) 二、交互式多模型系统2.1 系统架构 三、MATLAB实现3.1 MATLAB代码3.2 代…

软硬链接_动静态库

软硬链接 软链接创建 硬链接创建 软链接是独立文件(独立inode号) 硬链接不是独立文件(inode和目标相同) 如何理解软硬链接 软链接有独立inode,软链接内容上,保存的是文件路径 硬链接不是独立文件&#xf…

labelimg使用教程

快捷键 W:调出标注的十字架,开始标注 A:切换到上一张图片 D:切换到下一张图片 del:删除标注的矩形框 CtrlS:保存标注好的标签 Ctrl鼠标滚轮:按住Ctrl,然后滚动鼠标滚轮,…

Java | Leetcode Java题解之第517题超级洗衣机

题目: 题解: class Solution {public int findMinMoves(int[] machines) {int tot Arrays.stream(machines).sum();int n machines.length;if (tot % n ! 0) {return -1;}int avg tot / n;int ans 0, sum 0;for (int num : machines) {num - avg;s…

鸿蒙UI系统组件18——模态交互框(ModelDialog)

1、概 述 模态(Modal)指的是UI组件或视图的一种状态。在模态组件消失前,用户只能对处于模态的组件或视图进行响应,不能操作其他非模态的组件或视图。 ArkUI中可通过使用AlertDialog、CustomDialog、ActionSheet、Popup、Menu、C…

力扣题86~90

题86(中等): python代码 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def partition(self, head: Optional[Li…

JavaEE初阶---网络原理/UDP服务器客户端程序

文章目录 1.网络初识2.网络编程2.1TCP/UDP区别介绍2.2UDP的socket api使用2.3UDP协议里面的服务器客户端程序 1.网络初识 网络和计算机类似:都是属于军用》民用; 网络诞生于美苏争霸时期,当时就感觉核战争一触即发,形式非常严峻…

.NET 8 中的 Mini WebApi

介绍 .NET 8 中的极简 API 隆重登场,重新定义了我们构建 Web 服务的方式。如果您想知道极简 API 的工作原理以及它们如何简化您的开发流程,让我们通过一些引人入胜的示例来深入了解一下。 .NET 极简主义的诞生 想想我们曾经不得不为一个简单的 Web 服务…

在 Kakarot ZkEVM 上使用 Starknet Scaffold 构建应用

Starknet 和 EVM 我们所知的智能合约世界一直围绕着以太坊虚拟机(EVM),其主要语言是 Solidity。 尽管 Starknet 通过 STARKs 为以太坊开辟了新的可能性,但其缺点是它有一个不同的虚拟机 (CairoVM),这要求开发者学习 …

多态的体现

多态:当不同的对象去完成某个行为时会产生出不同的状态多态体现: 在代码运行时,当传递不同类对象时,会调用对应类中的方法。 public class Animal {String name;int age;public Animal(String name, int age){this.name name;t…

docker安装、设置非sudo执行、卸载

安装 sudo snap install docker 设置docker非sudo执行 sudo groupadd docker sudo usermod -aG docker $USER newgrp docker sudo chown root:docker /var/run/docker.sock 卸载docker 1.删除docker及安装时自动安装的所有包 apt-get autoremove docker docker-ce docker-…

Java之多线程的实现(创建)(3种实现方式)(面试高频)

目录 一、多线程的3种实现方式 (1)继承Thread类。 (2)实现Runnable接口。(void run():该方法无返回值、无法抛出异常) (3)实现Callable接口。(V call() throw…

Linux补基础之:网络配置

目录 一、检查主机与虚拟机是否能正常通信 二、网络的连接模式 桥接模式 流程 特点 NAT模式 流程 特点 仅主机 流程 特点 三、修改静态IP 四、可能遇到的问题 防火墙 DNS 五、主机名更改 六、登录服务器 实际的大数据管理中,会有由很多服务器构成的…

Android 原生开发与Harmony原生开发浅析

Android系统 基于Linux ,架构如下 底层 (Linux )> Native ( C层) > FrameWork层 (SystemService) > 系统应用 (闹钟/日历等) 从Android发版1.0开始到现在15,经历了大大小小的变革 从Android6.0以下是个分水岭,6.0之前权限都是直接卸载Manifest中配置 6.0开始 则分普…

初识WebGL

思路&#xff1a; 构建<canvas>画布节点&#xff0c;获取其的实例。使用getWebGLContext() 拿到画布上下文。拿到上下文用clearColor() 设置背景颜色。最后清空canvas画布,是为了清除颜色缓冲区。 html结构&#xff1a; <!DOCTYPE html> <html lang"en&…

w外链如何跳转微信小程序

要创建外链跳转微信小程序&#xff0c;主要有以下几种方法&#xff1a; 使用第三方工具生成跳转链接&#xff1a; 注册并登录第三方外链平台&#xff1a;例如 “W外链” 等工具。前往该平台的官方网站&#xff0c;使用手机号、邮箱等方式进行注册并登录账号。选择创建小程序外…

【华为HCIP实战课程二十一】OSPF区域间汇总配置详解,网络工程师

一、OSPF汇总和默认路由 1、大规模的OSPF网络配置路由汇总,减小路由表的规模。 2、路由汇总讲多条连续的IP前缀汇总成一条路由前缀。 3、可以避免网络中的路由震荡,提高网络的稳定性。 4、ABR/ASBR完成路由汇总。 [R4-ospf-1-area-0.0.0.0]abr-summary 11.1.0.0 255.255.…

在C#中使用指针

C#向开发人员隐藏了大部分基本内存管理操作&#xff0c;因为它使用了垃圾回收器和引用。但是&#xff0c;有时候我们也需要直接访问内存&#xff0c;例如&#xff1a;进行平台调用&#xff0c;性能优化等等。 .Net平台定义了两种主要数据类型&#xff1a;值类型和引用类型&…

前端零基础入门到上班:【Day2】开发环境VSCode安装

VSCode 安装教程&#xff1a;图文保姆教程 引言 在前端开发中&#xff0c;选择合适的代码编辑器是提高工作效率的重要一步。Visual Studio Code&#xff08;简称 VSCode&#xff09;作为一款强大的开源编辑器&#xff0c;因其简洁易用、功能强大、扩展性好而广受开发者喜爱。…