当前位置: 首页 > 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的智能温控花盆设计

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

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...

python打卡day49

知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

LLM基础1_语言模型如何处理文本

基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...