共用方式為


教學課程:使用Raspberry Pi 映像 IoT 中樞的 Azure 裝置更新

Azure IoT 中樞裝置更新支援映像型、套件型和指令碼型更新。 本教學課程示範在Raspberry Pi 3 B+ 面板上使用 Yocto 映像進行 IoT 中樞 更新的端對端映像型裝置更新。

映射更新會對裝置的結束狀態提供高度的信心,而且不會對套件或腳本型更新造成相同的套件和相依性管理挑戰。 在生產階段前與生產環境之間復寫映像更新的結果,或輕鬆地採用 A/B 故障轉移模型會比較容易。

在本教學課程中,您已:

  • 下載並安裝映像更新。
  • 將標籤指派給IoT裝置。
  • 匯入映像更新。
  • 部署映像更新。
  • 檢視更新部署歷程記錄。

必要條件

  • 使用IoT中樞設定的裝置更新帳戶和實例。

  • 透過乙太網路連線到硬體的 Raspberry Pi 3 IoT 面板,可下載並擷取圖像檔並控制裝置。

    注意

    本教學課程中的映像更新已在Raspberry Pi B3面板上驗證。

註冊裝置並取得 連接字串

將裝置新增至IoT中樞中的裝置登錄,並取得裝置產生的連接字串 IoT 中樞。

  1. Azure 入口網站 中,開啟與您的裝置更新實例相關聯的IoT中樞頁面。
  2. 在左側瀏覽窗格中,選取 [裝置管理>裝置]。
  3. 在 [ 裝置] 頁面上,選取 [ 新增裝置]。
  4. 在 [裝置識別碼] 下,輸入裝置的名稱。 確定已 選取 [自動產生金鑰 ] 複選框。
  5. 選取儲存。 裝置會出現在 [裝置] 頁面上的清單中
  6. 在 [ 裝置] 頁面上,選取您註冊的裝置。
  7. 在裝置頁面上,選取 [連接字串][主要密鑰] 旁的 [複製] 圖示。 儲存此裝置 連接字串,以在設定裝置更新代理程式時使用。

注意

為了示範目的,本教學課程會使用裝置 連接字串 來驗證並連線到IoT中樞。 針對生產案例,最好使用模組身分識別和 IoT身分識別服務 來布建裝置。 如需詳細資訊,請參閱 裝置更新代理程式布建

設定 Raspberry Pi

Tutorial_RaspberryPi3.zip檔案具有教學課程所需的所有檔案。 從 GitHub 裝置更新發行頁面上最新版本的 [資產] 區段下載檔案,然後將它解壓縮。

在擷 取的 Tutorial_RaspberryPi3 資料夾中,您可以在Raspberry Pi面板上閃爍的基底映像是 adu-base-image-raspberrypi3.wic。 基底映像使用以 3.4.4 版為基礎的 Yocto 組建。 映像具有裝置更新代理程式和 SWUpdate,可啟用裝置更新雙分割區更新。 如需 Yocto 層的詳細資訊,請參閱 使用 Yocto 專案建置以裝置更新代理程式的自定義 Linux 型系統。

您透過裝置更新匯入的更新檔案如下:

  • SWUpdate 檔案 adu-update-image-raspberrypi3-1.2.0.swu
  • 自訂 SWUpdate 腳稿 example-a-b-update.sh
  • 指令清單 EDS-ADUClient.yocto-update.1.2.0.importmanifest.json

使用 bmaptool 來快閃 SD 記憶卡

重要

適用於 IoT 中樞 軟體的 Azure 裝置更新受限於下列授權條款:

使用代理程式之前,請先閱讀授權條款。 代理程式安裝和使用構成接受這些條款。 如果您不同意授權條款,請勿使用裝置更新代理程式。

使用OS閃爍工具,將裝置更新基底映射安裝在您在Raspberry Pi裝置中使用的 SD 記憶卡上。 下列指示會使用 bmaptool 快閃到 SD 記憶卡。 將 <device> 佔位元取代為您的裝置名稱, <path to image> 並將佔位元取代為下載映射檔的路徑。

  1. bmap-tools如果您沒有公用程式,請安裝公用程式。

    sudo apt-get install bmap-tools
    
  2. 在 /dev找出 SD 記憶卡路徑。 路徑看起來應該類似 /dev/sd*/dev/mmcblk*。 您可以使用 dmesg 公用程式來協助找出正確的路徑。

  3. 在快閃之前,請先卸載所有裝載的分割區。

    sudo umount /dev/<device>
    
  4. 確定您有裝置的寫入權限。

    sudo chmod a+rw /dev/<device>
    
  5. 快閃 SD 記憶卡。

    sudo bmaptool copy <path to image> /dev/<device>
    

    提示

    為了加快閃爍速度,您可以下載 bimap 檔案和圖像檔,並將其放在相同的目錄中。

在 Raspberry Pi 上設定裝置更新代理程式

  1. 請確定Raspberry Pi已連線到網路。

  2. 使用 PowerShell 視窗中的下列命令,保護殼層 (SSH) 進入 Raspberry Pi:

    ssh raspberrypi3 -l root
    

建立裝置更新組態檔

裝置更新 du-config.jsondu-diagnostics-config.json 組態檔必須位於裝置上。 若要建立檔案,請在登入Raspberry Pi的終端機中執行下列命令。

  1. 若要建立 du-config.json 檔案或開啟檔案以進行編輯,請執行下列命令:

    nano /adu/du-config.json
    
  2. 編輯器會 開啟du-config.json 檔案。 如果您要建立檔案,則為空白。 將下列程式代碼複製並貼到檔案中,以您裝置的任何必要設定取代範例值。 將範例connectionData字串取代為您在裝置註冊步驟中複製的裝置 連接字串。

    {
       "schemaVersion": "1.0",
       "aduShellTrustedUsers": [
          "adu",
          "do"
       ],
       "manufacturer": "contoso",
       "model": "virtual-vacuum-v2",
       "agents": [
          {
          "name": "main",
          "runas": "adu",
          "connectionSource": {
             "connectionType": "string",
             "connectionData": "HostName=<hub_name>.azure-devices.net;DeviceId=<device_id>;SharedAccessKey=<device_key>" 
          },
          "manufacturer": "contoso",
          "model": "virtual-vacuum-v2"
          }
       ]
    }  
    
  3. Ctrl+X 結束編輯器,然後輸入 y 以儲存變更。

  4. 使用類似的命令建立 du-diagnostics-config.json 檔案。 建立並開啟檔案:

    nano /adu/du-diagnostics-config.json
    
  5. 將下列 du-diagnostics-config.json 程式代碼複製並貼到 檔案中。 這些值是預設的 Device Update 記錄位置,而且只有在您的設定與預設值不同時,才需要變更它們。

    {
       "logComponents":[
          {
             "componentName":"adu",
             "logPath":"/adu/logs/"
          },
          {
             "componentName":"do",
             "logPath":"/var/log/deliveryoptimization-agent/"
          }
       ],
       "maxKilobytesToUploadPerLogPath":50
    }
    
  6. Ctrl+X 結束編輯器,然後輸入 y 以儲存變更。

  7. 使用下列命令來顯示位於 /adu/ 目錄中的檔案。 您應該會看到這兩個組態檔。

    ls -la /adu/
    
  8. 使用下列命令重新啟動裝置更新系統精靈,並確定已套用設定。

    systemctl start deviceupdate-agent
    
  9. 執行下列命令來檢查代理程式是否為即時:

    systemctl status deviceupdate-agent
    

    狀態應該會顯示為作用中和綠色。

聯機到 IoT 中樞 中的裝置,並新增群組標籤

  1. 裝置更新實例的 [Azure 入口網站 IoT 中樞] 頁面上,從左側導覽中選取 [裝置管理>裝置]。

  2. 在 [ 裝置] 頁面上,選取裝置的名稱。

  3. 在裝置頁面頂端,選取 [裝置對應項]。

  4. 在 [裝置對應項] 頁面的 [裝置"properties"對應項] 區段底下"reported",尋找您裝置的Linux核心版本。

    對於尚未從裝置更新接收更新的新裝置, DeviceManagement:DeviceInformation:1.swVersion 屬性值代表在裝置上執行的韌體版本。 套用裝置更新之後, AzureDeviceUpdateCore:ClientMetadata:4.installedUpdateId 屬性值代表韌體版本。

    基底和更新映像檔名的格式為 adu-image type-image-machine-version<><<> number。<>擴充功能>。 請注意匯入更新時要使用的版本號碼。

新增群組標籤

裝置更新會根據其指派的標籤和相容性屬性,自動將裝置組織成群組。 每個裝置只能屬於一個群組,但群組可以有多個子群組來排序不同的裝置類別。 如需標籤和群組的詳細資訊,請參閱管理裝置群組

  1. 在裝置對應項中,將現有裝置更新標籤設定為 null,然後新增下列新的 Device Update 群組標籤,以刪除任何現有的 Device Update 標籤。 如果您使用模組身分識別搭配裝置更新代理程式,請在模組身分識別對應項中新增標記,而不是裝置對應項。

    "tags": {
        "ADUGroup": "<CustomTagValue>"
    },
    

    下列螢幕快照顯示檔案中要新增標記的位置。

    顯示具有標籤資訊的對應項螢幕快照。

  2. 選取儲存

匯入更新

  1. 裝置更新實例的 [Azure 入口網站 IoT 中樞] 頁面上,從左側導覽中選取 [裝置管理> Updates]。

  2. 在 [ 更新] 頁面上,選取 [ 匯入新的更新]。

  3. 在 [匯入更新] 頁面上,選取 [從記憶體容器選取]。

  4. 在 [ 記憶體帳戶 ] 頁面上,選取現有的記憶體帳戶,或選取 [儲存體帳戶] 來建立新的帳戶

  5. 在 [ 容器] 頁面上,選取現有的容器,或選取 [容器] 來建立新的容器。 您可以使用容器來暫存更新檔案以進行匯入。

    顯示記憶體帳戶和容器的螢幕快照。

    提示

    若要避免不小心從先前的更新匯入檔案,請在每次匯入更新時使用新的容器。 如果您未使用新的容器,請務必從現有的容器中刪除任何檔案。

  6. 在容器頁面上,選取 [ 上傳]。 拖放,或瀏覽至並選取您下載Tutorial_RaspberryPi3資料夾中的下列更新檔案

    • adu-update-image-raspberrypi3-1.2.0.swu
    • example-a-b-update.sh
    • EDS-ADUClient.yocto-update.1.2.0.importmanifest.json
  7. 選取上傳。 上傳之後,檔案會出現在容器頁面上。

  8. 在容器頁面上,檢閱並選取要匯入的檔案,然後選取 [選取]。

    顯示選取上傳檔案的螢幕快照。

  9. 在 [ 匯入更新] 畫面上,選取 [ 匯入更新]。

    顯示匯入更新的螢幕快照。

匯入程式隨即開始,畫面會切換至 [ 更新] 畫面。 匯入成功之後,它會出現在 [ 更新] 索引標籤上。如需匯入程式的詳細資訊,請參閱 將更新匯入至裝置更新

顯示作業狀態的螢幕快照。

選取裝置群組

您可以使用套用至裝置的群組標籤,將更新部署至裝置群組。 選取 [更新] 頁面頂端的 [群組和部署] 索引卷標,以檢視群組和部署清單以及更新合規性圖表。

更新合規性圖表顯示各種合規性狀態的裝置計數:最新的更新有新的更新可用更新進行中。 如需詳細資訊,請參閱裝置更新合規性

在 [組名] 底下,您會看到連線至此 IoT 中樞的裝置及其可用更新的所有裝置群組清單,以及 [狀態] 底下部署更新的連結。 不符合群組裝置類別需求的任何裝置都會出現在對應的無效群組中。 如需標籤和群組的詳細資訊,請參閱管理裝置群組

您應該會看到包含您在本教學課程中設定之裝置的裝置群組,以及群組中裝置的可用更新。 您可能需要重新整理網頁。 若要從此檢視將最佳的可用更新部署到群組,請選取 群組旁的 [部署 ]。

顯示更新合規性檢視的螢幕快照。

部署更新

  1. 在 [群組詳細數據] 頁面上,選取 [目前部署] 索引卷標,然後在 [可用更新] 區段中選取 [所需更新] 旁的 [部署]。 群組的最佳可用更新會以最佳醒目提示表示

    顯示選取更新的螢幕快照。

  2. 在 [ 建立部署] 頁面上,排程您的部署立即或未來啟動,然後選取 [ 建立]。

    顯示建立部署的螢幕快照。

    提示

    根據預設,開始日期和時間是目前時間起算 24 小時。 如果您想要更快開始部署,請務必選取不同的日期和時間。

  3. 在 [部署詳細資料] 下方,[狀態] 會變成 [作用中]。 在 [可用的更新] 下,選取的更新會標示為 [部署]。

    顯示部署為 [作用中] 的螢幕快照。

  4. 在 [ 更新] 頁面上,檢視合規性圖表,以查看更新目前正在進行中。 裝置成功更新之後,您的合規性圖表和部署詳細數據會更新以反映該狀態。

    顯示更新成功的螢幕快照。

檢視更新部署歷程記錄

若要檢視部署歷程記錄:

  1. 選取 [群組詳細數據] 頁面頂端的 [部署歷程記錄] 索引標籤,然後選取您所建立部署旁邊的詳細數據連結。

    顯示部署歷程記錄的螢幕快照。

  2. 在 [ 部署詳細數據] 頁面上,選取 [重新 整理] 以檢視最新的狀態詳細數據。

    顯示部署詳細數據的螢幕快照。

清除資源

當您不再需要為本教學課程建立的資源時,您可以將其刪除。

  1. Azure 入口網站 中,流覽至包含資源的資源群組。
  2. 若要刪除群組中的所有資源,您可以選取 [刪除資源群組]
  3. 如果您只想要刪除部分資源,請使用複選框來選取資源,然後選取 [ 刪除]。

下一步