使用对称密钥创建和预配 IoT Edge for Linux on Windows 设备

适用于:IoT Edge 1.5 勾选标记 IoT Edge 1.5

重要

IoT Edge 1.5 LTS 是受支持的版本。 IoT Edge 1.4 LTS 于 2024 年 11 月 12 日终止。 如果使用的是早期版本,请参阅 Update IoT Edge

本文提供了有关注册和预配 IoT Edge for Linux on Windows 设备的端到端说明。

连接到 IoT 中心的每个设备都有一个设备 ID,用于跟踪云到设备或设备到云的通信。 可以使用设备连接信息来配置设备,这些信息包括 IoT 中心主机名、设备 ID 以及设备用于向 IoT 中心进行身份验证的信息。

本文中的步骤演示了一个名为“手动预配”的过程。在手动预配过程中,你可以将单个设备连接到其 IoT 中心。 对于手动预配,可以通过两种方式来验证 IoT Edge 设备:

  • 对称密钥:你在 IoT 中心创建新设备标识时,服务将创建两个密钥。 将其中一个密钥置于设备上,并在进行身份验证时将该密钥提供给 IoT 中心。

    此身份验证方法的入门速度更快,但不太安全。

  • X.509 自签名:创建两个 X.509 标识证书并将其置于设备上。 在 IoT 中心创建新的设备标识时,需要提供两个证书的指纹。 设备在向 IoT 中心进行身份验证时会提供一个证书,IoT 中心会验证该证书是否与其指纹匹配。

    此身份验证方法更加安全,建议用于生产方案。

本文介绍如何使用对称密钥作为身份验证方法。 如果要使用 X.509 证书,请参阅使用 X.509 证书创建和预配 IoT Edge for Linux on Windows 设备

注意

如果需要设置多个设备并不想手动预配每个设备,请使用以下文章之一来了解如何使用 IoT Edge 与 IoT 中心设备预配服务配合使用:

先决条件

本文介绍如何注册 IoT Edge 设备并安装 IoT Edge for Linux on Windows。 这些任务具有不同的先决条件,并使用不同的实用工具。 在继续作之前,请确保满足所有先决条件。

设备管理工具

可以使用 Azure 门户、Visual Studio Code 或 Azure CLI 注册设备。 每个实用工具都有自己的先决条件,或者可能需要安装:

Azure 订阅中的免费或标准 IoT 中心

设备要求

具有以下最低要求的 Windows 设备:

  • 系统要求

    • Windows 101/11(专业版、企业版、IoT Enterprise)
    • Windows Server 20191/2022
      1 Windows 10和Windows Server 2019,最低内部版本为 17763,已安装所有当前累积更新。
  • 硬件要求

    • 最小可用内存:1 GB
    • 最小可用磁盘空间:10 GB
  • 虚拟化支持

  • 网络支持

    • Windows Server不包括默认开关。 需要创建一个虚拟交换机,然后才能将 EFLOW 部署到 Windows Server 设备。
    • Windows桌面版本包括可用于 EFLOW 安装的默认开关。 如果需要,可以创建自己的自定义虚拟交换机。

提示

如果要在适用于 linux 的 Azure IoT Edge Windows 部署中使用 GPU 加速 Linux 模块,请考虑几个配置选项。

你需要根据 GPU 体系结构安装正确的驱动程序,并且可能需要访问 Windows 预览体验计划内部版本。 若要确定配置需求并满足这些先决条件,请参阅 适用于 Azure IoT Edge for Linux on Windows 的 GPU 加速

请确保现在满足 GPU 加速的先决条件。 如果决定在安装过程中需要 GPU 加速,则必须重启安装过程。

开发人员工具

准备目标设备,以便安装 Azure IoT Edge for Linux on Windows 并部署 Linux 虚拟机:

  1. 在目标设备上将执行策略设置为 AllSigned。 可以使用以下命令在提升的 PowerShell 提示符中检查当前执行策略:

    Get-ExecutionPolicy -List
    

    如果local machine的执行策略不是AllSigned,请使用以下命令设置执行策略:

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    

有关 Windows PowerShell 模块上的 Linux Azure IoT Edge的详细信息,请参阅 PowerShell 函数参考

注册您的设备

可以使用 Azure 门户、Visual Studio Code 或 Azure CLI 根据偏好注册设备。

在 Azure 门户的 IoT 中心中,可以与未启用边缘的 IoT 设备分开创建和管理 IoT Edge 设备。

  1. 登录到 Azure 门户 并转到 IoT 中心。

  2. 在左窗格中,从菜单中选择 “设备” ,然后选择“ 添加设备”。

  3. 创建设备上,提供以下信息:

    • 创建描述性设备 ID,例如 my-edge-device-1 (所有小写)。 复制此设备 ID,因为稍后需要用到。
    • 选中“IoT Edge 设备”复选框。
    • 选择“对称密钥”作为身份验证类型。
    • 使用默认设置自动生成身份验证密钥,将新设备连接到中心。
  4. 选择“保存”。

IoT 中心应会显示你的新设备。

现在已在 IoT Hub 中注册了设备,接下来可以检索用于完成 IoT Edge 运行时安装和预配的预配信息。

查看已注册设备并检索预配信息

使用对称密钥身份验证的设备需要使用其连接字符串来完成 IoT Edge 运行时的安装和预配。 创建设备时,将为 IoT Edge 设备生成连接字符串。 对于 Visual Studio Code 和 Azure CLI,连接字符串将显示在 JSON 输出中。 如果你使用 Azure 门户创建设备,可以在设备本身中找到该连接字符串。 在 IoT 中心选择设备时,它会在设备页上列为 主要连接字符串

连接到您的 IoT 中心的启用边缘计算的设备将在 IoT 中心的“设备”页上列出。 如果有多个设备,可以通过选择 Iot Edge 设备 类型来筛选列表,然后选择“ 应用”。

当您准备好设置设备时,您需要连接字符串,该字符串用于将您的物理设备与其在 IoT 集线器中的标识连接起来。 使用对称密钥进行身份验证的设备有自己的连接字符串,可以在门户中复制这些连接字符串。 若要在门户中查找连接字符串,请执行以下步骤:

  1. 在“设备”页中,从列表中选择 IoT Edge 设备 ID。
  2. 复制“主连接字符串”或“辅助连接字符串”的值 。 任何一键都是有效的。

安装 IoT Edge

在目标设备上部署 Azure IoT Edge for Linux on Windows。

注意

以下 PowerShell 过程概述了如何在 Windows 上将适用于 Linux 的 IoT Edge 部署到本地设备。 若要使用 PowerShell 部署到远程目标设备,请使用远程 PowerShell 与远程设备建立连接,并在该设备上远程运行这些命令。

  1. 在已提升权限的 PowerShell 会话中,根据目标设备体系结构运行以下命令之一,以下载 IoT Edge for Linux on Windows。

    • X64/AMD64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_5_LTS_X64" -OutFile $msiPath
      
    • ARM64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_5_LTS_ARM64" -OutFile $msiPath
      
  2. 在设备上安装 IoT Edge for Linux on Windows。

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
    

    通过向安装命令中添加 INSTALLDIR="<FULLY_QUALIFIED_PATH>"VHDXDIR="<FULLY_QUALIFIED_PATH>" 参数,可以指定自定义 IoT Edge for Linux on Windows 安装和 VHDX 目录。 例如,如果要使用 D:\EFLOW 文件夹进行安装,并使用 D:\EFLOW-VHDX 文件夹存放 VHDX,则可以使用以下 PowerShell cmdlet。

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn","INSTALLDIR=D:\EFLOW", "VHDXDIR=D:\EFLOW-VHDX"
    
  3. 将目标设备上的执行政策设置为 AllSigned,如果尚未设置。 请参阅 PowerShell 先决条件,了解用于检查当前执行策略以及将执行策略设置为 AllSigned 的命令。

  4. 创建 IoT Edge for Linux on Windows 部署。 部署将为你创建 Linux 虚拟机并安装 IoT Edge 运行时。

    Deploy-Eflow
    

    提示

    默认情况下,Deploy-Eflow 命令会创建具有 1 GB RAM、1 个 vCPU 核心和 16 GB 磁盘空间的 Linux 虚拟机。 但是,VM 所需的资源高度依赖于部署的工作负荷。 如果 VM 没有足够的内存来支持工作负荷,则无法启动。

    可以使用命令的可选参数自定义虚拟机的可用资源 Deploy-Eflow 。 需要此自定义项才能在具有最低硬件要求的设备上部署 EFLOW。

    例如,以下命令创建具有 1 个 vCPU 核心、1 GB RAM(以 MB 表示)和 2 GB 磁盘空间的虚拟机:

    Deploy-Eflow -cpuCount 1 -memoryInMB 1024 -vmDataSize 2
    

    有关所有可用的可选参数的信息,请参阅适用于 IoT Edge for Linux on Windows 的 PowerShell 函数

    警告

    默认情况下,EFLOW Linux 虚拟机没有 DNS 配置。 使用 DHCP 的部署尝试获取 DHCP 服务器传播的 DNS 配置。 检查 DNS 配置以确保 Internet 连接。 有关详细信息,请参阅 AzEFLOW-DNS

    可以为部署分配 GPU,以启用 GPU 加速的 Linux 模块。 若要获取这些功能的访问权限,需要安装适用于 Azure IoT Edge for Linux on Windows 的 GPU 加速中详细说明的必备组件。

    若要使用 GPU 直通,请将 gpuNamegpuPassthroughTypegpuCount 参数添加到 Deploy-Eflow 命令中。 有关所有可用的可选参数的信息,请参阅适用于 IoT Edge for Linux on Windows 的 PowerShell 函数

    警告

    启用硬件设备直通可能会增加安全风险。 Azure 建议使用 GPU 供应商提供的设备缓解驱动程序(如果适用)。 有关详细信息,请参阅使用离散设备分配部署图形设备

  5. 输入 Y 以接受许可条款。

  6. 根据偏好,输入 OR 以打开或关闭 可选诊断数据

  7. 部署完成后,PowerShell 窗口会报告“部署成功”。

    显示消息末尾的“部署成功”的屏幕截图。

    成功部署后,即可配置设备。

为设备预配其云标识

使用云标识和身份验证信息设置你的设备。

若要使用对称密钥预配设备,需要设备连接字符串

在目标设备上权限提升的 PowerShell 会话中运行以下命令。 将占位符文本替换为你自己的值。

Provision-EflowVm -provisioningType ManualConnectionString -devConnString "PASTE_DEVICE_CONNECTION_STRING_HERE"

有关 Provision-EflowVM 命令的详细信息,请参阅适用于 IoT Edge for Linux on Windows 的 PowerShell 函数

验证成功的配置

验证 Windows 上的 linux IoT Edge是否已成功安装并配置在 IoT Edge 设备上。

  1. 在 PowerShell 会话中使用以下命令登录到 Windows 虚拟机上的 IoT Edge for Linux:

    Connect-EflowVm
    

    注意

    唯一被允许通过 SSH 登录到虚拟机的帐户是创建该虚拟机的用户。

  2. 登录后,使用以下 Linux 命令检查正在运行的 IoT Edge 模块的列表:

    sudo iotedge list
    
  3. 如果需要对 IoT Edge 服务进行故障排除,请使用以下 Linux 命令。

    1. 检索服务日志。

      sudo iotedge system logs
      
    2. 使用 check 工具验证设备的配置和连接状态。

      sudo iotedge check
      

    注意

    在新预配的设备上,你可能会看到与 IoT Edge 中心相关的错误:

    × 生产就绪性:Edge Hub 的存储目录会持久化保存在主机文件系统上- 错误

    无法检查 edgeHub 容器的当前状态

    由于 IoT Edge 中心模块未运行,在新预配的设备上预期会出现此错误。 若要解决此错误,请在 IoT 中心为设备设置模块并创建部署。 为设备创建部署时,会启动设备上的各个模块,包括 IoT Edge Hub 模块。

创建新的IoT Edge设备时,它会在 Azure 门户中显示状态代码 417 - 未设置设备的部署配置。 此状态正常,表示设备已准备好接收模块部署。

卸载适用于 Windows 上的 Linux 的 IoT Edge

若要从设备中删除 Windows 安装上的 Linux Azure IoT Edge,请使用以下步骤。

  1. 在 Windows 上打开 Settings
  2. 选择“添加或删除程序”。
  3. 选择 Azure IoT Edge 应用。
  4. 选择卸载

后续步骤