先来说一个新闻:谷歌前几天(2022.10.14)宣布发布 kataos,它是用于进行机器学习的嵌入式设备的操作系统。kataos 从设计上就具备安全考虑,不但几乎完全是由 rust 实现的,而且是建立在 sel4 微内核的基础之上,sel4 在数学上被证明是安全的,具有保证保密性、完整性和可用性。
关于嵌入式软件的发展方向,说点个人见解:
1)从linux宏内核的粗放型会向微内核的细颗粒控制的方向转变,更强调系统的安全性,一方面内核缩小,一方面各个应用间彼此隔离。
2)从编程语言上,会转向少写bug的语言,当代码很容易堆砌,成本比较低的时候,会更加注重质量,新的编程语言一方面会校验不写bug,另一方面会随着硬件变化自动补充功能,虽然编程语言的发展很难,例如rust十几年了才更被大家所知,但是这是趋势。
3)对于核心程序已经不能满足工具技术来让其正确了,需要对bug零容忍,也就是从正面保证其正确性,而不是靠经验的测试和编码,从数学上就是形式化,但是证明工作量巨大,不过也是趋势。
现在你再去看这段新闻,你会发现不得了,大家想干的事情,谷歌先干了,而且不自己从无到有的造一个,用了已有的sel4(微内核+形式化验证)和rust(新语言)结合。美中不足的是现在还在开发中,只是公布了第一版,但是就像之前谷歌的fuchsia、安卓等一样,代码开放程度还是挺好的,基本不保留。这样我们就可以上我们的惯例了: 代码下载+编译+运行。
1. kataos简介
目前我们使用的很多智能设备收集的个人身份数据——例如人的图像和他们的声音录音等,如果其被恶意软件访问就会有安全问题。所以必须从数学上证明能够保证数据的安全,也就是我们经常说的形式化验证的方法。kataos就是这么一个简单的解决方案来为嵌入式硬件构建可验证的安全系统。
googleresearch 团队已着手通过构建一个可证明的安全平台来解决这个问题,就是上面说的kataos。这是一个正在进行的项目,还有很多事情要做,但我们很高兴能分享一些早期的细节并邀请其他人在平台上进行协作,这样我们就可以构建默认内置安全性的智能环境系统。
sudo apt-get install repomkdir sparrowcd sparrowrepo init -u https://github.com/ambiml/sparrow-manifest -m camkes-manifest.xmlrepo sync -j4
2. 代码介绍
从整体上看,kataos完全借用了开源软件的力量,可以说是攒出来的系统,微内核用现成的sel4,为了在其上面运行rust程序使用了一个开源软件sel4-syscrate,然后跟antmicro公司合作优化了sel4-syscrate,形成了框架,加上了调试模拟和基于硬件的sparrow安全验证运行环境(初始版本未公开)。
下面看官网论坛介绍:
kataos 开源了几个组件,并与 antmicro合作开发了他们的renode 模拟器和相关框架。作为这个新操作系统的基础,我们选择sel4作为微内核,因为它把安全放在首位;它在数学上被证明是安全的,具有保证的机密性、完整性和可用性。通过 sel4camkes 框架,我们还能够提供静态定义和可分析的系统组件。
kataos提供了一个可验证安全的平台来保护用户的隐私,因为应用程序在逻辑上不可能违反内核的硬件安全保护,并且系统组件是可验证安全的。kataos也几乎完全用rust实现,它为软件安全性提供了一个强有力的起点,因为它消除了整个类别的错误,例如一个错误和缓冲区溢出。
当前的 github 版本包含了大部分 kataos 核心部分,包括我们用于 rust 的框架(例如 sel4-sys crate,它提供了 sel4 系统调用 api),一个用 rust 编写的备用根服务器(用于动态系统范围的内存管理) ),以及对 sel4 的内核修改,可以回收根服务器使用的内存。我们与 antmicro合作,使用renode为我们的目标硬件启用 gdb 调试和模拟。
在内部,kataos还能够动态加载和运行在camkes 框架之外构建的第三方应用程序。目前,github上的代码不包含运行这些应用程序所需的组件,但我们希望在不久的将来发布这些功能。
为了完整地证明一个安全的环境系统,我们还为kataos 构建了一个名为sparrow 的参考实现,它将kataos 与一个安全的硬件平台相结合。因此,除了逻辑安全的操作系统内核之外,sparrow还包括一个逻辑安全的信任根,该信任根是使用opentitan在 risc-v 架构上构建的。但是,对于我们的初始版本,我们的目标是使用qemu 在模拟中运行更标准的64 位arm 平台。
我们的目标是开源所有sparrow,包括所有硬件和软件设计。目前,我们刚刚开始在 github 上发布 kataos的早期版本。所以这只是一个开始,我们希望您能与我们一起建立一个智能环境ml 系统始终值得信赖的未来。
camkes-tool : sel4 的 camkes-tool 存储库,增加了支持 kataos 服务的功能capdl : sel4 的 capdl 存储库,添加了 kataos 服务和 kataos 根服务器(替代 capdl-loader-app,用 rust 编写并支持将系统资源移交给 kataos memorymanager 服务)kernel : sel4 的内核,带有用于 sparrow 的 risc-v 平台的驱动程序,并支持回收 kataos 根服务器使用的内存用于在 rust 中开发的kata 框架,以及(最终)kataos 系统服务脚本:支持脚本,包括 build-sparrow.sh大多数 kataos rust crates 位于kata/apps/system/components目录中。通用/共享代码在kata-os-common中:allocator : 建立在链表分配器箱上的堆分配器camkes:支持在 rust 中编写 camkes 组件capdl : 支持读取 capdl-tool 生成的 capdl 规范copyregion : 临时将物理页面映射到线程的 vspace 的助手cspace-slot :插槽分配器的 raii 助手logger : sel4 与 rust logger crate 的集成model : 支持处理 capdl;由 kata-os-rootserver 使用panic:一个特定于 sel4 的恐慌处理程序sel4-config : 为 sel4 内核配置构建胶水sel4-sys : sel4 系统接口和胶水slot-allocator:顶级 cnode 中插槽的分配器
3. 搭建编译环境
3.1 sel4环境安装
由于其使用的sel4微内核,可以先搭建下sel4的,参考 https://docs.sel4.systems/projects/buildsystem/host-dependencies.html sel4微内核入门-代码下载运行及资料
3.2 rust环境安装
然后是rust安装,执行命令:
curl --proto '=https'--tlsv1.2 -ssf https://sh.rustup.rs | shcargo --versionrustup toolchain add nightly-2021-11-05rustup target add --toolchainnightly-2021-11-05-x86_64-unknown-linux-gnu aarch64-unknown-none
3.3 gcc编译器安装
执行:sh scripts/build-sparrow.sh aarch64 会提示编译工具找不到,如下:
打开: https://developer.arm.com/downloads/-/gnu-a
下载后解压到文件夹,然后把路径添加到环境变量path: 例如:在~/.bashrc中加入:export path=$path: /home/xxx/tools/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin
3.4 tempita安装
pip install tempita多次执行sh scripts/build-sparrow.sh aarch64,修正后会出现如下:
表示编译成功,下面就是运行了。
4. 运行
cd build-aarch64./simulate -m raspi3b
修改代码:
重新编译运行,会看到打印出来。
这里的adder项目是camkes的,不是sparrow框架的,上面说过sparrow还没开源,可能是其基于risc-v硬件实现的,还没有用qemu搞。
后记:
本文算是对最新的os技术进行一些探究,这个kataos跟sel4很有渊源,后续会继续研究下。
从各个维度再次介绍Spring Boot定时任务调度
美的运动控制让机械采摘升级更优化
超声成孔成槽检测仪的说明
贴片电感如果坏掉了会有什么现象
出售Agilent E3646A可编程直流电源E3646A
一文浅析KataOS的基础知识
有方科技迎来十五岁生日 发展将开启新的篇章
英特尔拟让台积电生产二代独显DG2
国芯思辰|霍尔开关AH401F(兼容YS188)在洗衣机无刷电机中的应用
华硕宏碁计划停产上网本,英特尔Atom成弃儿
Intel第四代扩展处理器重拾双芯设计
干货!智能照明无线传输2种协议深度对比分析
欧盟开启新一轮电池扶持计划 为何来自亚洲的电池企业被排除在外
家用电器常用灭菌标准和测试方法
5G连接技术越来越重要,将成为全球经济发展的新动能
简析电线电缆在运行时为什么会发热
国企何时才能真正统治中国工业机器人市场?
苹果iOS 12概念设计:更干净的界面、Face ID新用法
手机指纹识别有什么用?
基于LTC6804-2的锂电池SOC应用研究