Bedarfsgerechtes Erstellen und Bereitstellen eines IoT Edge für Linux unter Windows-Geräts mithilfe eines TPM
Gilt für: IoT Edge 1.4
Wichtig
Azure IoT Edge 1.5 LTS und IoT Edge 1.4 sind unterstützte Releases. IoT Edge 1.4 LTS erreicht das Dienstende am 12. November 2024. Wenn Sie ein früheres Release verwenden, finden Sie weitere Informationen unter Aktualisieren von IoT Edge.
Dieser Artikel enthält Anleitungen für die automatische Bereitstellung eines Azure IoT Edge für Linux unter Windows-Geräts mithilfe eines TPM (Trusted Platform Module). Sie können Azure loT Edge-Geräte mit dem Azure loT Hub Device Provisioning Service (Gerätebereitstellungsdienst) automatisch bereitstellen. Wenn Sie mit dem Prozess der automatischen Bereitstellung nicht vertraut sind, lesen Sie die Übersicht zur Bereitstellung, bevor Sie den Vorgang fortsetzen.
In diesem Artikel werden zwei Methodiken beschrieben. Wählen Sie Ihre Präferenz basierend auf der Architektur Ihrer Lösung aus:
- Automatische Bereitstellung eines Linux unter Windows-Geräts mit physischer TPM-Hardware.
- Automatische Bereitstellung eines Linux unter Windows-Geräts mithilfe eines simulierten TPM. Wir empfehlen diese Methodik nur als Testszenario. Ein simuliertes TPM bietet nicht die gleiche Sicherheit wie ein physisches TPM.
Aufgaben:
- Installieren Sie IoT Edge für Linux unter Windows.
- Rufen Sie die TPM-Informationen von Ihrem Gerät ab.
- Erstellen Sie eine individuelle Registrierung für das Gerät.
- Stellen Sie Ihr Gerät mit seinen TPM-Informationen bereit.
Voraussetzungen
Cloudressourcen
- Ein aktiver IoT-Hub
- Eine Instanz des IoT Hub Device Provisioning Service (Gerätebereitstellungsdienst) in Azure, die mit Ihrem IoT-Hub verknüpft ist
- Wenn Sie über keine Instanz des Device Provisioning Service verfügen, können Sie die Anweisungen in den Abschnitten Erstellen eines neuen IoT Hub Device Provisioning Service und Verknüpfen des IoT-Hubs und Ihres Gerätebereitstellungsdiensts der Schnellstartanleitung zum IoT Hub Device Provisioning Service befolgen.
- Nachdem Sie den Device Provisioning-Dienst gestartet haben, kopieren Sie den Wert ID-Bereich von der Seite „Übersicht“. Sie können diesen Wert verwenden, wenn Sie IoT Edge-Runtime konfigurieren.
Geräteanforderungen
Ein Windows-Gerät mit den folgenden Mindestanforderungen:
Systemanforderungen
- Windows 101/11 (Pro, Enterprise, IoT Enterprise)
- Windows Server 20191/2022
1 Windows 10 und Windows Server 2019 ab Build 17763 mit Installation aller aktuellen kumulativen Updates.
Hardwareanforderungen
- Mindestens erforderlicher freier Arbeitsspeicher: 1 GB
- Mindestens erforderlicher freier Speicherplatz: 10 GB
Virtualisierungsunterstützung
- Aktivieren Sie unter Windows 10 Hyper-V. Weitere Informationen finden Sie unter Installieren von Hyper-V unter Windows 10.
- Installieren Sie unter Windows Server die Hyper-V-Rolle, und erstellen Sie einen standardmäßigen Netzwerkswitch. Weitere Informationen finden Sie unter Geschachtelte Virtualisierung für Azure IoT Edge für Linux unter Windows.
- Konfigurieren Sie auf einer VM die geschachtelte Virtualisierung. Weitere Informationen finden Sie unter Geschachtelte Virtualisierung.
Netzwerkunterstützung
- Windows Server umfasst keinen Standardswitch. Bevor Sie EFLOW auf einem Windows Server-Gerät bereitstellen können, müssen Sie einen virtuellen Switch erstellen. Weitere Informationen finden Sie unter Erstellen eines virtuellen Switches.
- Windows Desktop-Versionen umfassen einen Standardswitch, der für die EFLOW-Installation verwendet werden kann. Bei Bedarf können Sie einen benutzerdefinierten virtuellen Switch erstellen.
Tipp
Wenn Sie GPU-beschleunigte Linux-Module in Ihrer Azure IoT Edge für Linux unter Windows-Bereitstellung verwenden möchten, gibt es mehrere Konfigurationsoptionen zu berücksichtigen.
Abhängig von Ihrer GPU-Architektur müssen Sie die richtigen Treiber installieren, und Sie benötigen möglicherweise Zugriff auf einen Windows-Insider-Build. Informationen zum Ermitteln Ihrer Konfigurationsanforderungen und zum Erfüllen dieser Voraussetzungen finden Sie unter GPU-Beschleunigung für Azure IoT Edge für Linux unter Windows.
Nehmen Sie sich jetzt die Zeit, die Voraussetzungen für die GPU-Beschleunigung zu erfüllen. Sie müssen den Installationsvorgang neu starten, wenn Sie sich während der Installation für die Verwendung der GPU-Beschleunigung entscheiden.
Entwicklertools
Bereiten Sie Ihr Zielgerät für die Installation von Azure IoT Edge für Linux unter Windows und die Bereitstellung des virtuellen Linux-Computers vor:
Legen Sie die Ausführungsrichtlinie auf dem Zielgerät auf
AllSigned
fest. Sie können die aktuelle Ausführungsrichtlinie in einer PowerShell-Eingabeaufforderung mit erhöhten Rechten mit dem folgenden Befehl überprüfen:Get-ExecutionPolicy -List
Wenn die Ausführungsrichtlinie von
local machine
nichtAllSigned
ist, können Sie die Ausführungsrichtlinie wie folgt festlegen:Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
Weitere Informationen zum PowerShell-Modul „Azure IoT Edge für Linux unter Windows“ finden Sie in der PowerShell-Funktionsreferenz.
Hinweis
TPM 2.0 ist erforderlich, wenn Sie den TPM-Nachweis beim Device Provisioning Service verwenden.
Wenn Sie ein TPM verwenden, können Sie nur individuelle Registrierungen des Device Provisioning Service erstellen, aber keine Gruppenregistrierungen.
Installieren von IoT Edge
Stellen Sie Azure IoT Edge für Linux unter Windows auf Ihrem Zielgerät bereit.
Hinweis
Das folgende PowerShell-Verfahren beschreibt, wie Sie IoT Edge für Linux unter Windows auf dem lokalen Gerät bereitstellen. Für die Bereitstellung auf einem Remotezielgerät mithilfe von PowerShell können Sie über Remote PowerShell eine Verbindung mit einem Remotegerät herstellen und diese Befehle remote auf dem Gerät ausführen.
Führen Sie in einer erweiterten PowerShell-Sitzung je nach Architektur Ihres Zielgeräts einen der folgenden Befehle aus, um IoT Edge für Linux unter Windows herunterzuladen.
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
Installieren Sie IoT Edge für Linux unter Windows auf Ihrem Gerät.
Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
Sie können benutzerdefinierte Installations- und VHDX-Verzeichnisse für IoT Edge für Linux unter Windows angeben, indem Sie dem Installationsbefehl die Parameter
INSTALLDIR="<FULLY_QUALIFIED_PATH>"
undVHDXDIR="<FULLY_QUALIFIED_PATH>"
hinzufügen. Wenn Sie beispielsweise den Ordner D:\EFLOW für die Installation und D:\EFLOW-VHDX für das VHDX-Verzeichnis verwenden möchten, können Sie dazu das folgende PowerShell-Cmdlet verwenden.Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn","INSTALLDIR=D:\EFLOW", "VHDXDIR=D:\EFLOW-VHDX"
Legen Sie die Ausführungsrichtlinie auf dem Zielgerät auf
AllSigned
fest, wenn dies noch nicht so eingestellt ist. In den PowerShell-Voraussetzungen finden Sie die Befehle, mit denen Sie die aktuelle Ausführungsrichtlinie überprüfen und aufAllSigned
festlegen können.Erstellen Sie die Bereitstellung von IoT Edge für Linux unter Windows. Die Bereitstellung erstellt Ihren virtuellen Linux-Computer und installiert die IoT Edge Runtime automatisch.
Deploy-Eflow
Tipp
Standardmäßig erstellt der Befehl
Deploy-Eflow
Ihren Linux-VM mit 1 GB RAM, 16 vCPU-Kern und 16 GB Speicherplatz. Die Ressourcen, die Ihr VM benötigt, sind jedoch stark von den Workloads abhängig, die Sie bereitstellen. Wenn Ihr VM nicht über genügend Arbeitsspeicher verfügt, um Ihre Workloads zu unterstützen, kann er nicht gestartet werden.Sie können die verfügbaren Ressourcen des VM mithilfe der optionalen Parameter des Befehls
Deploy-Eflow
anpassen. Dies ist erforderlich, um EFLOW auf einem Gerät mit den Mindesthardwareanforderungen bereitzustellen.Mit dem folgenden Befehl beispielsweise wird eine VM mit 1 vCPU-Kern, 1 GB RAM (angegeben in MB) und 2 GB Speicherplatz erstellt:
Deploy-Eflow -cpuCount 1 -memoryInMB 1024 -vmDataSize 2
Informationen zu allen verfügbaren optionalen Parametern finden Sie unter PowerShell-Funktionen für IoT Edge für Linux unter Windows.
Warnung
Standardmäßig hat der virtuelle EFLOW-Linux-Computer keine DNS-Konfiguration. Bei Bereitstellungen mit dem DHCP wird versucht, die vom DHCP-Server weitergegebene DNS-Konfiguration abzurufen. Überprüfen Sie Ihre DNS-Konfiguration, um die Internetkonnektivität sicherzustellen. Weitere Informationen finden Sie unter AzEFLOW-DNS.
Sie können Ihrer Bereitstellung eine GPU zuweisen, um GPU-beschleunigte Linux-Module zu aktivieren. Um Zugriff auf diese Features zu erhalten, müssen Sie die erforderlichen Komponenten installieren, die unter GPU-Beschleunigung für Azure IoT Edge für Linux unter Windows aufgeführt werden.
Wenn Sie GPU-Passthrough verwenden möchten, müssen Sie Ihrem Befehl
Deploy-Eflow
die Parameter gpuName, gpuPassthroughType und gpuCount hinzufügen. Informationen zu allen verfügbaren optionalen Parametern finden Sie unter PowerShell-Funktionen für IoT Edge für Linux unter Windows.Warnung
Das Aktivieren von Hardwaregeräte-Passthrough kann zu einem erhöhten Sicherheitsrisiko führen. Microsoft empfiehlt zur Risikominderung die Installation eines Gerätetreibers, den Sie vom Anbieter Ihrer GPU erhalten. Weitere Informationen finden Sie unter Bereitstellen von Grafikgeräten mit Discrete Device Assignment.
Geben Sie „Y“ ein, um den Lizenzbedingungen zuzustimmen.
Durch die Eingabe von „O“ oder „R“ können Sie Optionale Diagnosedaten bei Bedarf ein- oder ausschalten.
Sobald die Bereitstellung abgeschlossen ist, meldet das PowerShell-Fenster Bereitstellung erfolgreich.
Nach einer erfolgreichen Bereitstellung können Sie Ihr Gerät bereitstellen.
Es gibt einige Schritte, um Ihr Gerät für die Bereitstellung mit TPM vorzubereiten. Lassen Sie Ihre Bereitstellung geöffnet, während Sie Ihr Gerät vorbereiten. Später in diesem Artikel kehren Sie zu Ihrer Bereitstellung zurück.
Aktivieren des TPM-Passthroughs
Die IoT Edge für Linux-VM unter Windows enthält ein TPM-Feature, das aktiviert oder deaktiviert werden kann. Es ist standardmäßig deaktiviert. Wenn dieses Feature aktiviert wurde, kann die VM auf das TPM des Hostcomputers zugreifen.
Öffnen Sie PowerShell in einer Sitzung mit erhöhten Rechten.
Wenn dies noch nicht geschehen ist, legen Sie für die Ausführungsrichtlinie auf Ihrem Gerät
AllSigned
fest, damit Sie die PowerShell-Funktionen von IoT Edge für Linux unter Windows ausführen können.Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
Aktivieren Sie das TPM-Feature.
Set-EflowVmFeature -feature 'DpsTpm' -enable
Abrufen der TPM-Informationen von Ihrem Gerät
Zum Bereitstellen Ihres Geräts benötigen Sie einen Endorsement Key für Ihren TPM-Chip und eine Registrierungs-ID für Ihr Gerät. Sie stellen diese Informationen für Ihre Instanz von Device Provisioning Service bereit, damit der Dienst Ihr Gerät beim Versuch der Verbindungsherstellung erkennen kann.
Der Endorsement Key ist für jeden TPM-Chip eindeutig. Er wird vom zugeordneten TPM-Chiphersteller bezogen. Sie können eine eindeutige Registrierungs-ID für Ihr TPM-Gerät ableiten, indem Sie beispielsweise einen SHA-256-Hash des Endorsement Keys erstellen.
IoT Edge für Linux unter Windows enthält ein PowerShell-Skript zum Abrufen dieser Informationen aus Ihrem TPM. Führen Sie zur Verwendung des Skripts die folgenden Schritte auf Ihrem Gerät aus:
Öffnen Sie PowerShell in einer Sitzung mit erhöhten Rechten.
Führen Sie den Befehl aus.
Get-EflowVmTpmProvisioningInfo | Format-List
Erstellen einer Registrierung für den Device Provisioning Service
Verwenden Sie die Bereitstellungsinformationen Ihres TPM, um eine individuelle Registrierung in Device Provisioning Service (DPS) zu erstellen.
Wenn Sie eine Registrierung in DPS erstellen, haben Sie die Möglichkeit, einen anfänglichen Gerätezwillingsstatus zu deklarieren. Im Gerätezwilling können Sie Tags zum Gruppieren von Geräten nach jeder beliebigen Metrik – z. B. Region, Umgebung, Speicherort oder Gerätetyp – festlegen, die in Ihrer Lösung verwendet wird. Diese Tags werden zum Erstellen von automatischen Bereitstellungen verwendet.
Tipp
Die Schritte in diesem Artikel beziehen sich auf das Azure-Portal. Sie können aber auch individuelle Registrierungen über die Azure CLI erstellen. Weitere Informationen finden Sie unter az iot dps-Registrierung. Verwenden Sie als Teil des CLI-Befehls das Flag edge-enabled (Edge-fähig), um anzugeben, dass die Registrierung für ein IoT Edge-Gerät gilt.
Wechseln Sie im Azure-Portal zu Ihrer Instanz von IoT Hub Device Provisioning Service.
Klicken Sie in Einstellungen auf Registrierungen verwalten.
Wählen Sie Individuelle Registrierung hinzufügen aus, und führen Sie dann die folgenden Schritte zum Konfigurieren der Registrierung aus:
Klicken Sie unter Mechanismus auf die Option TPM.
Geben Sie den Endorsement Key und die Registrierungs-ID an, den bzw. die Sie von Ihrer VM oder Ihrem physischen Gerät kopiert haben.
Geben Sie bei Bedarf eine ID für Ihr Gerät an. Wenn Sie keine Geräte-ID angeben, wird die Registrierungs-ID verwendet.
Wählen Sie True aus, um zu deklarieren, dass Ihre VM oder Ihr physisches Gerät ein IoT Edge-Gerät ist.
Wählen Sie die verknüpfte IoT Hub-Instanz, mit der Sie Ihr Gerät verbinden möchten, oder Link to new IoT Hub (Mit neuer IoT Hub-Instanz verknüpfen) aus. Sie können mehrere Hubs auswählen. Das Gerät wird dann je nach gewählter Zuweisungsrichtlinie einem dieser Hubs zugewiesen.
Fügen Sie bei Bedarf einen Tagwert zu Anfänglicher Status von Gerätezwilling hinzu. Sie können mithilfe von Tags Gruppen von Geräten als Ziel für die Modulbereitstellung festlegen. Weitere Informationen finden Sie unter Bedarfsgerechtes Bereitstellen von IoT Edge-Modulen mithilfe des Azure-Portals.
Wählen Sie Speichern.
Nachdem nun eine Registrierung für dieses Gerät vorhanden ist, kann die IoT Edge-Runtime das Gerät während der Installation automatisch bereitstellen.
Bereitstellen des Geräts mit seiner Cloud-Identität
Öffnen Sie auf dem Windows-Gerät eine PowerShell-Sitzung mit erhöhten Rechten.
Stellen Sie Ihr Gerät unter Angabe der Bereichs-ID bereit, die Sie aus Ihrer Instanz des Device Provisioning Service erfasst haben.
Provision-EflowVM -provisioningType "DpsTpm" -scopeId "SCOPE_ID_HERE"
Wenn Sie das Gerät mit einer benutzerdefinierten Registrierungs-ID registriert haben, müssen Sie die Registrierungs-ID auch bei der Bereitstellung angeben:
Provision-EflowVM -provisioningType "DpsTpm" -scopeId "SCOPE_ID_HERE" -registrationId "REGISTRATION_ID_HERE"
Bestätigen einer erfolgreichen Installation
Vergewissern Sie sich, dass IoT Edge für Linux unter Windows erfolgreich auf Ihrem IoT Edge-Gerät installiert und konfiguriert wurde.
Wenn die Runtime erfolgreich gestartet wurde, können Sie zu Ihrem IoT Hub wechseln und mit dem Bereitstellen von IoT Edge-Modulen auf Ihrem Gerät beginnen.
Sie können überprüfen, ob die individuelle Registrierung, die Sie im Device Provisioning Service erstellt haben, verwendet wurde. Navigieren Sie im Azure-Portal zu Ihrer Device Provisioning-Service-Instanz. Öffnen Sie die Registrierungsdetails für die von Ihnen erstellte individuelle Registrierung. Beachten Sie, dass der Status der Registrierung Zugewiesen lautet und die Geräte-ID aufgeführt ist.
Mit den folgenden Befehlen können Sie auf Ihrem Gerät überprüfen, ob IoT Edge erfolgreich installiert und gestartet wurde.
Stellen Sie mithilfe des folgenden Befehls in Ihrer PowerShell-Sitzung eine Verbindung mit Ihrer IoT Edge-VM für Linux unter Windows her:
Connect-EflowVm
Hinweis
Das einzige Konto, für das eine SSH-Verbindung mit der VM verwendet werden kann, ist der Benutzer, der sie erstellt hat.
Nachdem Sie angemeldet sind, können Sie die Liste der gerade ausgeführten IoT Edge-Module mithilfe des folgenden Linux-Befehls überprüfen:
sudo iotedge list
Wenn Sie eine Problembehandlung für den IoT Edge-Dienst durchführen müssen, verwenden Sie die folgenden Linux-Befehle.
Sollte eine Problembehandlung für den Dienst erforderlich sein, rufen Sie die Dienstprotokolle ab.
sudo iotedge system logs
Verwenden Sie das Tool
check
, um die Konfiguration und den Verbindungsstatus des Geräts zu überprüfen.sudo iotedge check
Hinweis
Auf einem neu bereitgestellten Gerät wird möglicherweise ein Fehler im Zusammenhang mit dem IoT Edge-Hub angezeigt:
× Produktionsbereitschaft: Das Speicherverzeichnis des Edge-Hubs wird im Hostdateisystem beibehalten – Fehler.
Der aktuelle Zustand des edgeHub-Containers konnte nicht überprüft werden.
Dieser Fehler wird auf einem neu bereitgestellten Gerät erwartet, da das IoT Edge-Hubmodul nicht ausgeführt wird. Um den Fehler zu beheben, legen Sie in IoT Hub die Module für das Gerät fest, und erstellen Sie eine Bereitstellung. Durch das Erstellen einer Bereitstellung für das Gerät werden die Module auf dem Gerät gestartet, einschließlich des IoT Edge-Hubmoduls.
Deinstallieren von IoT Edge für Linux unter Windows
Wenn Sie die Installation von Azure IoT Edge für Linux unter Windows von Ihrem Gerät entfernen möchten, verwenden Sie die folgenden Befehle:
- Öffnen Sie die Einstellungen unter Windows.
- Wählen Sie „Programme hinzufügen oder entfernen“ aus.
- Wählen Sie die App Azure IoT Edge aus.
- Wählen Sie „Deinstallieren“ aus.
Nächste Schritte
Der Registrierungsprozess des Device Provisioning Service ermöglicht es Ihnen, die Geräte-ID und die Tags von Gerätezwillingen beim Bereitstellen des neuen Geräts festzulegen. Sie können diese Werte verwenden, um einzelne Geräte oder Gruppen von Geräten über die automatische Geräteverwaltung als Ziel festzulegen.
Weitere Informationen finden Sie unter „Bedarfsgerechtes Bereitstellen und Überwachen von IoT Edge-Modulen mithilfe des Microsoft Azure-Portals oder mithilfe der Azure CLI“.