国产化系统鲲鹏 CPU+UOS 适配经历

2020-07-27 11:41:09 +08:00
 firechat

一直想要给公司产品做国产化系统适配,但一直苦于无法购买到国产化主机。最近正好有个客户需要做国产化项目,系统中的 IM 子系统是使用我们的,就跟他们商量借用一段时间。本周二客户邮寄的国产化主机收到了,拆箱的那一刻,我的心里复现出一个念头,这是我们公司及我个人历史性的一刻,我们有幸参与了国产化这一伟大而又艰巨的任务。虽然我们公司很渺小,但还有无数其它或伟大或渺小的公司和个人共同参与,汇流成河、聚沙成塔,这件事情一定会做成功的。

废话不多说了,开箱吧。打开箱子,拿出来主机,主机如下图所示,机箱比较小,还是很漂亮的,各种接口也都比较丰富。

再拍一下铭牌

开机看一下吧。开机的一刹那风扇“嗡”的一声吓我一跳,之后风扇运作平稳,听不到任何噪声,因为没有专业仪器,没有办法测试到分贝数。在执行重度编译任务时,风扇没有发现任何变化,完全没有觉察到声音,这可能就是 arm 架构的优势,能耗比较低,而且 PC 又不像手机那样空间狭窄,拥有了足够的空间,散热不是问题,所以风扇的压力就很小。

进入到系统以后,第一感觉可谓是惊艳。笔者重度使用 MacOS 和 Ubuntu,UOS 的界面非常漂亮,可以甩 Ubuntu 几条街,个人感觉比 mac os 也要漂亮一些。当然这是个人的直观感受,没有量化指标,可能不同的人有不同的感觉,但 Deepin 的漂亮还是在网上比较公认的。

下面是系统信息,可以看到 UOS 的版本及 CPU 信息

软件方面,系统附带有应用商店,各种常用的软件也是一应俱全,对付一般的办公应该绰绰有余,搜索到自己需要的软件点击安装就自动安装了,十分方便。但也仅限于此,目前生态还不完善,很多专业的软件都比较匮乏。生态和用户数量就是个先有鸡还是先有蛋的问题,随着国家推进国产化系统,用户数量就会上升,软件厂商也会跟进,这样就能形成良性循环。也真心希望系统厂商能够目光长远,降低使用门槛,让更多的用户用上国产操作系统,只有这样才能真正的依靠自己活下去,壮大起来。

下载排行,可以看到平台上软件排行状态

由于职业病的原因,特意研究了一下商店里的微信。微信不能直接使用,还必须要发送邮寄到 UOS 去申请开通,猜测可能是使用了 Web 或者以前旧有的协议,需要联系微信打开这些开关。如果您的微信在浏览器上无法登录,我猜测在 UOS 登录成功后,应该就可以在 WEB 登录了。没有实际验证,如果谁验证了,可以告诉我结果。

另外一些其它常用的聊天软件和企业协同版本软件也都没有。但居然还有电报,能登录上去吗?由于时间关系,没有去验证,登录不上去是大概率事件。

由上图可见社交沟通类的软件非常少,这就是我们公司此次工作目的了,完成野火 IM 在 UOS 上的适配,让客户可以在国产化系统上使用完全私有部署的沟通软件。

由于 UOS 也是源于 debian 的,在命令行下 apt 命令和 ubuntu 下一样方便,笔者后面很多开发的软件都是 apt 安装的。apt 安装需要打开开发者模式,在控制中心搜索开发者模式,按照提示操作就可以打开。

由于本文是记录国产化适配,就不做过多的测评了。如果想了解更多,大家可以看一下机器的官网指标参数和[评测视频]( https://search.bilibili.com/all?keyword=鲲鹏 920)。我的最终感觉要比评测视频里说的要好得多,无论是鲲鹏 920 还是 UOS,可能是因为我是程序员的原因吧。

UOS 我重装了几回(因为要测试没有开发环境的软件运行情况,查找软件依赖),安装非常简单,X86 的可以在 UOS 官网下载,国产 CPU 版本的操作系统通过客服就可以要到。下载 ISO 镜像后,用官方提供的工具在 windows 系统下制作一个安装 U 盘,然后插上去,点几下就完成了安装。大家有兴趣可以安装看一下。

检查一下 Web 的兼容性,用 UOS 自带的浏览器打开 web 地址,扫码登录,功能一切正常。商店里还有火狐,应该也都没有问题。界面如下图所示。

下面正式开始适配。适配分成两部分,一部分是 PC 客户端 pc-chat 的适配;另外一部分是 server 的适配,server 需要使用到国产数据库。由于篇幅的问题,本文只讲适配 PC 客户端吧,server 的适配等到有空再写。

pc-chat是野火 IM 在 PC 上的客户端,界面和功能和微信 /钉钉的 PC 端类似,实现是通过 electron 实现的,其中协议栈是 C++的库,上层 UI 是 H5 写的。pc-chat 已经在 linux x86 上完成了开发,所以在 UOS arm64 上只需要重新编译即可。

C++协议栈编译,

安装依赖 cmake,python,build-essential,node,node-gyp,其中 cmake 在应用商店里有,点击安装就可以了

另外两个通过命令行安装

sudo apt update
sudo apt install python,build-essential

node 的安装方法是在 nodejs.org 上下载 arm 版本的,然后解压到/usr/local/lib/nodejs,然后把 bin 目录添加到 PATH 中就可以用了。

node 安装完成之后,通过npm install -g node-gyp安装 node-gyp 。

由于 mars 中使用了 openssl 的静态库,所以需要重新编译 openssl 库,从 github openssl release 处下载 1.0.2f 版本,然后按照 readme 上的说明,如下编译

./configure
make

编译完成后,找到libcrypt.alibssl.a,在 mars 项目建立文件夹“openssl_lib_linux_arm64”,然后再修改 linux 的编译脚本,引用 arm64 的静态库。

mars 的编译:对比 linux_x86 的编译脚本,创建 arm64 的编译脚本 python build_linux_arm64.py , 运行之后开始了 C++和 node 库的编译,编译成功后就得到了 marswrapper.node 协议栈库。

编译到这里的顺利程度远超出我的想象的,基本上没有遇到任何问题,这也就是说明 arm 的生态非常的好,常用的工具链中都有 arm 版本的。有些库没有对应架构版本,也很容易编译得到。

截图插件的编译

pc-chat 的截图插件是 QT 的,好处是跨平台,可以在各个平台上运行,只需要在对应的平台上编译一次就可以了。商店里有 QT Csreator,直接安装,但发现无法编译,因为没有装 QT,在 QT 官方的 download 页面也无法找到 arm 版本,而在网上找到的 UOS 安装 QT 都是针对 x86 平台的,正当一筹莫展的时候突然想到是不是可以试试命令行模式,通过apt install qt5-default命令,顺利地编译出了截图插件。

打包 Electron 软件包

下面就是编译 Electron 了,修改一下打包的脚本,electron-builder 添加--arm64参数,然后执行npm install, npm run package-linux-arm64,编译打包失败,原来还依赖 fpm,fpm 最新版本还有问题,还需要回退到上一个版本,折腾一番后,顺利打包成功。运行起来以后,所有功能都是正常的,非常地成功。

我们还录制了一个简单的视频,放到了 B 站上,可以点击这里观看。

其实打包 electron 时还是有些担心的,因为用到了太多的库,有些库是平台依赖的,需要 node-gyp 进行编译,但真没有想到所有的依赖都是一遍就通过的,只有打包的时候遇到 fpm 的问题。

鲲鹏 920 适配过了,应该所有的 arm64 的 CPU 都可以支持了,应该也能支持海光 CPU 了,后面还要找机会找台海光的 PC 测试一下。

总结

可以看出 arm 的生态环境还是非常的好,工具链齐全,大部分代码都是一遍通过,偶尔出现问题,也都是可以通过 stackoverflow 查找解决的。通过这次适配,我感觉所有的在 x86 linux 上运行的软件都应该可以比较容易地移植到 arm64 linux 上去。

另外一个感觉就是,arm 的性能稍微差了点,我用一台 i3 的 NUC 对比过,这台机器的编译时间大概是 NUC 的 1.2 倍到 1.8 倍不等。应该是单核的性能相对 X86 差了不少,但能效比应该是能够吊打 X86 的,毕竟 arm 是比较省电的。INTEL 在过去的十年太佛系了,没有太大的进步。

生态完善,能效比高,苹果都要转向 arm 了,可见未来 arm 的发展前景了。

Arm 加油!国产化系统加油!中国加油!

17131 次点击
所在节点    分享发现
168 条回复
cigarzh
2020-07-28 11:47:27 +08:00
求拆机给大🔥看看
firechat
2020-07-28 11:51:16 +08:00
@cigarzh 这个不能啊,是借的电脑,不能随便动。B 站上有人做的有评测,有拆机,不过说实话应该也没啥好看的,就是一堆电子器件。
stormsuncc
2020-07-28 11:53:08 +08:00
@firechat
是不是 ZF 行为只有 ZF 知道了。中国属于集权独裁 ZF,讲道理应该比美国这种郭嘉对企业掌控力度更大。只要天朝 ZF 想,在天朝就没有 ZF 不能做的。举个例子,满大街摄像头,丢小孩一点有用的信息拍不到,抓违章倒是准时的很,有人要说技术达不到,就当我没说好了。

@bitdepth 抱歉,学历有限不是很理解您说的啥。。。我是对于您说的“不開源自動上傳小秘密給北京”,我想表达是,winmac 这些,偷小秘密也是给美国佬吧。安卓这些国产手机国产系统偷小秘密才会给天朝 ZF 的。
firechat
2020-07-28 12:13:51 +08:00
@stormsuncc 人是群体性动物,群体就必须有管理者,不同的是有些是被”独裁“管理的,也有些是资本家管理的,同理在美利坚也没有什么是大资本家不能做的,爱泼斯坦事件比在国内发生的很多事更离奇,有结果吗?资本其实是更黑心的更冷血,新冠感染了那么多,死了那么多弱势群体,有人管吗?中国好歹都是免费治疗,国外资本家谁管你死活。摄像头的例子举得就不恰当,国内治安过去 10 年提升了非常多,丢小孩的少了多少,盗窃和恶性犯罪少了多少,至少夜里 12 点,走在北京偏僻的胡同我也一点儿都不害怕。
CRight
2020-07-28 12:17:40 +08:00
@mengzhuo 红帽家也这样啊,商业版应该还有相关维护服务吧
Devin
2020-07-28 12:22:13 +08:00
@firechat 热度差不多就行了,有人见不得国产好,存心把这贴关到水深火热,不要上他们的套
herozzm
2020-07-28 12:29:21 +08:00
lz 这是在翔上喷香水
nocwat
2020-07-28 12:30:26 +08:00
也在搞国产化系统移植,支持国产处理器,但不包括换皮版的 ”国产“ x86 处理器,
以及借着国产化大搞产业园圈地的某些厂商。
domosekai
2020-07-28 12:58:51 +08:00
@firechat 新冠死人凭什么要资本家负责?我得了病也不会因为没钱就找马爸爸,更不会因为马爸爸不理我就说他黑心啊。美国是小 gov,民众认可它不管这些,人家立国 200 多年来就是这样,奥巴马要推全民医保也大批人反对。换句话说,这是美国人自己选择的制度,残酷但是合理。如果大部分人不满那么就重新立法呗,这也是制度的一部分。我们是管你新冠没错,但我不会因为这个就觉得什么都该让国家管。在一个个人不能批评,遑论改变的地方,你只看到监控帮忙抓抢劫抓偷小孩实在是有点管中窥豹。
back0893
2020-07-28 13:06:10 +08:00
看着还行啊..
出 nuc,当成开发机不错.
bitdepth
2020-07-28 13:20:21 +08:00
@stormsuncc 我不是美國人,但是我也不信任 NSA 。NSA 是有很多黑歷史的,我基於自身隱私選擇不相信他。
同樣不僅基於過往紀錄,還基於對立關係,我也不相信北京。
不只是中國的 Android 設備製造商( Lenovo 電腦的 UEFI 也是),samsung, nokia 也被脅迫了。甚至被抓包的後門後宣稱只是把中國的韌體錯誤更新到外國去。
AslanFong
2020-07-28 13:57:55 +08:00
@bitdepth 不要回复和主题无关的内容 ok ?想阐述政治观点小道消息去品葱
firechat
2020-07-28 15:33:41 +08:00
@domosekai 资本家控制了大部分财富,垄断了所有的资源,而且想办法影响 zf,各种方法“避税”,一点儿社会责任都不用承担,真好,我要是有钱人,我也会喜欢美国的。但中国的传统文化就不是这样,穷则独善其身,达则兼济天下,所谓权力越大责任越大,哪怕是个小地主,遇到灾荒年也得舍粥济民,我觉得这种传统很优秀。另外哪里不允许批评了,你在这里批评也没有人封你的号啊,连方方这样吃着体制的饭砸体制的锅的也没有怎么着她呀,倒是我觉得最近 twitter/FB 清理了一大批中国账户有点儿意思
bitdepth
2020-07-28 15:52:07 +08:00
@AslanFong 我覺得您理解和我不在同一模式下。我只是在質疑這一系列產品
Caan07
2020-07-28 16:56:43 +08:00
国产的机器,国产化的麒麟系统的操作真的是让人一言难尽,另外,长城世恒的几款主机的散热做的还不好,开机没多久机箱感觉到明显的发热.......
Caan07
2020-07-28 16:59:44 +08:00
@iyear #93 请不要把 Party 和 Country 划等号。另外,人家没说恨什么给人家贴标签总不好吧?
fluorinedog
2020-07-28 17:32:07 +08:00
@domosekai 都什么年代了还能看到活着的社会达尔文主义... 真让人大开眼界...
gy6221
2020-07-28 23:26:46 +08:00
@Counter 那解释一下某些地方可以日常工作巡查时查到人家私聊内容,然后查水表?
Counter
2020-07-29 06:04:29 +08:00
edk24
2020-07-29 16:43:47 +08:00
国产发行版, 用 deepin 两年了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/693405

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX