2fb37d4264aea85cb82c0d6f7e3a9597.gif

1956年,IBM推出第一代批处理系统GM-NAA I/O,标志着操作系统概念的初步形成。70 多年来,操作系统作为计算机系统的核心,承担连接底层硬件和上层软件的纽带作用,它是信息技术领域的基石与灵魂。

近年来,新晋内存安全的 Rust 编程语言,被认为适合底层系统如操作系统的开发,正在革新操作系统发展,国内大厂和机构积极布局:

10月22日,聚焦安全可信底层技术的开源系统软件栈 ——“星绽”(Asterinas),由中关村实验室、蚂蚁集团、北京大学、南方科技大学等产学研机构联合对外发布,并对全球开发者开源。“星绽”系统软件栈旗下包括星绽OS和星绽机密计算两大项目,分别面向通用执行环境和可信执行环境提供安全原生的系统软件,为云计算、数据流通、人工智能等安全攸关的计算场景,构建安全可信的系统软件底座。

5bdef0adab99bc3a25df7a93e4156ad5.png

其中,全新自研的星绽OS作为下一代工业强度的开源通用OS内核,兼顾性能和安全,采用首创的框内核架构和新兴的Rust编程语言,支持x86和RISC-V等CPU体系架构,它不仅能兼容Linux的应用程序,还在安全性方面有望大幅领先于Linux和其他现有主流OS。

为什么要不留余力地从0到1使用 Rust 来打造星绽 OS?CSDN专访到蚂蚁集团高级技术专家、星绽OS项目的发起者和维护者田洪亮博士,谈谈星绽OS背后的研发历程。

b04b71e0e55c838eda2fb3f5185292ce.png

今年5月28日蚂蚁技术日,田洪亮在社区线下meetup做分享

10b3234073b9fa7c0a285251e0991314.png

严守安全防线,用 Rust 从零自研操作系统

洞察当下全球技术发展,中国工程院院士倪光南表示,近年来,全球系统安全漏洞频发,网络攻击和黑灰产业的事件频发,传统的技术路线难以高效应对新的安全挑战。安全可信的新技术已成为推动产业可持续发展和技术持续创新的关键。同时,随着人工智能技术深入落地产业,保障安全的数据流通更需要适配安全可靠的系统软件栈的支撑。

在全球技术竞争日益激烈背景下,关键核心技术的自主创新变得格外重要。操作系统作为基础软件,确保操作系统的安全性,是用户的最基础需求。之前操作系统开发基本采用C/C++,而它们在内存安全上存在一些诟病,导致近年来内存安全事件频发。今年7月,网络安全领域巨头CrowdStrike 故障,导致Windows 电脑蓝屏死机,根源正是由于内存读取越界错误引发的连锁反应。

蚂蚁集团副总裁兼首席技术安全官、蚂蚁密算董事长韦韬表示,操作系统作为基础软件,支撑起庞大的互联网服务,搭建起一个个“数字城堡”。如果操作系统持续存在高危安全隐患,那么我们看似坚固的数字城堡就会变成沙滩上的城堡,当操作系统底层安全根基不扎实时,整个互联网状态非常危险,将有可能导致大规模的安全事件,实际上这种风险已经一而再再而三的发生。

ff55c45ef1e136b98ea6822e77614e7f.png

蚂蚁集团副总裁兼首席技术安全官、蚂蚁密算董事长韦韬

操作系统使用 C /C++开发,很容易造成内存泄漏,以Linux为例,内存错误占高严重度安全漏洞的 70% 左右。而 Rust通过所有权、生命周期和借用检查等概念,在编译时就能防止许多常见的内存安全错误,如空指针异常、数据竞争和缓冲区溢出,从而有效避免了内存相关的错误。Rust 则被认为是更安全的语言,适合底层开发,2022 年,Linus Torvalds接受 Rust 作为 Linux 内核的第二编程语言,Rust 被认为接棒 C /C++。

“Rust语言是系统编程的未来,这是操作系统人的共识。” 田洪亮说道。

既然 Rust 开始进入 Linux 内核,那么星绽OS 为何还要从零用 Rust 写一个OS内核?

田洪亮表示,一方面, Linux内核拥有上千万行C代码,这既是巨大的财富,也是沉重的负担。这些代码支撑从服务器到嵌入式设备的广泛硬件平台,提供丰富的功能和高性能。然而,庞大的代码库也带来了维护挑战,尤其是在安全性方面。C语言虽然强大,但其不安全的内存管理容易引入缓冲区溢出、使用后释放等漏洞。为了兼顾已有的庞大代码,新加入Linux内核的rust代码不得不继承和暴露庞大的内存不安全的风险面。另一方面,基于一些 “非技术因素”也让田洪亮团队更加坚定自己的选择:今年 9月,Rust for Linux 内核维护者之一 Wedson Almeida Filho 退出 Rust for Linux 项目的维护者团队,他发现自己的精力和热情被严重消磨,抗拒回应那些跟技术无关的事宜。近年来,Linux 社区就是否将 Rust 纳入 Linux 内核展开很多激烈的争论。不同编程语言的思维方式和价值观不同,作为一项新语言和思维,操作系统内部错综复杂,Rust 进入 Linux 这个拥有庞大 C 代码的项目可能会遇到巨大的阻力,需要做很多的妥协退让与牺牲。

自Wedson Almeida Filho 退出 Rust for Linux 事件后,国外社区有个论调是与其往一个庞大的旧代码库里引入崭新的语言,不如从头开始用 Rust 写一个 OS。

新技术带来新挑战,同时带来新机遇: 早在 2018 年,田洪亮牵头使用 Rust来写面向Intel SGX的 LibOS——Occlum。Occlum可以让普通Linux应用直接运行在Intel SGX有特殊局限的、但内存加密的执行环境中,避免了对应用程序的改造,大幅降低迁移成本。

有了Occlum 的成功实践后,当时间来到 2022 年 6 月,田洪亮和团队启动星绽OS 原型系统的开发,同样选择以 Rust 来编写。田洪亮清楚地了解开发一个工业强度操作系统的工作之艰巨,因此在项目立项之初就确定了走开源共建的道路,并在项目早期就与中关村实验室、北京大学、南方科技大学等志同道合的机构达成合作。在经过2年时间的闭门联合攻关之后,于2024年3月正式公开项目源代码,目前星绽OS在Github 已收获 1600+Star。

为什么星绽 OS 作为一颗刚升起的新星,引发如此多的关注?除了使用 Rust全栈自研外,还有其首创的框内核框架也可圈可点。 

3771926ae3f8cdb788363f291abe2605.png

首创框内核架构,兼容宏内核的性能与微内核的安全

在数字化时代,操作系统作为关键基础软件,其安全性、速度与通用性成为技术研发的核心。从操作系统的发展历程来看,有一个公认的挑战:如何让OS兼顾性能与安全?

在操作系统原理里有两大派系,一个是宏内核派系,以Linux、Windows 为代表,这种架构虽然在性能上表现优越,但由于代码量庞大且用C/C++等内存不安全的语言编写,导致系统频繁暴露于安全漏洞中。在微内核派系,以Zircon、seL4 为例,一个基于微内核的OS在最高权限级别只保留了最少的代码,这部分代码出现问题的可能性大幅降低,从而更有利于保证整个OS的安全性。但这个提高的安全性是以牺牲性能为代价的:微内核之上的低权限OS组件需要频繁的跨进程通信,从而导致性能下降。

18227efafada6b81729aba2e2433ad22.png

在开发星绽OS的过程中,团队也遇到相关的技术挑战,据蚂蚁密算CTO、蚂蚁技术研究院计算系统实验室主任闫守孟透露,团队在使用Rust开发的过程中,发现Rust非安全部分的代码较难控制,稍微不注意的话,有可能散落在操作系统内核的各个地方。

be03fa46e44b068f49129918e6274d2b.png

蚂蚁密算CTO、蚂蚁技术研究院计算系统实验室主任闫守孟

认识到这个问题,田洪亮和团队推出了业界首创的框内核OS架构。在框内核里,整个OS还像宏内核一样,它是在整体的内核态,这个内核态里的所有代码分成两大部分,一是特权的os框架,将底层的、非内存安全代码抽象为高层的内存安全API,只有在这个特权框架的代码才可以用非内存安全的代码,这部分代码量非常小。二是去特权的OS服务,使用OS框架提供的内存安全API来安全地实现绝大数OS功能,这部分代码量较大。如此一来,将非内存安全的代码(如unsafe Rust)严格限制在极小范围,提高了操作系统的安全性和可靠性,同时不影响性能。从而星绽 OS达到宏内核的性能和微内核的安全性,大大提升开发者体验。同时,星绽OS的框内核架构不是以牺牲效率为代价的,在业界广泛接受的基准测试Lmbench 中,星绽OS达到与Linux相当的性能水平。

50d9707e0eea4b8b6af2081e570bb458.jpeg

4ecb9ce707549413b2b1cceaf1ac0063.png

OSDK:为Rust OS内核开发者量身打造的“神器”

一款基础软件要获得广泛应用,肯定离不开开发者,为了降低开发者写OS的门槛,星绽OS提供一套完整的开发者工具包OSDK,大大简化了内核开发的复杂度。开发者可以利用Rust的高效开发环境以及OSDK提供的便捷工具,快速迭代和测试自己的内核模块。

田洪亮表示,“OSDK让用Rust写OS像用Rust写App一样简单”。

开发者在开发操作系统内核时可能遇到一些挑战:首先,从头开始编写一个操作系统内核是件很难的事情;其次,在开发者过程中,开发者很难在项目之间重用与操作系统相关的库;还有,开发者很难对操作系统功能进行单元测试。

OSDK提供一个命令行工具cargo-osdk,它为在框架内核架构上开发的项目管理提供了便利,可以方便地构建、运行和测试项目。田洪亮举例道,我们可以找一个新的克隆项目,然后你进入到这个目录里,使用两行命令就可以造出来一个新的Rust OS项目并跑起来,这是在以前是完全不能想象的。

田洪亮表示,“一款全新的开源操作系统想要获得成功,必须吸引更多开发者,而吸引开发者的一个关键就是要让他们“幸福”,Rust语言和OSDK工具一起可以大幅提升改善他们的开发体验,提升 “幸福感”。”

通过拥抱Rust内存管理机制和类型安全特性,星绽OS降低了内存安全漏洞的风险,这是以往传统操作系统难以达到的。可以说,在内存安全方面,星绽OS做到独树一帜的程度,没准星绽OS和 Linux 未来有“掰手腕”的机会。

7ae07aa13026015f464a5e1023165c97.png

开源共创,独行快众行远

田洪亮对星绽OS的期待是“以Linux为标杆。”

狭义上,Linux指的是由 Linus Torvalds 发起,并带领 Linux 社区开发者共同开发的 Linux 内核,它是 Linux 操作系统的核心;而广义的 Linux指的是Linux 发行版, Linux 发行版是涵盖 Linux 内核在内的开源软件集合,包括编译器、图形化、生产力工具、服务器端程序等,这是由社区和企业、开发者的共同协同来实现的。

田洪亮表示,星绽OS的定位是类似狭义的Linux,即提供稳定、安全的操作系统内核,期待志同道合的人或者社区基于自己的需求来做发行版。“当前国内做 Linux 发行版的厂商有很多,但做 OS 内核开源的不多,国产 OS 内核也应该有人去探索开源开放的路线。”

星绽OS自启动起,其前沿技术理念吸引中关村实验室、蚂蚁集团、北京大学、南方科技大学等产学研机构的认可,并积极投入研发力量,“产学研用”多方协同攻克难关,共同为中国操作系统事业做贡献。北京大学讲席教授,计算机学院院长胡振江谈到,通过汇聚产学研各方的力量,我们希望能够打破技术瓶颈,尤其是在操作系统和系统软件领域,实现从底层到上层的技术突破。

开发操作系统内核并不是简单的事情,除了构建内核外,还需要系统驱动程序的开发和支持。操作系统的核心作用之一是与硬件兼容并管理各种应用。大部分硬件驱动是由硬件厂商提供的,这些驱动程序确保了硬件设备能够与操作系统无缝协作。“因此,我们选择开源路线的其中关键原因是希望通过开源,吸引更多硬件厂商与星绽OS编写驱动程序和外设支持。” 田洪亮如是说。

目前,星绽OS支持并适配了包括英特尔、AMD以及海光等厂商的X86架构处理器,同时也初步支持了RISC-V处理器。

在兼容性上,星绽OS 支持Linux ABI,目前已实现接入Linux 170 个接口,这意味着现有 Linux一些应用能在星绽上直接运行,开发者无需大动干戈做迁移。星绽OS预计将于2025年在云计算和机密计算等数据中心场景率先应用。

坚持开源开放,星绽OS 汇集产学研创新力量协同共创。与此同时, 星绽OS 从第一天起就面向全球化,使用英文撰写网站、文档、讨论等,因为在田洪亮心里有个更大的期盼“希望与全球开发者共同打造星绽 OS” 。

倪光南院士也期待星绽OS走向全球:“星绽OS采用了Rust内存安全编程语言和全新的框内核OS架构,具备内存安全的优势,有望从根本上解决长期困扰操作系统内存安全问题引起的各种漏洞。希望由中国发起的星绽OS凭借开源的力量,能吸引全球的开发者协同共建,增强中国自主技术的全球影响力。”

最近,一位国外开发者在GitHub发现了星绽OS,于是在HackerNews上介绍星绽OS,引发众多国外开发者热议,甚至有开发者将星绽OS和Linux对比,引发技术人的共鸣,热度一度排在前十。仅仅一周时间,星绽OS 的Star 数增长近一倍, 截止发稿,Star数超1600。星绽之光,正在绽放。

a2d308c5b8055ecc7a2d41d84109d75e.png

官方文档为英文

5a1a2b9cf3c27f88e5c02eb5e329a6b8.png

自研 OS 不易,星绽坚持长期主义

研发操作系统内核是一件需要长期投入的事情,它像是长跑一样,考验开发者持续发展的能力。

星绽OS团队明确列出一份从2024-2030年的路线发展图:2024年,在 x86-64 虚拟机上达到最简可行产品;2026 年,在数据中心的信息安全攸关场景部分代替 Linux;2028 年,在智能系统的人身安全攸关场景部分代替 Linux;2030 年,成为业界公认的安全攸关场景首选开源 OS。

星绽OS除了持续攻克技术挑战外,生态建设也是要点。蚂蚁集团副总裁、蚂蚁技术研究院院长陈文光表示,做出一个操作系统并且广泛用起来,是一件很难的事情。星绽OS 也不例外,通过多方努力,目前星绽OS已初步完成,但到广泛使用形成生态,未来还有很长的路要走,需要汇集更多产学研力量一同构建,共同将星绽OS推到更加可用、实用、好用的未来。

北京大学讲席教授,北京大学计算机学院软件科学与工程系主任谢涛谈到,在生态建设上,要强调“沿途下蛋”( “科研-转化-产业”可持续发展创新生态链的形象比喻),即在建设的过程中先找到一些合适的场景率落地应用,以展现星绽OS不同的阶段性成果。

诚然,Linux 可以说迄今为止最成功的开源软件典范,星绽 OS 不可能说仅用 8 年与之抗衡。 在当前风云变幻的国际形势下,企业对操作系统安全关注度越来越高。因此田洪亮有信心,在一些安全攸关场景上,面向下一代技术路线的星绽 OS 有希望追赶 Linux。

回首研发星绽 OS的心路历程,田洪亮认为“自己十分幸运”。第一份幸运来源于蚂蚁集团的创新土壤和宽松氛围,集团在自研OS没有直接的商业压力,但从业界发展、国际局势来看,自研国产操作系统是有巨大意义和价值的。集团从项目开始就大力支持团队自研星绽 OS。第二份幸运是遇见许多志同道合的伙伴,从零开始研发操作系统,其工作量巨大,需要许多人共同参与进来。星绽OS基于 Rust语言开发、对标Linux的下一代通用操作系统内核,这条目标和路线得到中关村实验室、北京大学、南方科技大学等产学研机构的认可,并积极投入人才协助开发,目前已有近 50 人为星绽OS贡献代码。

路虽远,行则将至;事虽难,做则必成。在蚂蚁集团创新的土地上,星绽 OS  使用新兴的Rust编程语言开发,坚持开源之路,不断扩大产学研朋友圈,携手各方力量积极共创,助力国产操作系统发展之路越走越宽。“星绽 OS的故事肯定不会在2030年就结束,我们还是很长的路要走。”田洪亮说。

欢迎加入星绽 OS :https://github.com/asterinas/asterinas

Logo

为武汉地区的开发者提供学习、交流和合作的平台。社区聚集了众多技术爱好者和专业人士,涵盖了多个领域,包括人工智能、大数据、云计算、区块链等。社区定期举办技术分享、培训和活动,为开发者提供更多的学习和交流机会。

更多推荐