当前位置: 首页 > 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。新年之际,衷心祝福国产自主可控芯片和基础软件能够披荆斩棘,茁壮成长。

http://www.lryc.cn/news/528793.html

相关文章:

  • python Flask-Redis 连接远程redis
  • 在Windows系统中本地部署属于自己的大语言模型(Ollama + open-webui + deepseek-r1)
  • Haproxy入门学习二
  • Git图形化工具【lazygit】
  • node 爬虫开发内存处理 zp_stoken 作为案例分析
  • 基于Langchain-Chatchat + ChatGLM 本地部署知识库
  • 【C语言】main函数解析
  • 【QT】- QUdpSocket
  • 性能测试丨分布式性能监控系统 SkyWalking
  • SQL GROUP BY 详解
  • C语言中string.h头文件功能介绍
  • 从规则到神经网络:机器翻译技术的演进与未来展望
  • 园区管理智能化创新引领企业效能提升与风险控制新趋势
  • Python爬虫之——Cookie存储器
  • 第21节课:前端构建工具—自动化与模块化的利器
  • 企业SaaS(软件即服务)行业中AARRR
  • 为什么要学习rust
  • 观察者模式和订阅发布模式的关系
  • 基于STM32的智能温控花盆设计
  • OpenAI-Edge-TTS:本地化 OpenAI 兼容的文本转语音 API,免费高效!
  • P4681 [THUSC 2015] 平方运算 Solution
  • 【apt源】RK3588 平台ubuntu20.04更换apt源
  • Angular 2 表单深度解析
  • PHP 7 新特性
  • vim如何解决‘’文件非法关闭后,遗留交换文件‘’的问题
  • 【练习】树形dp
  • Mybatis是如何进行分页的?
  • 【新春特辑】2025年春节技术展望:蛇年里的科技创新与趋势预测
  • 论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(五)
  • C++并发:C++内存模型和原子操作