10 个不稳定版本 (4 个重大更改)
0.9.1 | 2023年11月29日 |
---|---|
0.9.0 | 2023年10月19日 |
0.8.3 | 2023年8月22日 |
0.8.1 | 2023年5月10日 |
0.5.0 | 2022年7月5日 |
#251 在 嵌入式开发 中
每月下载量 38 次
490KB
11K SLoC
Sextant - 用于处理 northstar NPK 容器的工具
Northstar 容器以 NPK 文件格式分发。
NPK 文件包含容器的应用程序逻辑以及挂载和运行容器所需的数据文件。为了便于创建、检查和修改 NPK,northstar 提供了 northstar-sextant
命令行工具。
打包未签名 NPK
使用 pack
命令(来自 northstar-sextant
)创建(打包)NPK。它需要以下输入
- 描述 NPK 的清单文件。
- 包含运行时所需文件的根目录。
打包过程中,文件夹的内容将被复制到 squashfs 映像中,当容器运行时,northstar 运行时会挂载该映像。
例如,以下命令打包了 hello-world
示例容器
$ target/debug/northstar-sextant pack \
--manifest examples/container/hello-world/manifest.yaml \
--root target/release/hello-world \
--out target/northstar/repository
northstar-sextant pack
的输出是单个 NPK 文件
$ ls target/northstar/repository
hello-world-0.0.1.npk
打包已签名 NPK
NPK 可以使用 Ed25519
签名。如果运行时配置为检查 NPK 签名,则缺少或无效签名的容器将被拒绝。要打包 hello-world
示例容器的签名版本,必须提供私钥
$ target/debug/northstar-sextant pack \
--manifest examples/container/hello-world/manifest.yaml \
--root target/release/hello-world \
--key ./examples/keys/northstar.key \
--out target/northstar/repository
生成仓库密钥
要使用 northstar-sextant
签名 NPK,需要一个合适的密钥对。可以使用 northstar-sextant gen-key
命令生成。以下调用在当前目录中创建了一个新的密钥对(repokey.key
和 repokey.pub
)
target/debug/northstar-sextant gen-key --name repokey --out .
私钥 repokey.key
可用于签名 NPK,而公钥 repokey.pub
则由 northstar 运行时用于验证 NPK。
解包 NPK
NPK文件是ZIP文件,其中包含 squashfs映像等元素,该映像将在运行时挂载。为了提取外部的ZIP文件和内部的映像,可以使用 unpack
命令,该命令属于 northstar-sextant
。
要解包 hello-world
示例容器,可以使用 northstar-sextant unpack
。
$ target/debug/northstar-sextant unpack \
--npk ./target/northstar/repository/hello-world-0.0.1.npk \
--out ./hello-world-container
解包的容器可以在输出目录中找到。
$ ls hello-world-container
fs.img manifest.yaml signature.yaml squashfs-root
squashfs-root
目录包含 fs.img
squashfs映像的解包内容。
$ ls hello-world-container/squashfs-root/
dev hello-world lib lib64 proc system
我们可以看到 hello-world
二进制文件以及 manifest.yaml
中提到的空挂载点。
检查NPK文件
要获取已打包NPK的信息,northstar-sextant
提供了inspect
命令。
使用默认设置检查NPK
不使用任何额外参数检查NPK将显示以下信息
- NPK中包含的文件列表
- manifest.yaml的内容
- signature.yaml的内容
- 存储在NPK中的压缩squashfs映像(
fs.img
)中的文件列表
可以使用以下命令检查 hello-world
示例容器
$ northstar-sextant inspect target/northstar/repository/hello-0.0.1.npk
...
使用 --short
参数检查NPK
为了便于将检查作为脚本的一部分执行多个容器,inspect
命令具有 --short
参数。它将检查输出压缩成一行,包含以下信息
- 容器名称
- 容器版本
- NPK格式版本
- 是否为资源容器
使用 --short
标志检查 hello-world
示例容器会得到以下输出
$ northstar-sextant inspect --short hello-world-0.0.1.npk
name: hello-world, version: 0.0.1, NPK version: 0.0.2, resource container: no
依赖项
~15–28MB
~478K SLoC