开源的Harmony OS源代码分析
可能这篇文章会得罪很多人,甚至会被炸号,但是我实在无法忍受如此大范围的指鹿为马。当有人喊亩产一万斤的时候,你不跳出来指出对方在瞎说,那么最后倒霉的可能还是你自己。
另外我觉得我有资格说这话。我的工作经验之一,就是内核,我曾经在Nvidia,Qualcomm等几个主力芯片上bring up 过内核。对ARM的trustzone,高通的SecureMSM, 各个主流芯片secure boot都比较熟悉,熟练使用trace32。以及对操作系统的底层比如中断,DMA,文件系统(我自己写过fat文件系统的parser),内存管理机制都比较熟悉,最早一批参加blackhat 的华人。所以,如果大家讨论技术欢迎,虽然我已经很多年没有碰这些了,但是吹吹牛没问题的。
说实在,我没有怎么关心过鸿蒙系统。昨天在各种热议中,我去看了一下。
所谓鸿蒙的开源代码,当时第一眼看,我确实觉得非常佩服。还发了一条微博点赞。
看了一会hm的源代码,有点意思。
既不是linux,也不是Android。比linux和Android OS要简单的多。应该说是极简版的mobile OS。其实工作量很大。没有1000-2000个工程师的团队是搞不定的。
1. 现在公布的代码确实是hw重写过的。工作量巨大无比。比我想的要多。
2. 但是从功能的角度来讲,又显得非常简陋。给我感觉是似曾相识,又不是。
这是我看了三个模块的代码的感觉,
GICv3
https://gitee.com/openharmony/kernel_liteos_a/blob/master/arch/arm/gic/gic_v3.c
这个 GICV3 的实现,非常简单,但是基本上功能都有了,能用。
内存管理模块
https://gitee.com/openharmony/kernel_liteos_a/blob/master/kernel/base/mem/tlsf/los_memory.c
这个内存管理模块,应该是根据这个算法做的 tlsf
FAT文件系统
https://gitee.com/openharmony/kernel_liteos_a/blob/master/fs/fat/os_adapt/fatfs.c基本上也是重写了一边FAT的文件格式的处理。。。但是FAT,貌似微软还是有专利的。
不知道专利有没有过期。。
总的来讲,还是不错的开始。另外,看了一下代码,hm在compatibility方面做出了大量的牺牲。
也就是说,如果光一家玩,问题不大。但是如果有很多家一起玩,不同硬件的spec,可能会有很多问题。
看吧。如果小米被迫上这个系统,估计要骂人。
然而很快发现,有朋友反馈,他们的华为手机可以直接升级到鸿蒙,然后原来的app都可以用。啥都不用改。
我当时就是满脑子问号???
这个有点超越我的认知范围了。。。。不可能啊?开源的这个harmony os是无法做到直接支持run apk的。即便支持也是很久很久以后的事情。
后来很多人反馈就是,啥apk都可以运行。。。。。
这么说的话,这个鸿蒙os,太神奇了。。。
后来做了更多的了解,搞清楚了。。。
原来,开源版的鸿蒙, 是一套针对IoT版的操作系统。
而手机版的鸿蒙,是另外一套类似于/基于AOSP的系统。很可能是android 套壳,但是没有开源。。
但是,他们用了同一个名字,品牌,鸿蒙。。 非常令人容易产生误解。
arstechnica 的分析与评价
查了一下外网。权威的 智能手机测评网站 有篇详细的报道:
https://arstechnica.com/gadgets/2021/06/huaweis-harmonyos-will-rollout-to-100-android-models-over-the-next-year/
我基本上同意文章的判断:
有两套 harmony os,一套是IoT版,一套是手机版。
IoT版简单的多是开源的,你说它一行linux代码都没有用是站的住脚的。代码我看了,我赞同这个说法。
手机版是一套完全不同的系统,是闭源的。arstechnica 认为可能是fork。我没有看到代码,不好说什么。但是完全支持apk,我觉得至少是aosp了。
华为的回应
在外媒的追问下,华为已经向verge 表示:
承认可能有两个内核,但是注意是“可能”。这段statement其实是文字游戏的最高水平,什么都没有承认,什么也没有否认。我觉得,没有必要再解读了。。
结语
我觉得本来是一件很好的事情,仅仅是IoT版的harmonyOS也是一个非常了不起的成就。只要假以时日,完全可以在很多IoT的场景使用,比如摄像头,路由器,传感器网络等等。如果在结合cloud场景,AI场景,都能有很不错的江湖地位。
做个手机操作系统,远没有rtos或者 iot os那么简单,而且存在大量的场景,你根本绕不过专利墙。 比如有个专利是,手机给你发notification,你可以dimiss它。这种专利,把手机的notification全部给覆盖了。所以你即便搞通了 soc--firmware--os这层,这些专利会让你的成本很高。
可惜为啥要搞成现在这么难看,稍微有点底层系统经验的人都知道怎么回事,连verge的记者都看明白了。为什么做的这么不体面呢? 你方方说,还需要多年才能做到完全的独立系统,没问题啊。实事求是讲,这本来这就是一个很难很难的事情啊。为什么要搞出这么多误会呢?
最后,还是希望大家实事求是,把事情做好。