使用 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 版本。

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. …...
RocketMQ实战—1.订单系统面临的技术挑战
大纲 1.一个订单系统的整体架构、业务流程及负载情况 2.订单系统面临的技术问题一:下订单的同时还要发券、发红包、Push推送等导致性能太差 3.订单系统面临的技术问题二:订单退款时经常流程失败导致无法完成退款 4.订单系统面临的技术问题三…...
【QT】- QUdpSocket
QUdpSocket 是 Qt 自带的一个类,属于 Qt 网络模块,用于进行 UDP(用户数据报协议) 通信。它提供了简便的接口来发送和接收 UDP 数据报(datagrams)。 UDP 是一种无连接的协议,适用于那些不需要确…...
赚钱的究极认识
1、赚钱的本质是提供了价值或者价值想象 价值: 比如小米手机靠什么?“性价比”,什么饥饿营销,创新,用户参与,生态供应链,品牌这些不能说不重要,但是加在一起都没有“性价比”这3字重…...
Linux学习笔记——用户管理
一、用户管理命令 useradd #用户增加命令 usermod #用户修改命令 passwd #密码修改命令 userdel #用户删除命令 su #用户提权命令 1、useradd命令(加用户): 创建并设置用户信息,使用us…...
【AI】【本地部署】OpenWebUI的升级并移植旧有用户信息
【背景】 OpenWebUI的版本升级频率很高,并会修改旧版本的Bug,不过对于已经在使用的系统,升级后现有用户信息都会丢失,于是研究如何在升级后将现有的用户信息移植到升级后版本。 【准备工作】 OpenWebUI的升级步骤在Docker中有现…...
从synchronized到ReentrantLock_Java锁机制的演进与选择
1 引言 在Java并发编程中,锁机制是确保线程安全的关键。synchronized关键字和显式锁(如ReentrantLock)是两种常用的锁机制。本文将深入探讨这两种锁的工作原理、优缺点,并分析它们在不同场景下的最佳选择,帮助开发者做出明智的选择。 2 synchronized关键字详解 synchro…...
PyCharm接入DeepSeek实现AI编程
目录 效果演示 创建API key 在PyCharm中下载CodeGPT插件 配置Continue DeepSeek 是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的 AI 模型。DeepSeek-V3 是 DeepSeek 公司推出的最新一代 AI 模型。其前身是 DeepSeek-V2.5,经过持续的…...
21款炫酷烟花合集
系列专栏 《Python趣味编程》《C/C趣味编程》《HTML趣味编程》《Java趣味编程》 写在前面 Python、C/C、HTML、Java等4种语言实现18款炫酷烟花的代码。 Python Python烟花① 完整代码:Python动漫烟花(完整代码) Python烟花② 完整…...
数论问题75
命题,证明:存在K∈N,使得对于每个n∈N,Kx2^n1都是合数。 证明:设n2^m,当m0,1,2,3,4时,a(m)2^(2^m)1都是素数。 a(0)213,a(1)2^215,a(2)2^4117&…...
zyNo.15(Web题型总结1)
web 一、工具使用 1.sqlmap使用 在目录页输入cmd就可以打开程序 使用方法查看输入python sqlmap.py --help 二、web攻防知识体系 新手村 WEB CTF入门 md5绕过、变量覆盖、随机数问题 sql注入 MySQL注入介绍与联合…...
将 OneLake 数据索引到 Elasticsearch - 第 1 部分
作者:来自 Elastic Gustavo Llermaly 学习配置 OneLake,使用 Python 消费数据并在 Elasticsearch 中索引文档,然后运行语义搜索。 OneLake 是一款工具,可让你连接到不同的 Microsoft 数据源,例如 Power BI、Data Activ…...
Spring Boot多环境配置实践指南
在开发Spring Boot应用时,我们常常需要根据不同的运行环境(如开发环境、测试环境和生产环境)来配置不同的参数。Spring Boot提供了非常灵活的多环境配置机制,通过使用profile-specific properties文件,我们可以轻松地管…...
C++11中array容器的常见用法
文章目录 一、概述二、std::array的特点三、std::array的定义与初始化三、std::array的常用成员函数四、与 C 风格数组的互操作 一、概述 在 C11 中,std::array 是一个新的容器类型,它提供了一个固定大小的数组封装。相比传统的 C 风格数组,…...
NFTs 是网络艺术,而非数字艺术
传统艺术界对 NFTs 的误解 传统艺术界(包括博物馆、策展人等)常常认为: “我们收藏和策展数字艺术已经数十年了。我们非常了解这个领域。或许少数 NFT 可以被视为优秀的数字艺术,但更多的只是糟糕的数字艺术,甚至根本称…...
澳洲硕士毕业论文写作中如何把握主题
每到毕业季时,澳洲硕士毕业论文写作是留学生学业的头等大事。但是经常有留学生在澳洲毕业论文写作过程中会遇到写了一半,但是不知道应该如何继续下去的问题。有时候是在literature review的部分就越写越觉得偏离了方向,有时候是在数据收集阶段…...
SQL server 数据库使用整理
标题:SQL server 数据库使用整理 1.字符串表名多次查询 2.读取SQL中Json字段中的值:JSON_VALUE(最新版本支持,属性名大小写敏感) 1.字符串表名多次查询 SELECT ROW_NUMBER() OVER (ORDER BY value ASC) rowid,value…...
在Windows系统中本地部署属于自己的大语言模型(Ollama + open-webui + deepseek-r1)
文章目录 1 在Windows系统中安装Ollama,并成功启动;2 非docker方式安装open-webui3下载并部署模型deepseek-r1 Ollama Ollama 是一个命令行工具,用于管理和运行机器学习模型。它简化了模型的下载与部署,支持跨平台使用,…...
nosql mysql的区别
NoSQL 和 MySQL 是两种不同类型的数据库管理系统,它们在设计理念、数据模型、可扩展性和应用场景等方面有着本质的区别。 NoSQL 数据库 特点: 灵活的数据模型: NoSQL 数据库通常没有固定的表结构,可以很容易地存储不同结构的文档或键值对。水平扩展: …...
DeepSeek辅助学术写作摘要内容
学术摘要写作 摘要是文章的精华,通常在200-250词左右。要包括研究的目的、方法、结果和结论。让AI工具作为某领域内资深的研究专家,编写摘要需要言简意赅,直接概括论文的核心,为读者提供快速了解的窗口。 下面我们使用DeepSeek编…...
网络工程师 (5)系统可靠性
前言 系统可靠性是指系统在规定的条件和规定的时间内,完成规定功能的能力。这种能力不仅涵盖了系统本身的稳定性和耐久性,还涉及了系统在面对各种内外部干扰和故障时的恢复能力和容错性。系统可靠性是评价一个系统性能优劣的关键指标之一,对于…...
Swoole的MySQL连接池实现
在Swoole中实现MySQL连接池可以提高数据库连接的复用率,减少频繁创建和销毁连接所带来的开销。以下是一个简单的Swoole MySQL连接池的实现示例: 首先,确保你已经安装了Swoole扩展和PDO_MySQL扩展(或mysqli,但在这个示…...
RoboVLM——通用机器人策略的VLA设计哲学:如何选择骨干网络、如何构建VLA架构、何时添加跨本体数据
前言 本博客内解读不少VLA模型了,包括π0等,且如此文的开头所说 前两天又重点看了下openvla,和cogact,发现 目前cogACT把openvla的动作预测换成了dit,在模型架构层面上,逼近了π0那为了进一步逼近&#…...
Vue.js 配合 Vue Router 使用 Vuex
Vue.js 配合 Vue Router 使用 Vuex 今天我们来聊聊如何将 Vue Router 和 Vuex 结合使用,以实现更高效的状态和路由管理。在大型 Vue.js 应用中,Vue Router 负责路由管理,Vuex 负责状态管理。将两者结合,可以实现如权限控制、动态…...
【Django教程】用户管理系统
Get Started With Django User Management 开始使用Django用户管理 By the end of this tutorial, you’ll understand that: 在本教程结束时,您将了解: Django’s user authentication is a built-in authentication system that comes with pre-conf…...
2024年终总结——今年是蜕变的一年
2024年终总结 摘要前因转折找工作工作的成长人生的意义 摘要 2024我从国企出来,兜兜转转还是去了北京,一边是工资低、感情受挫,一边是压力大、项目经历少,让我一度找不到自己梦寐以求的工作,我投了一家又一家ÿ…...
MySQL--》深度解析InnoDB引擎的存储与事务机制
目录 InnoDB架构 事务原理 MVCC InnoDB架构 从MySQL5.5版本开始默认使用InnoDB存储引擎,它擅长进行事务处理,具有崩溃恢复的特性,在日常开发中使用非常广泛,其逻辑存储结构图如下所示, 下面是InnoDB架构图…...
SpringCloudAlibaba 服务保护 Sentinel 项目集成实践
目录 一、简介1.1、服务保护的基本概念1.1.1、服务限流/熔断1.1.2、服务降级1.1.3、服务的雪崩效应1.1.4、服务的隔离的机制 1.2、Sentinel的主要特性1.3、Sentinel整体架构1.4、Sentinel 与 Hystrix 对比 二、Sentinel控制台部署3.1、版本选择和适配3.2、本文使用各组件版本3.…...
c++面试:类定义为什么可以放到头文件中
这个问题是刚了解预编译的时候产生的疑惑。 声明是指向编译器告知某个变量、函数或类的存在及其类型,但并不分配实际的存储空间。声明的主要目的是让编译器知道如何解析程序中的符号引用。定义不仅告诉编译器实体的存在,还会为该实体分配存储空间&#…...
DeepSeek理解概率的能力
问题: 下一个问题是概率问题。乘车时有一个人带刀子的概率是百分之一,两个人同时带刀子的概率是万分之一。有人认为如果他乘车时带上刀子,那么还有其他人带刀子的概率就是万分之一,他乘车就会安全得多。他的想法对吗?…...
