当前位置: 首页 > news >正文

使用 MSYS2 qemu 尝鲜Arm64架构国产Linux系统

近期,我的师弟咨询我关于Arm64架构的国产CPU+国产OS开发工具链问题。他们公司因为接手了一个国企的单子,需要在这类环境下开发程序。说实在的我也没有用过这个平台,但是基于常识,推测只要基于C++和Qt,应该问题不大。

1. 用MSYS2 Qemu在 windows 下模拟ARM

我没有国产Arm64架构的CPU计算机,又不想因为这个托请,自己去买一台,只能使用跨架构的模拟器 qemu 了。第一反应就是用pacman -Ss 查了一下,果然,qemu在msys2就有。

pacman -S mingw-w64-ucrt-x86_64-qemu

而后,去某国产系统官网下载iso安装包。这里感慨一下,这个国产系统为了适配各类硬件生产商,在Debain结构的官网镜像里,可以找到近百个不同的文件夹。笔者先是下载标准版桌面系统,发现包并不一致,g++都无法安装。后来,从众多的OEM版本中,找到了朋友使用的品牌的OEM镜像,才正确安装了g++。这里假设下载iso为 install.iso,则在msys2 ucrt64环境下,创建硬盘:

qemu-img create disk.qcow2 -f qcow2 128G

开始安装前,还要在下面的网址下载 UEFI的镜像:

wget https://releases.linaro.org/components/kernel/uefi-linaro/16.02/release/qemu64/QEMU_EFI.fd

随后启动安装:

qemu-system-aarch64.exe -m 16384 
-cpu cortex-a76 -smp 2,sockets=2,cores=1 -M virt 
-bios QEMU_EFI.fd -device VGA -device nec-usb-xhci 
-device usb-mouse -device usb-kbd -drive if=none,file=disk.qcow2,id=hd0 
-device virtio-blk-device,drive=hd0 
-drive if=none,file=install.iso,id=cdrom,media=cdrom 
-device virtio-scsi-device -device scsi-cd,drive=cdrom -audio driver=sdl,model=ac97

这里要有心理准备,安装非常慢,这是因为windows下模拟arm,机器码都是要经过转译,快不了。

2. 在系统中安装需要的包

一旦安装完成,则可以随时使用命令启动:

qemu-system-aarch64.exe -m 16384-cpu cortex-a76 -smp 4,sockets=4,cores=1 -M virt-bios QEMU_EFI.fd  -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file=disk.qcow2,id=hd0 -device virtio-blk-device,drive=hd0 -device virtio-scsi-device  -audio driver=sdl,model=ac97-device virtio-gpu-pci,xres=1920,yres=1080

启动后,使用apt更新并安装软件。

sudo apt install 
libqwt-qt5-dev qt5keychain-dev libqt5x11extras5-dev 
libqt5webview5-dev libqt5websockets5-dev 
libqt5webengine5 libqt5webchannel5-dev 
libqt5virtualkeyboard5-dev libqt5texttospeech5-dev 
libqt5svg5-dev libqt5sql5-tds libqt5sql5-psql 
libqt5sql5-odbc libqt5sql5-mysql libqt5sql5-ibase 
libqt5serialport5-dev libqt5serialbus5-plugins 
libqt5serialbus5-dev libqt5sensors5-dev libqt5remoteobjects5-dev 
libqt5positioning5-plugins libqt5networkauth5-dev 
libqt5location5-plugins libqt5gstreamer-dev libqt5gamepad5-dev 
libqt5datavisualization5-dev libqt5bluetooth5 
libqt5-ukui-style-dev qt5-style-plugins 
qtmultimedia5-examples  qtwebengine5-examples 
qtbase5-examples qtcharts5-examples qtdatavisualization5-examples 
qtdeclarative5-dev qtlocation5-dev qtmultimedia5-dev 
qtmultimedia5-examples qtquickcontrols2-5-dev 
qtpositioning5-dev qttools5-dev qtwebengine5-dev nano geany mc

国产系统的包基本就是debain的包,但是软件版本比较旧,比如Qt还停留在 5.12 版本。
software

3. 测试情况

由于qemu实在太慢了,下面的测试主要是查看包的完整性,启动软件玩一玩,没有做深度的测试。

(1)软件无线电

GNU-Radio\ GQRX\ Soapy 的包是完整的。libuhd为 3.15版本。

(2)科学计算

Octave 的 pkg 是完整的。Python的支持是完整的。

(3)数据库

PostgreSQL可用。

(4)桌面编程

Qt Creator,Qt 5.12可用。

(5)服务器

apache2可用

通过包情况分析,该国产系统应该是基于debain 进行消化吸收和适配的。但是软件的版本比较老,落后debain3年左右。内核是5.4版的。国产芯片、国产OS ,或者说更合适的说法是自主可控OS,经历了二十年的发展(还记得红旗、永中吗?)着实不易。作为Native C++/Qt开发者,国产平台的完整性还是可以的,就是版本迭代不够快。处于后发的状态,生态的建立是非常难的。更何况我们还没有测试GPU。新年之际,衷心祝福国产自主可控芯片和基础软件能够披荆斩棘,茁壮成长。

相关文章:

使用 MSYS2 qemu 尝鲜Arm64架构国产Linux系统

近期,我的师弟咨询我关于Arm64架构的国产CPU国产OS开发工具链问题。他们公司因为接手了一个国企的单子,需要在这类环境下开发程序。说实在的我也没有用过这个平台,但是基于常识,推测只要基于C和Qt,应该问题不大。 1. …...

python Flask-Redis 连接远程redis

当使用Flask-Redis连接远程Redis时,首先需要安装Flask-Redis库。可以通过以下命令进行安装: pip install Flask-Redis然后,你可以使用以下示例代码连接远程Redis: from flask import Flask from flask_redis import FlaskRedisa…...

在Windows系统中本地部署属于自己的大语言模型(Ollama + open-webui + deepseek-r1)

文章目录 1 在Windows系统中安装Ollama,并成功启动;2 非docker方式安装open-webui3下载并部署模型deepseek-r1 Ollama Ollama 是一个命令行工具,用于管理和运行机器学习模型。它简化了模型的下载与部署,支持跨平台使用&#xff0c…...

Haproxy入门学习二

一、Haproxy的算法 1.haproxy通过固定参数balance指明对后端服务器的调度算法,其中balance参数可以配置在listen或backend选项中 2.haproxy的调度算法分为静态和动态调度算法,其中有些算法可以根据参数在静态和动态算法中相互转换 3.静态算法&#xff1a…...

Git图形化工具【lazygit】

简要介绍一下偶然发现的Git图形化工具——「lazygit」 概述 Lazygit 是一个用 Go 语言编写的 Git 命令行界面(TUI)工具,它让 Git 操作变得更加直观和高效。 Github地址:https://github.com/jesseduffield/lazygit 主要特点 主要…...

node 爬虫开发内存处理 zp_stoken 作为案例分析

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 前言 主要说3种我们补环境过后如果用…...

基于Langchain-Chatchat + ChatGLM 本地部署知识库

一、相关环境 参考链接: Github:https://github.com/chatchat-space/Langchain-Chatchat Langchain-chatchat版本:v0.3.1 安装环境:Ubuntu:22.04,CUDA:12.1 二、搭建过程 2.1 环境配置 2.1.1 创建chatchat虚拟环…...

【C语言】main函数解析

一、前言 在学习编程的过程中,我们很早就接触到了main函数。在Linux系统中,当你运行一个可执行文件(例如 ./a.out)时,如果需要传入参数,就需要了解main函数的用法。本文将详细解析main函数的参数&#xff…...

【QT】- QUdpSocket

QUdpSocket 是 Qt 自带的一个类,属于 Qt 网络模块,用于进行 UDP(用户数据报协议) 通信。它提供了简便的接口来发送和接收 UDP 数据报(datagrams)。 UDP 是一种无连接的协议,适用于那些不需要确…...

性能测试丨分布式性能监控系统 SkyWalking

软件测试领域,分布式系统的复杂性不断增加,如何保证应用程序的高可用性与高性能,这是每一个软件测试工程师所面临的重大挑战。幸运的是,现在有了一些强大的工具来帮助我们应对这些挑战,其中之一便是Apache SkyWalking。…...

SQL GROUP BY 详解

SQL GROUP BY 详解 引言 在数据库查询中,GROUP BY 子句是一个非常有用的工具,它允许我们对查询结果进行分组,并基于这些分组进行聚合计算。本文将详细介绍 GROUP BY 的用法、注意事项以及在实际应用中的场景。 什么是 GROUP BY? GROUP BY 子句用于对查询结果进行分组。…...

C语言中string.h头文件功能介绍

在C语言的世界里,string.h头文件提供了许多用于处理字符串和内存操作的函数。今天,我们就来深入探讨string.h头文件的功能、使用注意事项以及一些拓展应用。 一、功能介绍 string.h头文件定义了一系列用于操作字符串和内存的函数。这些函数可以分为几个…...

从规则到神经网络:机器翻译技术的演进与未来展望

从规则到神经网络:机器翻译技术的演进与未来展望 引言 还记得早些年用翻译软件翻译一句简单的英文句子,却发现翻译结果让人啼笑皆非的日子吗?从“我喜欢吃苹果”被翻译成“我喜欢吃苹果电脑”,到今天的神经网络机器翻译(Neural Machine Translation, NMT)能够生成语义流…...

园区管理智能化创新引领企业效能提升与风险控制新趋势

内容概要 在现代园区管理中,智能化创新正成为越来越多企业优化效能和控制风险的重要途径。通过引入先进的技术手段,企业能够更高效地管理资源,并实现全面的风险控制。 首先,园区管理系统的基本概念和发展现状让我们看到科技与管…...

Python爬虫之——Cookie存储器

目录 专栏导读1、背景介绍2、库的安装3、核心代码4、完整代码总结 专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 &…...

第21节课:前端构建工具—自动化与模块化的利器

目录 前端构建工具的重要性任务运行器:Gulp与GruntGulpGulp的工作原理安装与使用Gulp GruntGrunt的工作原理安装与使用Grunt 模块打包器:WebpackWebpack简介Webpack的工作原理安装与使用Webpack 实践:使用Gulp和Webpack构建前端项目示例&…...

企业SaaS(软件即服务)行业中AARRR

获取(Acquisition) 通过各种渠道吸引用户。 社交媒体广告:Facebook、Instagram等平台的广告。 内容营销:通过博客、视频等吸引用户。 SEO优化:提高网站在搜索引擎中的排名。 合作营销:与其他企业合作进行交…...

为什么要学习rust

内存管理:对于我来说,我就喜欢它的内存管理。我做了一个webapi,取100万行数据,导出到xlsx,再把这个xlsx文件发送给前端。分别用了java、c#、go和rust进行了相同的操作。只有rust做到了,启动时8MB内存&#…...

观察者模式和订阅发布模式的关系

有人把观察者模式等同于发布订阅模式,也有人认为这两种模式存在差异,本质上就是调度的方法不同。 发布订阅模式: 观察者模式: 相比较,发布订阅将发布者和观察者之间解耦。(发布订阅有调度中心处理)...

基于STM32的智能温控花盆设计

目录 引言系统设计 硬件设计软件设计 系统功能模块 空气质量传感器模块数据处理与分析模块实时显示与用户交互模块报警与提示模块远程监控与数据上传模块 控制算法 空气质量数据处理与分析算法异常检测与报警算法数据上传与历史数据回溯算法 代码实现 空气质量检测与数据处理代…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

Java入门学习详细版(一)

大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...