適用於:
IoT Edge 1.5
重要
IoT Edge 1.5 LTS 是 支援的版本。 自 2024 年 11 月 12 日起,IoT Edge 1.4 LTS 已結束生命週期。 如果您是舊版,請參閱更新 IoT Edge。
本文提供在 Windows 裝置上註冊和布建適用於 Linux 的 IoT Edge 的逐步指示。
連線到IoT中樞的每個裝置都有一個裝置識別碼,可追蹤雲端到裝置或裝置到雲端通訊。 您可以使用其連線資訊來設定裝置,包括IoT中樞主機名、裝置識別碼,以及裝置用來向IoT中樞驗證的資訊。
本文將逐步引導您完成手動布建,其中您會將單一裝置連線到其 IoT 中樞。 若要手動布建,您可以使用兩個選項之一來驗證IoT Edge裝置:
對稱金鑰:當您在 IoT 中樞中建立新的裝置身分識別時,服務會建立兩個金鑰。 將其中一個金鑰放在裝置上,並在驗證時將金鑰呈現給 IoT 中樞。
此驗證方法可讓您更快開始使用,但並不安全。
X.509 自我簽署:建立兩個 X.509 身分識別憑證,並將其放在裝置上。 當您在IoT中樞中建立新的裝置身分識別時,請從這兩個憑證提供指紋。 當裝置向 IoT 中樞進行驗證時,其會顯示一個憑證,而 IoT 中樞會確認憑證符合其指紋。
此驗證方法更安全,建議用於生產案例。
本文涵蓋使用 X.509 憑證作為驗證方法。 若要使用對稱密鑰,請參閱 使用對稱密鑰在 Windows 裝置上建立和布建適用於 Linux 的 IoT Edge。
注意
如果您需要設定許多裝置,且不想手動布建每個裝置,請使用下列其中一篇文章來瞭解IoT Edge如何與IoT中樞裝置布建服務搭配運作:
必要條件
本文說明如何在 Windows 上註冊 IoT Edge 裝置並安裝適用於 Linux 的 IoT Edge。 這些工作有不同的必要條件,並使用不同的公用程式。 繼續之前,請先確認您符合所有必要條件。
裝置管理工具
您可以使用 Azure 入口網站、Visual Studio Code 或 Azure CLI 來完成註冊裝置的步驟。 每個公用程式都有自己的必要條件,或可能需要安裝:
Azure 訂閱的免費或標準 IoT 中樞。
裝置需求
符合下列最低需求的 Windows 裝置:
系統需求
- Windows 101/11 (專業版、企業版、IoT 企業版)
- 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 虛擬交換器上的 Azure IoT Edge for Linux。
- Windows 桌面版隨附可用於安裝 EFLOW 的預設交換器。 如有需要,您可以建立自己的自訂虛擬交換器。
提示
如果您想要在 Azure IoT Edge for Linux on 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
如需 Azure IoT Edge for Linux on Windows PowerShell 模組的詳細資訊,請參閱 PowerShell 函數參考。
產生裝置身分識別憑證
使用 X.509 憑證進行手動佈建需要 IoT Edge 1.0.10 版或更新版本。
當您使用 X.509 憑證布建 IoT Edge 裝置時,您會使用 裝置身分識別憑證。 此憑證只能用於佈建 IoT Edge 裝置,以及向 Azure IoT 中樞驗證裝置。 此為不會簽署其他憑證的分葉節點。 裝置身分識別憑證與憑證授權單位 (CA) 憑證不同,IoT Edge 裝置會提供給模組或下游裝置進行驗證。
針對 X.509 憑證驗證,系統會以取自裝置身分識別憑證的指紋形式,提供每個裝置的驗證資訊。 這些指紋會在裝置註冊時提供給 IoT 中樞,使服務在裝置連線時可以辨識裝置。
如需如何在 IoT Edge 裝置中使用 CA 憑證的詳細資訊,請參閱了解 Azure IoT Edge 如何使用憑證。
若要使用 X.509 手動佈建,您需要下列檔案:
兩個裝置身分識別憑證,具有 .cer 或 .pem 格式的相符私密金鑰憑證。 您需要兩個裝置身分識別憑證來進行憑證輪替。 最佳做法是備妥兩種不同的裝置身分識別憑證,且二者的到期日相異。 如果一個憑證到期,另一個仍有效,您就有時間輪替到期的憑證。
其中一組憑證和金鑰檔案會提供給 IoT Edge 執行階段。 當您建立裝置身分識別憑證時,請將憑證一般名稱 (CN) 設為您希望裝置在 IoT 中樞擁有的裝置識別碼。
取自這兩個裝置身分識別憑證的指紋。 註冊 IoT Edge 裝置時,IoT 中樞需要兩種指紋。 您只能使用一個憑證進行註冊。 若要使用單一憑證,請在註冊裝置時,為主要和次要指紋設定相同的憑證指紋。
指紋值為 SHA-1 雜湊的 40 十六進位字元,或 SHA-256 雜湊的 64 十六進位字元。 在裝置註冊時,這兩個指紋都會提供給 IoT 中樞。
從憑證擷取指紋的其中一種方式是使用下列 openssl 命令:
openssl x509 -in <certificate filename>.pem -text -fingerprint指紋包含在此命令的輸出中。 例如:
SHA1 Fingerprint=D2:68:D9:04:9F:1A:4D:6A:FD:84:77:68:7B:C6:33:C0:32:37:51:12
如果沒有憑證可以使用,則可建立示範憑證來測試 IoT Edge 裝置功能。 依照該文章中的指示來設定憑證建立腳本、建立根 CA 憑證,以及建立 IoT Edge 裝置身分識別憑證。 若要進行測試,在 IoT 中樞註冊裝置時,您可以為主要和次要指紋值建立單一裝置身分識別憑證,並使用相同的指紋。
登記裝置
您可以根據喜好,使用 Azure 入口網站、Visual Studio Code 或Azure CLI來註冊裝置。
在 Azure 入口網站的 IoT 中樞中,IoT Edge 裝置與未啟用邊緣的 IoT 裝置是分開建立及管理的。
登入 Azure 入口網站,然後瀏覽至 IoT 中樞。
在資源功能表中,展開 [ 裝置管理 ] 群組,然後選取 [ 裝置],然後從命令行選取 [ 新增裝置 ]。
在 [建立裝置] 頁面上,提供下列資訊:
- 建立描述性裝置識別碼。 記下此裝置識別碼,因為您稍後會用到。
- 核取 [IoT Edge 裝置] 核取方塊。
- 選取 [X.509 自我簽署] 作為 [驗證類型]。
- 提供主要和次要身分識別憑證指紋。 指紋值為 SHA-1 雜湊的 40 十六進位字元,或 SHA-256 雜湊的 64 十六進位字元。 Azure 入口網站僅支援十六進位值。 在入口網站中輸入指紋之前,請先從指紋值中移除資料行分隔符號和空格。 例如,若為
D2:68:D9:04:9F:1A:4D:6A:FD:84:77:68:7B:C6:33:C0:32:37:51:12,請輸入D268D9049F1A4D6AFD8477687BC633C032375112。
提示
如果您要測試並使用一個憑證,可以針對主要和次要指紋使用相同的憑證。
選取 [儲存]。
現在您已在 IoT 中樞內註冊裝置,接著請擷取用來完成安裝及佈建 IoT Edge 執行階段的資訊。
檢視已註冊的裝置並擷取佈建資訊
使用 X.509 憑證驗證的裝置需要其 IoT 中樞名稱、其裝置名稱和其憑證檔案,才能完成 IoT Edge 執行階段的安裝及佈建。
連線至 IoT 中樞且已啟用 Edge 的裝置都列於 [裝置] 頁面。 您可以依裝置類型 IoT Edge 裝置來篩選清單。
安裝 IoT Edge
在目標裝置上部署 Azure IoT Edge for Linux on Windows。
注意
下列 PowerShell 流程概述如何將 IoT Edge for Linux on Windows 部署至本機裝置。 若要使用 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 設定,以確保網際網路連線能力。 如需詳細資訊,請參閱 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 函數。警告
啟用硬體裝置傳遞可能會增加安全性風險。 當適用時,Microsoft 會建議使用來自 GPU 廠商的裝置風險降低驅動程式。 如需詳細資訊,請參閱使用離散裝置指派來部署圖表裝置。
輸入「Y」以接受授權條款。
請根據您的喜好設定,輸入「O」或「R」來切換 [選擇性診斷資料] 開啟或關閉。
部署完成後,PowerShell 視窗會報告 [部署成功]。
成功部署之後,您即可佈建裝置。
使用雲端身分識別來佈建裝置
請使用雲端身分識別和驗證資訊來設定您的裝置。
若要使用 X.509 憑證佈建裝置,您需要 [IoT 中樞名稱]、[裝置識別碼],以及 Windows 主機電腦上 [身分識別憑證] 和 [私密金鑰] 的絕對路徑。
請確定裝置身分識別憑證及其相符的私鑰位於您的目標裝置上。 了解這兩個檔案的絕對路徑。
在您目標裝置的提高權限 PowerShell 工作階段中執行下列命令。 以您自己的值取代預留位置文字。
Provision-EflowVm -provisioningType ManualX509 -iotHubHostname "HUB_HOSTNAME_HERE" -deviceId "DEVICE_ID_HERE" -identityCertPath "ABSOLUTE_PATH_TO_IDENTITY_CERT_HERE" -identityPrivKeyPath "ABSOLUTE_PATH_TO_PRIVATE_KEY_HERE"
如需有關 Provision-EflowVM 命令的詳細資訊,請參閱適用於 IoT Edge for Linux on Windows 的 PowerShell 函數。
確認設定成功
確認已成功在 IoT Edge 裝置上安裝並設定 IoT Edge for Linux on Windows。
使用 PowerShell 工作階段中的下列命令,登入到 IoT Edge for Linux on Windows 虛擬機器:
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中樞模組。
當您建立新的 IoT Edge 裝置時,它會在 Azure 入口網站中顯示狀態代碼 417 -- The device's deployment configuration is not set 。 此狀態正常,表示裝置已準備好接收模組部署。
解除安裝 IoT Edge for Linux on Windows
如果您想要從裝置中移除 Azure IoT Edge for Linux on Windows,則請使用下列命令。
- 開啟 Windows 上的 [設定]
- 選取 [新增或移除程式]
- 選取 [Azure IoT Edge] 應用程式
- 選取 [解除安裝]
下一步
- 繼續 部署IoT Edge模組 ,以瞭解如何在裝置上部署模組。
- 了解如何在 IoT Edge for Linux on Windows 虛擬機器上管理憑證,並將檔案從主機 OS 傳輸到 Linux 虛擬機器。
- 了解如何設定您的 IoT Edge 裝置,以透過 Proxy 伺服器進行通訊。