NoWayOS
ZH
GitHub
菜单关闭

从这里开始

入门

构建 NoWayOS 的开发容器并运行其可点击演示,每一帧都经过检查,无需任何硬件,也无需了解 seL4。

NoWayOS 在一个固定版本的开发容器中构建,因此您的机器本身几乎不需要准备什么。本页带您从零开始,直到运行演示。下一页会在 QEMU 中启动一个真正的 seL4 系统,再后面的一页则会把它放到 Raspberry Pi 5 上。

您需要准备什么

  • Podman 和 GNU Make。Docker 也可以:在每条 make 命令中加上 ENGINE=docker。
  • git,用于克隆代码仓库。
  • 您的机器上无需 Rust,也无需 seL4 工具。 Rust 工具链、Microkit SDK 和 QEMU 都在开发容器中,并固定为确切版本。

在 macOS 上,Podman 在虚拟机中运行容器。只需创建并启动一次,为它分配几个 CPU 和数 GB 内存,例如:

podman machine init --cpus 4 --memory 8192
podman machine start

NoWayOS 在 Apple 芯片(arm64)上开发。在 x86-64 上,开发镜像的软件包同样经过版本固定和审查,但该镜像尚未在那里完成端到端的构建和测试。

给 NoWayOS 一个专属文件夹

开发容器挂载的是您克隆目录的上一级文件夹,这样并排克隆的代码仓库就可以相互依赖着构建。请先为它们建一个文件夹:

mkdir nowayos-work && cd nowayos-work
git clone https://github.com/NoWayOS/nowayos.git
cd nowayos

构建开发容器

make container

这会构建固定版本的开发镜像:Rust 工具链、Microkit SDK、QEMU 和各种检查工具。首次构建需要几分钟(在搭载 Apple 芯片的 Mac 上不到四分钟),生成的镜像约 4.7 GB。每当 tools/container/Containerfile 发生变化,请重新运行它;其他所有目标都会拒绝在过时的镜像上运行,并告诉您原因。

运行演示

make demo

演示是一个小型表单应用,带有一段由轻触、点击和按键组成的脚本化会话。它以主机模拟的方式运行,不涉及 seL4 和 QEMU,并用 NoWayOS 真正的 UI 核心和渲染器绘制每一步的画面。每一帧都会与一张核准图像比对,运行结束时会显示:

demo: PASS - … steps, every frame as approved

只要有任何一帧相差哪怕一个像素,运行就会指出是哪一步,并判定失败。

四处看看

make # every target, with a line on each
make test # unit, property, doc and golden-image tests
make lint # rustfmt, then clippy with warnings as errors

每个目标都在开发容器中运行,并会替您启动容器。代码仓库中的 DEVELOPING.md 列出了全部目标以及代码的布局。

如果出了问题

  • error: … was not built from the current … Containerfile:自您构建以来,容器的定义已经改变。请按消息提示,再次运行 make container。
  • 无法连接 Podman:在 macOS 上,用 podman machine start 启动它的虚拟机。
  • 构建时内存不足:为 Podman 的虚拟机分配更多内存。完整的关卡 make ci 会运行模型检查证明,所需内存远多于演示(检查与证据)。