设置 Raspberry Pi - AWS IoT Greengrass
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

设置 Raspberry Pi

按照本主题中的步骤设置 Raspberry Pi 用作您的 AWS IoT Greengrass Core。

提示

AWS IoT Greengrass 还提供了其他选项用于安装 AWS IoT Greengrass Core 软件。例如,您可以使用 Greengrass 设备设置来配置环境并安装最新版本的 AWS IoT Greengrass Core 软件。或者,在支持的 Debian 平台上,您可以使用 APT 软件包管理器 来安装或升级 AWS IoT Greengrass Core 软件。有关更多信息,请参阅安装 AWS IoT Greengrass Core 软件

如果您是首次设置 Raspberry Pi,则必须执行所有这些步骤。否则,可以跳至步骤 9。不过,我们建议您使用步骤 2 中推荐的操作系统为您的 Raspberry Pi 重新创建镜像。

 

  1. 下载并安装 SD 卡格式化程序,例如 SD Memory Card FormatterPiBakery。 将 SD 卡插入到您的计算机中。启动程序并选择已插入 SD 卡的驱动器。可以对 SD 卡执行快速格式化。

  2. 下载 zip 文件格式的 Raspbian Buster 操作系统。

  3. 使用 SD 卡写入工具(例如 Etcher),按照此工具的说明将下载的 zip 文件传输到 SD 上。由于操作系统映像很大,因此,该步骤可能需要一些时间。从您的计算机中弹出 SD 卡,然后将 microSD 卡插入 Raspberry Pi 中。

  4. 对于第一次启动,我们建议您将 Raspberry Pi 连接到监视器 (通过 HDMI)、键盘和鼠标。接下来,将您的 Pi 连接到微型 USB 电源,然后 Raspbian 操作系统将启动。

  5. 您可能需要配置 Pi 的键盘布局,然后再继续。为此,请选择右上方的 Raspberry 图标,再选择 Preferences (首选项),然后选择 Mouse and Keyboard Settings (鼠标和键盘设置)。接下来,在 Keyboard (键盘) 选项卡上,选择 Keyboard Layout (键盘布局),然后选择适当的键盘形式。

  6. 接下来,通过 Wi-Fi 网络将 Raspberry Pi 连接到 Internet 或者通过以太网电缆执行该操作。

    注意

    将 Raspberry Pi 连接到计算机所连接的相同 网络,并确保计算机和 Raspberry Pi 能够访问 Internet,然后再继续。如果在工作环境中或者位于防火墙后面,可能需要将 Pi 和计算机连接到来宾网络,以便两个设备在同一网络上。但是,这种方法可能会断开计算机与本地网络资源(例如 Intranet)的连接。一个解决方案是将 Pi 连接到来宾 Wi-Fi 网络,将计算机连接到来宾 Wi-Fi 网络并且 通过以太网电缆连接到本地网络。在此配置中,计算机应该能够通过来宾 Wi-Fi 网络连接到 Raspberry Pi,并通过以太网电缆连接到本地网络资源。

  7. 您必须设置 Pi 上的 SSH 才能远程连接到它。在您的 Raspberry Pi 上,打开终端窗口并运行以下命令:

    sudo raspi-config

    您将看到以下内容:

    
                            Raspberry Pi Software Configuration Tool (raspi-config) 屏幕截图。

    向下滚动并选择 Interfacing Options,然后选择 P2 SSH。系统提示时,请选择 Yes。(使用 Tab 键后跟 Enter)。 SSH 现在应该已启用。选择 OK (确定)。使用 Tab 键以选择 Finish (完成),然后按 Enter, 如果 Raspberry Pi 未自动重启,请运行以下命令:

    sudo reboot
  8. 在您的 Raspberry Pi 上,在终端中运行以下命令:

    hostname -I

    这将返回您的 Raspberry Pi 的 IP 地址。

    注意

    对于以下内容,如果您收到 ECDSA 密钥指纹消息 (Are you sure you want to continue connecting (yes/no)?),请输入 yes。 Raspberry Pi 的默认密码为 raspberry

    如果您使用的是 macOS,请打开终端窗口并输入以下内容:

    ssh pi@IP-address

    IP-address 是您通过使用 hostname -I 命令获取的 Raspberry Pi 的 IP 地址。

    如果您使用的是 Windows,则需要安装和配置 PuTTY。 展开 Connection (连接),选择 Data (数据),并确保已选择 Prompt (提示):

    
                            PuTTY 窗口,其中已选中提示符。

    接下来,选择 Session (会话),输入 Raspberry Pi 的 IP 地址,然后使用默认设置选择 Open (打开)

    
                            PuTTY 窗口,其中“Host Name (or IP address) (主机名(或 IP 地址))”字段中包含 IP 地址。

    如果显示 PuTTY 安全警报,请选择 Yes (是)

    默认 Raspberry Pi 登录名和密码分别为 piraspberry

    
                            初始 PuTTY 终端窗口。
    注意

    如果计算机使用 VPN 连接到远程网络,则可能难以使用 SSH 从计算机连接到 Raspberry Pi。

  9. 现在,您已准备好为 AWS IoT Greengrass 设置 Raspberry Pi。首先,请从本地 Raspberry Pi 终端窗口或 SSH 终端窗口运行以下命令:

    提示

    AWS IoT Greengrass 还提供了其他选项用于安装 AWS IoT Greengrass Core 软件。例如,您可以使用 Greengrass 设备设置来配置环境并安装最新版本的 AWS IoT Greengrass Core 软件。或者,在支持的 Debian 平台上,您可以使用 APT 软件包管理器 来安装或升级 AWS IoT Greengrass Core 软件。有关更多信息,请参阅安装 AWS IoT Greengrass Core 软件

    sudo adduser --system ggc_user sudo addgroup --system ggc_group
  10. 为了提高 Pi 设备上的安全性,请在启动时在操作系统上启用硬链接和软链接 (symlink) 保护。

    1. 导航到 98-rpi.conf 文件。

      cd /etc/sysctl.d ls
      注意

      如果您没有看到 98-rpi.conf 文件,请按照 README.sysctl 文件中的说明操作。

    2. 使用文本编辑器(如 Leafpad、GNU nano 或 vi)将以下两行添加到文件的末尾。您可能需要使用 sudo 命令以根身份进行编辑(例如,sudo nano 98-rpi.conf)。

      fs.protected_hardlinks = 1 fs.protected_symlinks = 1
    3. 重启 Pi。

      sudo reboot

      在约 1 分钟后,使用 SSH 连接到 Pi,然后运行以下命令来确认更改:

      sudo sysctl -a 2> /dev/null | grep fs.protected

      您现在会看到 fs.protected_hardlinks = 1fs.protected_symlinks = 1

  11. 编辑命令行启动文件,以启用并装载内存控制组。这将允许 AWS IoT Greengrass 设置 Lambda 函数的内存限制。在默认的容器化模式下运行 AWS IoT Greengrass 时也需要 Cgroup。

    1. 导航到您的 boot 目录。

      cd /boot/
    2. 使用文本编辑器打开 cmdline.txt。 将以下内容附加到现有行的末尾,而不是作为新行。

      cgroup_enable=memory cgroup_memory=1
    3. 现在重启 Pi。

      sudo reboot

    您的 Raspberry Pi 现在应该已为 AWS IoT Greengrass 做好准备。

  12. 可选。安装流管理器所需的 Java 8 运行时。此教程不使用流管理器,但它将使用默认情况下启用流管理器的 Default Group creation (默认组创建) 工作流。在部署组之前,使用此命令在核心设备上安装 Java 8 运行时或禁用流管理器。模块 3 中提供了有关禁用流管理器的说明。

    sudo apt install openjdk-8-jdk
  13. 要确保您具有所有必需的依赖项,请从 GitHub 上的 AWS IoT Greengrass 示例存储库下载并运行 Greengrass 依赖项检查程序。 这些命令将在 Downloads 目录中解压和运行依赖项检查程序脚本。

    注意

    如果您运行的是 5.5.41 版的 Raspbian 内核,则依赖项检查程序可能会失败。此版本未正确挂载内存 cgroup。这可能会导致在容器模式下运行的 Lambda 函数失败。

    有关更新内核的更多信息,请参阅 Raspberry Pi 论坛中的在内核升级后未加载的 Cgroup

    cd /home/pi/Downloads mkdir greengrass-dependency-checker-GGCv1.11.x cd greengrass-dependency-checker-GGCv1.11.x wget https://github.com/aws-samples/aws-greengrass-samples/raw/master/greengrass-dependency-checker-GGCv1.11.x.zip unzip greengrass-dependency-checker-GGCv1.11.x.zip cd greengrass-dependency-checker-GGCv1.11.x sudo modprobe configs sudo ./check_ggc_dependencies | more

    在显示 more 的情况下,按 Spacebar 键以显示文本的另一个屏幕。

    重要

    本教程需要 Python 3.7 运行时才能运行本地 Lambda 函数。启用流管理器后,还需要 Java 8 运行时。如果 check_ggc_dependencies 脚本生成提示缺少这些必备运行时的警告,请确保先安装它们,然后再继续。您可以忽略提示缺少其他可选运行时的警告。

    要获得有关 modprobe 命令的信息,请在终端中运行 man modprobe

您的 Raspberry Pi 配置已完成。继续浏览模块 2: 安装 AWS IoT Greengrass Core 软件