共用方式為


使用 TPM 大規模建立和佈建 IoT Edge for Linux on Windows 裝置

適用於: IoT Edge 1.4 核取記號 IoT Edge 1.4

重要

IoT Edge 1.5 LTS 和 IoT Edge 1.4 為支援的版本 (部分機器翻譯)。 IoT Edge 1.4 LTS 於 2024 年 11 月 12 日結束生命週期。 如果您是舊版,請參閱更新 IoT Edge

本文使用信任平台模組 (TPM) 來提供自動佈建 Azure IoT Edge for Linux on Windows 裝置的指示。 您可以使用 Azure IoT 中樞裝置佈建服務自動佈建 Azure IoT Edge 裝置。 如果您不熟悉自動佈建程序,請先檢閱佈建概觀再繼續。

本文概述兩種方法。 請根據您的解決方案架構選取您的喜好設定:

  • 使用實體 TPM 硬體在 Windows 裝置上自動佈建 Linux。
  • 使用模擬 TPM 在 Windows 裝置上自動佈建 Linux。 我們僅建議將此方法作為測試案例。 模擬 TPM 不會提供與實體 TPM 相同的安全性。

工作如下所示:

  • 安裝 IoT Edge for Linux on Windows。
  • 從您的裝置擷取 TPM 資訊。
  • 建立裝置的個別註冊。
  • 使用裝置的 TPM 資訊佈建您的裝置。

必要條件

雲端資源

  • 使用中的 IoT 中樞
  • Azure 中的 IoT 中樞裝置佈建服務執行個體,其與您的 IoT 中樞連結

裝置需求

符合下列最低需求的 Windows 裝置:

  • 系統需求

    • Windows 101/11 (專業版、企業版、IoT 企業版)
    • Windows Server 20191/2022
      1 Windows 10 和 Windows Server 2019 最低組建為 17763 版,且須安裝所有截至目前所有更新。
  • 硬體需求

    • 最小可用記憶體:1 GB
    • 最小可用磁碟空間:10 GB
  • 虛擬化支援

  • 網路支援

    • Windows Server 不會隨附預設交換器。 您需要先建立虛擬交換器,才能將 EFLOW 部署至 Windows Server 裝置。 如需詳細資訊,請參閱在 Windows 上建立適用於 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 虛擬機器:

  1. 將目標裝置上的執行原則設定為 AllSigned。 您可以使用下列命令,在提升權限的 PowerShell 提示字元中檢查目前的執行原則:

    Get-ExecutionPolicy -List
    

    如果 local machine 的執行原則不是 AllSigned,則您可以使用下列項目來設定執行原則:

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    

如需 Azure IoT Edge for Linux on Windows PowerShell 模組的詳細資訊,請參閱 PowerShell 函式參考

注意

當您搭配裝置佈建服務並使用 TPM 證明時,需要 TPM 2.0。

當您使用 TPM 時,僅可建立個別裝置佈建服務註冊,無法建立群組裝置佈建服務註冊。

安裝 IoT Edge

在目標裝置上部署 Azure IoT Edge for Linux on Windows。

注意

下列 PowerShell 流程概述如何將 IoT Edge for Linux on Windows 部署至本機裝置。 若要使用 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_4_LTS_X64" -OutFile $msiPath
      
    • ARM64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_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 設定,以確保網際網路連線能力。 如需詳細資訊,請參閱 AzEFLOW-DNS

    您可以將 GPU 指派給部署,以啟用 GPU 加速的 Linux 模組。 若要獲取這些功能的存取權,您必須安裝 Azure IoT Edge for Linux on Windows 的 GPU 加速中詳述的必要條件。

    若要使用 GPU 傳遞,請將 gpuNamegpuPassthroughTypegpuCount 參數新增至 Deploy-Eflow 命令。 如需所有可用的選擇性參數資訊,請參閱適用於 IoT Edge for Linux on Windows 的 PowerShell 函數

    警告

    啟用硬體裝置傳遞可能會增加安全性風險。 當適用時,Microsoft 會建議使用來自 GPU 廠商的裝置風險降低驅動程式。 如需詳細資訊,請參閱使用離散裝置指派來部署圖表裝置

  5. 輸入「Y」以接受授權條款。

  6. 請根據您的喜好設定,輸入「O」或「R」來切換 [選擇性診斷資料] 開啟或關閉。

  7. 部署完成後,PowerShell 視窗會報告 [部署成功]

    成功部署會在訊息結束時顯示 [部署成功],PNG 圖片。

    成功部署之後,您即可佈建裝置。

有一些步驟可讓您的裝置做好準備,以使用 TPM 進行佈建。 準備裝置時,請讓部署保持開啟狀態。 您稍後會在文章中返回部署中。

啟用 TPM 傳遞

IoT Edge for Linux on Windows VM 可啟用或停用 TPM 功能。 預設此功能為停用。 啟用此功能時,VM 可存取主機電腦的 TPM。

  1. 在提高權限工作階段中開啟 PowerShell。

  2. 如果您尚未進行,請在您的裝置上將執行原則設定為 AllSigned,讓您得以在 IoT Edge for Linux on Windows PowerShell 函式上執行。

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    
  3. 開啟 TPM 功能。

    Set-EflowVmFeature -feature 'DpsTpm' -enable
    

從您的裝置擷取 TPM 資訊

若要佈建裝置,您需要 TPM 晶片的簽署金鑰,以及裝置的註冊識別碼。 您可將此資訊提供給裝置佈建服務的執行個體,以便在其嘗試連線時讓服務得以辨識裝置。

簽署金鑰針對各 TPM 晶片唯一。 此金鑰會透過與其相關聯的 TPM 晶片製造商取得。 例如,您可以建立簽署金鑰的 SHA-256 雜湊,來衍生 TPM 裝置的註冊識別碼。

IoT Edge for Linux on Windows 提供 PowerShell 指令碼,協助從 TPM 擷取此資訊。 若要使用指令碼,請在裝置上遵循下列步驟:

  1. 在提高權限工作階段中開啟 PowerShell。

  2. 執行 命令。

    Get-EflowVmTpmProvisioningInfo | Format-List
    

建立裝置佈建服務註冊

使用 TPM 的佈建資訊,在裝置佈建服務中建立個別註冊。

在裝置佈建服務中建立註冊時,您就有機會宣告初始裝置對應項狀態。 在裝置對應項中,您可以根據解決方案中使用的任何計量 (例如區域、環境、位置或裝置類型) 來設定標記,來將裝置分組。 這些標記會用來建立自動部署

提示

本文中的步驟適用於 Azure 入口網站,但您也可以使用 Azure CLI 建立個別註冊。 如需詳細資訊,請參閱 az iot dps enrollment。 CLI 命令中會使用啟用 Edge 旗標來指定 IoT Edge 裝置的註冊。

  1. Azure 入口網站中,前往 IoT 中樞裝置佈建服務的執行個體。

  2. 在 [設定] 下方,選取 [管理註冊]

  3. 選取 [新增個別註冊],然後完成下列步驟以設定註冊:

    1. 針對 [機制],選取 [TPM]

    2. 提供您從 VM 或實體裝置複製的簽署金鑰註冊識別碼

    3. 視需要提供裝置的識別碼。 如果您未提供裝置識別碼,則會使用註冊識別碼。

    4. 選取 [True] 以宣告您的 VM 或實體裝置為 IoT Edge 裝置。

    5. 選擇您要將裝置連線到的連結 IoT 中樞,或選取 [連結到新的 IoT 中樞]。 您可以選擇多個中樞,然後系統會根據所選取的指派原則,將裝置指派給其中一個中樞。

    6. 視需要將標記值新增至 [初始裝置對應項狀態]。 您可以使用標記將裝置群組設定為模組部署的目標。 如需詳細資訊,請參閱大規模部署 IoT Edge 模組

    7. 選取 [儲存]。

現在此裝置已有註冊,因此 IoT Edge 執行階段可以在安裝期間自動佈建此裝置。

使用雲端身分識別來佈建裝置

  1. 在 Windows 裝置上開啟提升權限的 PowerShell 工作階段。

  2. 使用您從裝置佈建服務執行個體收集的範圍識別碼,來佈建您的裝置。

    Provision-EflowVM -provisioningType "DpsTpm" -scopeId "SCOPE_ID_HERE"
    

    如果您已使用自訂的註冊識別碼註冊裝置,則必須在佈建時指定該註冊識別碼:

    Provision-EflowVM -provisioningType "DpsTpm" -scopeId "SCOPE_ID_HERE" -registrationId "REGISTRATION_ID_HERE"
    

確認安裝成功

確認已成功在 IoT Edge 裝置上安裝並設定 IoT Edge for Linux on Windows。

如果執行階段順利啟動,您可以移至 IoT 中樞,並開始將 IoT Edge 模組部署到您的裝置。

您可以驗證系統是否已使用您在裝置佈建服務中所建立的個別註冊。 移至 Azure 入口網站中您的裝置佈建服務執行個體。 開啟所建立個別註冊的註冊詳細資料。 請注意,註冊狀態是已指派,並且會列出裝置識別碼。

請在您的裝置上使用下列命令,確認 IoT Edge 已成功安裝並啟動。

  1. 使用 PowerShell 工作階段中的下列命令,連線到 IoT Edge for Linux on Windows VM:

    Connect-EflowVm
    

    注意

    唯一允許透過 SSH 連線到 VM 的帳戶是建立該 VM 的使用者。

  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 中樞模組。

解除安裝 IoT Edge for Linux on Windows

如果您想要從裝置中移除 Azure IoT Edge for Linux on Windows,則請使用下列命令。

  1. 開啟 Windows 上的 [設定]
  2. 選取 [新增或移除程式]
  3. 選取 [Azure IoT Edge] 應用程式
  4. 選取 [解除安裝]

下一步

佈建新裝置時,裝置佈建服務註冊程序可讓您同時設定裝置識別碼和裝置對應項標記。 您可以使用自動裝置管理來使用這些值鎖定個別裝置或裝置群組。

了解如何使用 Azure 入口網站大規模部署和監視 IoT Edge 模組,或使用 Azure CLI 執行相同作業。