适用于:
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 10 上,启用 Hyper-V。 有关详细信息,请参阅 安装 Hyper-V。
- 在 Windows Server 上,安装 Hyper-V 角色并创建默认网络交换机。 有关详细信息,请参阅用于 Azure IoT Edge for Linux on Windows 的嵌套虚拟化。
- 在虚拟机上配置嵌套虚拟化。 有关详细信息,请参阅用于 Azure IoT Edge for Linux on Windows 的嵌套虚拟化。
网络支持
- 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 虚拟机:
在目标设备上将执行策略设置为
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 设备。
登录到 Azure 门户 并转到 IoT 中心。
在左窗格中,从菜单中选择 “设备” ,然后选择“ 添加设备”。
在 创建设备上,提供以下信息:
- 创建描述性设备 ID,例如
my-edge-device-1(所有小写)。 复制此设备 ID,因为稍后需要用到。 - 选中“IoT Edge 设备”复选框。
- 选择“对称密钥”作为身份验证类型。
- 使用默认设置自动生成身份验证密钥,将新设备连接到中心。
- 创建描述性设备 ID,例如
选择“保存”。
IoT 中心应会显示你的新设备。
现在已在 IoT Hub 中注册了设备,接下来可以检索用于完成 IoT Edge 运行时安装和预配的预配信息。
查看已注册设备并检索预配信息
使用对称密钥身份验证的设备需要使用其连接字符串来完成 IoT Edge 运行时的安装和预配。 创建设备时,将为 IoT Edge 设备生成连接字符串。 对于 Visual Studio Code 和 Azure CLI,连接字符串将显示在 JSON 输出中。 如果你使用 Azure 门户创建设备,可以在设备本身中找到该连接字符串。 在 IoT 中心选择设备时,它会在设备页上列为 主要连接字符串 。
连接到您的 IoT 中心的启用边缘计算的设备将在 IoT 中心的“设备”页上列出。 如果有多个设备,可以通过选择 Iot Edge 设备 类型来筛选列表,然后选择“ 应用”。
当您准备好设置设备时,您需要连接字符串,该字符串用于将您的物理设备与其在 IoT 集线器中的标识连接起来。 使用对称密钥进行身份验证的设备有自己的连接字符串,可以在门户中复制这些连接字符串。 若要在门户中查找连接字符串,请执行以下步骤:
- 在“设备”页中,从列表中选择 IoT Edge 设备 ID。
- 复制“主连接字符串”或“辅助连接字符串”的值 。 任何一键都是有效的。
安装 IoT Edge
在目标设备上部署 Azure IoT Edge for Linux on Windows。
注意
以下 PowerShell 过程概述了如何在 Windows 上将适用于 Linux 的 IoT Edge 部署到本地设备。 若要使用 PowerShell 部署到远程目标设备,请使用远程 PowerShell 与远程设备建立连接,并在该设备上远程运行这些命令。
在已提升权限的 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 $msiPathARM64
$msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi')) $ProgressPreference = 'SilentlyContinue' Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_5_LTS_ARM64" -OutFile $msiPath
在设备上安装 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"将目标设备上的执行政策设置为
AllSigned,如果尚未设置。 请参阅 PowerShell 先决条件,了解用于检查当前执行策略以及将执行策略设置为AllSigned的命令。创建 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 直通,请将 gpuName、gpuPassthroughType 和 gpuCount 参数添加到
Deploy-Eflow命令中。 有关所有可用的可选参数的信息,请参阅适用于 IoT Edge for Linux on Windows 的 PowerShell 函数。警告
启用硬件设备直通可能会增加安全风险。 Azure 建议使用 GPU 供应商提供的设备缓解驱动程序(如果适用)。 有关详细信息,请参阅使用离散设备分配部署图形设备。
输入 Y 以接受许可条款。
根据偏好,输入 O 或 R 以打开或关闭 可选诊断数据 。
部署完成后,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 设备上。
在 PowerShell 会话中使用以下命令登录到 Windows 虚拟机上的 IoT Edge for Linux:
Connect-EflowVm注意
唯一被允许通过 SSH 登录到虚拟机的帐户是创建该虚拟机的用户。
登录后,使用以下 Linux 命令检查正在运行的 IoT Edge 模块的列表:
sudo iotedge list如果需要对 IoT Edge 服务进行故障排除,请使用以下 Linux 命令。
检索服务日志。
sudo iotedge system logs使用
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,请使用以下步骤。
- 在 Windows 上打开 Settings。
- 选择“添加或删除程序”。
- 选择 Azure IoT Edge 应用。
- 选择卸载。
后续步骤
- 转到部署 IoT Edge 模块,了解如何将模块部署到设备上。
- 了解如何在 IoT Edge for Linux on Windows 虚拟机上管理证书,以及如何将文件从主机 OS 传输到 Linux 虚拟机。
- 了解如何将 IoT Edge 设备配置为通过代理服务器进行通信。