介绍
Fedora IoT 是物联网 (IoT) 和设备的基础 Edge 生态系统。 它是一个安全、不可变且基于映像的操作系统,支持容器化应用程序的部署。 我们将讨论如何跑步 Fedora Raspberry Pi 上的物联网,用于部署无根 Podman 容器。
跑步 Fedora 树莓派上的物联网
先决条件:
- 电脑(带 Fedora)
- SD 卡和 SD 卡读卡器
- 树莓派 3 或 4
从以下位置下载适用于您的 CPU 的 IoT 映像和 CHECKSUM getfedora.org.
下载您的后 Fedora IoT 图像,单击验证您的下载以下载 CHECKSUM 文件。
将 CHECKSUM 文件放在您下载的相同位置 Fedora 物联网图像。
然后,安装 gnupg 和 arm 映像安装程序:
dnf install gnupg2 arm-image-installer
接下来,导入 Fedora的 GPG 密钥来验证您下载的图像:
$ curl -O https://getfedora.org/static/fedora.gpg
然后,验证 CHECKSUM 文件具有良好的签名:
$ gpgv --keyring ./fedora.gpg *-CHECKSUM
您应该在输出中看到类似于以下内容的内容:
$ gpgv --keyring ./fedora.gpg *-CHECKSUM gpgv: Signature made Fri 19 Mar 2021 10:10:28 AM EDT gpgv: using RSA key 8C5BA6990BDB26E19F2A1A801161AE6945719A39 gpgv: Good signature from "Fedora (34) <[email protected]>"
最后,验证下载的校验和以验证签名是否匹配:
$ sha256sum -c *-CHECKSUM
现在,找到 SD 卡的名称。 您可以使用各种工具,但在本文中,我们推荐使用 udisks 命令行工具 udiskctl。 首先,确认您没有将 SD 卡插入 SD 卡读卡器。
然后,输入以下命令:
udisksctl status
输出显示您机器上所有连接的设备。 查看当前显示的设备。 接下来,插入您的 SD 卡并再次输入命令。 记下已添加到先前列表中的设备的名称。
刷写 SD 卡时要小心。 如果您选择了错误的设备,您可能会覆盖您的硬盘驱动器。
将图像闪存到 SD 卡上。
$ arm-image-installer --image=</path/to/fedora_image> --target=<RPi_Version> --media=/dev/<sd_card_device> --addkey=/path/to/pubkey --resizefs
- 图像 – 您下载的图像的文件路径。
- target – 您正在使用的臂板类型(在此 example 它将是 Raspberry Pi 3 或 4)。
- 媒体 – 您确定的 SD 卡路径。
- addkey – 您的 SSH 密钥。
- resizefs – 将图像调整为完整的 SD 卡,除非您要添加另一个分区。
该图像不会有每个配置的用户或密码。
泽泽尔 是一种配置服务,可以在没有物理控制台的情况下部署设备。 使用 Zezere 设置和部署您的设备。
导航 provision.fedoraproject.org,然后单击 Claim Unowned Devices 选项卡,并声明您的设备(即您的 SD 卡)。 单击“主页”选项卡查看您声明的设备,然后单击“SSH 密钥管理”选项卡添加您的 SSH 密钥。 这允许您将 SSH 密钥复制到您的任何 Fedora 物联网设备。 SSH 密钥管理选项卡中生成的密钥是公开的,因此可以在不危及设备安全的情况下共享它们。

返回主页选项卡并单击在您的 SD 卡上提交配置请求以设置配置请求。 从下拉列表中选择 fedora-iot-stable 并单击 Schedule 将您的 SSH 密钥复制到您的 Fedora 物联网设备。
您现在可以运行您的应用程序了。
设置无根 Podman 容器
Fedora IoT 使用 Podman 来开发、管理和运行开放容器计划 (OCI) 容器。 无根容器可以由非特权用户运行,增加了针对黑客的安全性,以确保它们可以安全地在机器之间共享。
安装 slirpfnetns 和 fuse-overlays 以开始设置无根 Podman 容器:
sudo dnf -y install slirp4netns fuse-overlayfs shadow-utils
无根 Podman 容器要求根用户在 /etc/subuid 和 /etc/subgid 文件中列出一系列 UID/GID。 为每个非根用户更新 /etc/subuid 和 /etc/subgid。
sudo usermod --add-subuids START-RANGE --add-subgids START-RANGE USERNAME
- START – 起始 UID(例如 1000)
- RANGE——你的 UID 的范围(例如,如果你输入 100,那么你的 UID 将在 1000 到 1100 之间)
- USERNAME – 您要更新的用户名。
Podman 现已设置为运行无根容器。
更多设置建议
查看以下资源以了解可以改进容器设置的其他方法:
- 使用 Ansible 配置 Podman 容器
- 使用 systemd 自动更新 Podman 容器