本文来自CSDN,作者|何苗。
近日,谷歌在开源官博发布了新的开源操作系统KataOS,引发业内关注。
这是个用于进行机器学习的嵌入式设备的开源操作系统。谈及发布缘由,谷歌表示,"随着我们被越来越多的从环境中收集和处理信息的智能设备所包围,需要有一个简单的解决方案来为嵌入式硬件构建可验证的安全系统。如果我们周围的设备无法通过数学证明能够保护数据安全,那么他们收集的个人身份数据,例如人物图像和声音录音,可能会被恶意软件访问,因此我们推出了KataOS。"
所以KataOS从设计上就考虑了安全问题,几乎完全是由Rust实现,而且是建立在seL4微内核的基础之上,而seL4在数学上被证明是安全的,具有保证保密性、完整性和可用性。此外,Rust语言消除了所有类型的错误,例如off-by-one错误和缓冲区溢出。
对于KataOS的未来,大家多持观望态度。谷歌旗下出色的产品虽多,但操作系统一直是它的痛与执着。
谷歌为什么死磕操作系统?
谷歌拥有多款开源操作系统。
2007年谷歌开始推广的Android是基于Linux开源操作系统构建而成,目前生态体系已经很庞大,在移动操作系统领域市场份额一直稳居市场第一。
2010年推出的开源操作系统Chrome OS也是基于Linux,在今年的数据统计中,其市场份额甚至还超越了macOS,成为全球第二大操作系统。
2021年发布的Fuchsia1.0操作系统也是开源操作系统,部分继承了安卓系统的UI设计和界面逻辑,其载体不仅是智能手机,还有平板电脑、笔记本电脑甚至是可穿戴设备。
今年2月份,谷歌发布的Chrome OS Flex系统是谷歌基于开源的Chromium OS开发的操作系统,被称为“旧电脑救星”,它对系统组件进行了尽可能地精简,可以让大量老旧、低性能PC设备都能够安装并使用。
再到今年10月谷歌发布的KataOS,早期版本也已在GitHub开源。
众所周知,Android已经是个非常成功且成熟的操作系统了,重新开发一个操作系统,不管是前期的技术储备、研发,还是开发完成后软件生态的打造、宣传推广等等,都需要耗费巨大的人力、财力、时间,为什么谷歌还要坚持再打造这么多的操作系统?关于这个疑问业内大致有以下几种猜想:
1、Android有大量的先天缺陷。如系统版本碎片化严重、对恶意应用的行为缺乏应对措施、内存占有、设备随着使用时间逐渐变卡等问题,困扰着Android用户,也困扰着谷歌。由于Android最初并不完全由谷歌研发的,谷歌收购Android的研发团队之前,他们已经几乎完成了一半的开发工作,因此重新设计、开发一个新的操作系统似乎是个不错的选择。
2、为了规避法律风险。Android之父Andy Rubin在早期使用了版权归甲骨文公司所有的代码段,导致后来谷歌为此付出了几十亿美元的赔偿,并且此后继续承担着法律风险。
3、目前风靡世界的操作系统大多数采用的软件“内核”都太老。Android使用的Linux内核始于1991年。Mac OS X、iOS等苹果平台以Unix为基础研发,源自1969年的贝尔实验室。
无论谷歌是出于哪点考虑,想做新操作系统的心一直未改变,操作系统作为基础软件皇冠上的明珠,的确有着让人想要摘取的魅力。基于开源来做操作系统,也能最大程度汇聚一众开发者的智慧与力量。
KataOS之未来
不过,谷歌最新发布KataOS是否能闪耀出自己的光芒,还得往后看。目前,谷歌已经在GitHub开源了大部分KataOS核心部分代码。具体包括:
用于Rust的框架(例如sel4-sys crate,它提供了seL4系统调用API);
用Rust编写的备用rootserver(用于动态系统范围的内存管理);
可以回收rootserver所用内存的sel4内核修改
谷歌方面透露,已经与Antmicro合作,通过Renode为目标硬件实现GDB调试和模拟。在内部,KataOS还能够动态加载和运行在CAmkES框架之外构建的第三方应用。但运行这些应用程序所需的组件暂时还未开源,谷歌的目标是开源所有Sparrow,包括所有硬件和软件设计;现下发布的KataOS早期版本只是一个开始。
为了全面证明KataOS是一款安全的环境系统,谷歌还为KataOS构建了一个名为Sparrow的参考实现,它将KataOS与安全硬件平台结合起来。因此,除了逻辑安全的操作系统内核之外,Sparrow还包括一个逻辑安全的信任根,该信任根是在RISC-V架构上用OpenTitan构建的。然而,对于KataOS的初始版本,谷歌的目标是使用QEMU模拟运行更标准的64位ARM平台。
最近几年,尝试开发新操作系统的公司又多了起来,无论如何,创新对消费者来说始终是好事。我们也非常期待在新的时代操作系统能够走出一个新方向。
参考来源:
https://opensource.googleblog.com/2022/10/announcing-kataos-and-sparrow.html
https://github.com/AmbiML/sparrow-manifest