GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Aktualisieren Sie Geräte aus der Ferne mit diesem Open-Source-Tool

Die Möglichkeit, über ein einziges Konto remote auf mehrere Geräte zuzugreifen, diese zu verbinden und zu verwalten, ist wichtig. Um noch einen Schritt weiter zu gehen, ist die Möglichkeit, Geräte vollständig aus der Ferne zu aktualisieren, eine weitere Möglichkeit für Systemadministratoren, den Aufwand zu reduzieren und Kopfschmerzen zu minimieren.

UpdateHub ist eine Open-Source-Lösung, mit der Sie vollständige Geräteaktualisierungen, einschließlich Firmware und Bootloader, remote durchführen können. Sein Ziel ist es, die Durchführung von Geräteaktualisierungen zu vereinfachen und Nacharbeiten und Risiken zu reduzieren, unabhängig davon, ob Sie Tausende von Geräten aktualisieren oder kleine Bereitstellungen verwalten. UpdateHub kümmert sich um alle Aspekte von OTA-Updates (Over-the-Air), einschließlich Paketintegrität und Authentizität, während Sie sich um Ihre andere Arbeit kümmern.

Weitere Linux-Ressourcen

  • Spickzettel für Linux-Befehle
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Kostenloser Online-Kurs:RHEL Technical Overview
  • Spickzettel für Linux-Netzwerke
  • SELinux-Spickzettel
  • Spickzettel für allgemeine Linux-Befehle
  • Was sind Linux-Container?
  • Unsere neuesten Linux-Artikel

Diese Schritt-für-Schritt-Anleitung zu UpdateHub soll Ihnen den Einstieg in dieses professionelle Tool erleichtern. Es gibt zwei UpdateHub-Serveroptionen:UpdateHub Cloud und UpdateHub Community Edition (UpdateHub CE), ein vollständiger Open-Source-Server (vertrieben unter der MIT-Lizenz), der in diesem Tutorial verwendet wird.

Prüfen Sie die Anforderungen

Stellen Sie zunächst sicher, dass Ihre Linux-Distribution alle erforderlichen Pakete installiert hat, um ein Image mit dem Yocto-Projekt zu erstellen.

Außerdem benötigen Sie folgende Hardware:

  • Ziel ist das Entwicklungsgerät. Dieses Tutorial verwendet einen Raspberry Pi 3 Model B+, aber Sie können auch einen Raspberry Pi 3, Model B oder Model B+ verwenden.
  • Host ist der Computer, auf dem Sie das Image mit dem Yocto-Projekt erstellen. Dieses Tutorial verwendet Yocto 3.1 Dunfell.

Um UpdateHub CE zu starten, muss Docker auf dem Host installiert sein. Wenn Sie es nicht haben, lesen Sie die Orientierungs- und Einrichtungsanweisungen von Docker.

In dieser Anleitung wird das Repo-Tool von Google verwendet, um den Vorgang zu vereinfachen, da mehrere Repositories erforderlich sind. Weitere Informationen zu Repo finden Sie im Einrichtungsleitfaden für die Android-Entwicklung.

Installieren Sie auf Debian- und Ubuntu-Distributionen das Repo mit:

sudo apt install repo

Wenn Sie eine andere Linux-Distribution verwenden, laden Sie das Repo direkt herunter und stellen Sie Ihre Distribution ein mit:

mkdir ~/bin
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
PATH=${PATH}:~/bin

Schließlich benötigen Sie eine Netzwerkverbindung über DHCP, oder Sie müssen wissen, wie Sie die Internetprotokolladresse (IP-Adresse) ändern oder eine Yocto-Projektschicht erstellen, die diese Konfiguration handhabt.

Bereiten Sie Ihre Umgebung auf den Build vor

UpdateHub stellt ein Repository mit einer Manifestdatei bereit, die vom Repo-Tool verwendet wird, wodurch die Verwaltung mehrerer Ebenen vereinfacht wird.

Laden Sie den Quellcode herunter, indem Sie ein Verzeichnis erstellen und die erforderlichen Yocto-Projektschichten abrufen:

mkdir updatehub-platform
cd updatehub-platform
repo init -u https://github.com/UpdateHub/updatehub-yocto-project-reference-platform.git -b dunfell
repo sync

Nach der repo sync Befehl abgeschlossen ist, sehen Sie alle Ebenen, die Sie in den sources benötigen Verzeichnis.

Die UpdateHub-Plattform bietet Unterstützung für mehrere unterstützte Geräte. Während der Einrichtung der Yocto-Projektumgebung werden Sie gefragt, ob Sie die Endbenutzer-Lizenzvereinbarung (EULA) von meta-freescale akzeptieren möchten Schicht; dies ist für dieses Projekt nicht erforderlich.

Laden Sie die Yocto Project-Umgebung:

MACHINE="raspberrypi3" source ./setup-environment build

Beachten Sie, dass dieser Befehl nur für die Terminalsitzung gültig ist, in der Sie die Umgebung geladen haben. Wenn Sie ein neues Terminal verwenden, müssen Sie die Umgebung erneut laden. Sie müssen die Maschine jedoch nicht erneut konfigurieren, da der Konfigurationsinhalt in conf/local.conf gespeichert ist Datei.

UpdateHub CE starten

Laden Sie bei installiertem Docker das Docker-Image herunter und starten Sie den Server auf Port 8080:

docker run -d -p 8080:8080 updatehub/updatehub-ce:latest

Greifen Sie über die Host-IP-Adresse und den Port 8080 (http://IP_ADDRESS:8080) auf das UpdateHub CE-Dashboard zu ). Die Host-IP im Beispiel ist 192.168.15.50, das wäre also http://192.168.15.50:8080 .

Verwenden Sie die Vorgabe von admin für den Benutzernamen und das Passwort und klicken Sie auf Anmelden .

Sie müssen die UPDATEHUB_SERVER_URL konfigurieren um die UpdateHub CE-Adresse zu verwenden, da das Gerät die IP-Adresse des Servers kennen muss. Standardmäßig ist der meta-updatehub Layer verwendet die UpdateHub Cloud-Adresse in der Server-URL-Variablen.

Sie sollten die Hauptschnittstelle von UpdateHub CE sehen:

Konfigurieren Sie die Umgebung zum Generieren des Images

Der nächste Schritt besteht darin, das Linux-Image zu generieren, das vom Gerät verwendet wird. Aber zuerst müssen Sie einige Variablen in der conf/local.conf einrichten Datei:

UPDATEHUB_SERVER_URL = "http://IP_ADDRESS:8080"
UPDATEHUB_PACKAGE_VERSION_SUFFIX = "-test-image-1"
ENABLE_UART = "1"
UPDATEHUB_POLLING_INTERVAL = "1m"

Zeile für Zeile im obigen Code:

  • UPDATEHUB_SERVER_URL enthält die IP-Adresse, unter der UpdateHub CE ausgeführt wird.
  • UPDATEHUB_PACKAGE_VERSION_SUFFIX fügt ein Suffix in der Bildversion hinzu. Dies ist nützlich, um eine Versionsnummer zu platzieren und sie für jedes neue Bild zu erhöhen. Diese Variable ist die VERSION_ID , die sich aus DISTRO_VERSION zusammensetzt (in der Dokumentation beschrieben) plus UPDATEHUB_PACKAGE_VERSION_SUFFIX . Sie können dies in /etc/os-release überprüfen Datei im Ziel.
  • ENABLE_UART :Es gibt mehrere Möglichkeiten, auf das Zielgerät zuzugreifen, z. B. die Verwendung der seriellen Konsole oder das Anschließen einer Tastatur und eines Monitors. Diese Variable ermöglicht den Zugriff auf eine serielle Konsole auf einem Raspberry Pi, indem die im GPIO-Header verfügbaren seriellen Ports verwendet werden.
  • UPDATEHUB_POLLING_INTERVAL :Standardmäßig erfolgt die Kommunikation zwischen dem Agenten und dem Server von UpdateHub alle 24 Stunden. Verwenden Sie diese Variable, um eine neue Beratungszeit von 1 Minute einzurichten.

Dieses Tutorial verwendet Minicom, um sich mit dem Ziel zu verbinden; Wenn Sie möchten, können Sie mehr über die Verwendung der seriellen Verbindung in Raspberry Pi erfahren.

Bild generieren

Nachdem die Yocto-Projektumgebung bereit ist, kompilieren Sie das Image mithilfe der BitBake-Task-Execution-Engine, indem Sie Folgendes ausführen:

bitbake updatehub-image-base

Die Image-Generierung kann je nach Host-Rechner eine Weile dauern. Wenn Sie zum ersten Mal ein Image für raspberrypi3 erstellen In Yoctos Dunfell-Zweig lädt BitBake den gesamten Quellcode herunter, sodass Ihre Download-Geschwindigkeit die Zeit beeinflusst, die zum Generieren des Bildes benötigt wird.

Sobald das Image kompiliert ist, navigieren Sie zu build/tmp/deploy/images/raspberrypi3/ host-Verzeichnis und überprüfen Sie die Bilddatei updatehub-image-minimal-raspberrypi3.wic.gz , ist da.

Legen Sie eine SD-Karte in Ihren Raspberry Pi ein und überprüfen Sie ihren Namen, indem Sie dmesg ausführen . Flashen Sie dann das Image mit dem folgenden Befehl auf Ihre SD-Karte, aber stellen Sie sicher, dass Sie /dev/sdX ändern zu Ihrem SD-Kartennamen:

zcat updatehub-image-base-raspberrypi3.wic.gz | sudo dd of=/dev/sdX

Legen Sie die abgebildete SD-Karte in das Zielgerät ein, um eine Verbindung mit Raspberry Pi herzustellen. Das Image hat ein Netzwerk, das so konfiguriert ist, dass es eine IP-Adresse über DHCP erhält. Greifen Sie mit dem Benutzer root auf die Konsole zu und lassen Sie das Passwort leer.

Bestätigen Sie die auf dem Ziel ausgeführte Image-Version mit cat /etc/os-release .

Generieren Sie das Update-Paket

Ihr Gerät sollte ordnungsgemäß laufen und funktionieren, aber Sie müssen die Funktion hinzufügen, um ein Aktualisierungspaket zu erstellen. Dadurch wird ein Bild erstellt, um Ihr Ziel zu aktualisieren. Das folgende Beispiel fügt Unterstützung für einen SSH-Server auf dem Ziel hinzu und erstellt ein Aktualisierungspaket, um diese Funktionalität zu installieren.

Fügen Sie Unterstützung für den OpenSSH-Server hinzu, indem Sie die folgende Zeile zu build/conf/local.conf hinzufügen Datei:

IMAGE_FEATURES += "ssh-server-openssh"

Um deutlich zu machen, dass das aktualisierte Image eine andere Version haben wird, fügen Sie das Suffix -test-image-2 hinzu im UPDATEHUB_PACKAGE_VERSION_SUFFIX Variable:

UPDATEHUB_PACKAGE_VERSION_SUFFIX = "-test-image-2"

Speichern Sie die Datei und führen Sie Folgendes aus:

bitbake updatehub-image-base -c uhuarchive

Dieser Befehl erzeugt eine Datei mit einem .uhupkg Erweiterung, ein Format, das von UpdateHub verwendet wird, um das System zu aktualisieren. Die generierte Datei befindet sich im selben Verzeichnis wie die Bilder, tmp/deploy/images/raspberrypi3; in diesem Beispiel ist das updatehub-image-base-raspberrypi3.uhupkg .

Überprüfen Sie Ihr Gerät

Um auf das UpdateHub CE-Dashboard zuzugreifen, klicken Sie auf Geräte Tab, um zu sehen, ob Ihr Gerät aufgeführt ist:

Sende ein Updatepaket

Die Pakete des UpdateHub CE-Dashboards Registerkarte zeigt eine Liste der verfügbaren Pakete, aber Sie haben noch keine. Um ein Paket hinzuzufügen, klicken Sie auf Paket hochladen und wählen Sie updatehub-image-minimal-raspberrypi3.uhupkg aus Datei. In diesem Beispiel befindet es sich in tmp/deploy/images/raspberrypi3/directory . Ein Bildschirm mit den Paketdetails wird angezeigt. Dies zeigt den Prozess zum Hinzufügen eines Aktualisierungspakets zum Dashboard:

Rollout erstellen

Nachdem das Gerät erkannt und das Paket an den Server gesendet wurde, können Sie einen Rollout erstellen, bei dem es sich im Wesentlichen um einen Bereitstellungsplan handelt. Navigieren Sie zu den Rollouts und klicken Sie auf Einführung erstellen . Wählen Sie aus, welche Paketversion Sie beim Upgrade verwenden möchten. Dieses Beispiel enthält nur das Paket aus dem vorherigen Schritt mit der Version 20.04-test-image-2 . Wählen Sie diese Version und vergewissern Sie sich, dass sie die Liste der zu aktualisierenden Geräte enthält.

Zuvor haben Sie das auf dem Ziel ausgeführte Image so konfiguriert, dass jede Minute eine Aktualisierungsabfrage auf dem UpdateHub-Server ausgeführt wird, sodass der Aktualisierungsprozess innerhalb einer Minute nach Erstellung des Rollouts gestartet wird. Um den Aktualisierungsstatus zu verfolgen, überprüfen Sie die Rollouts Registerkarte.

Nach Abschluss eines Upgrade-Vorgangs wird das Ziel automatisch neu gestartet. Das neue Image startet und fragt den Server automatisch nach Updates ab. Der Server antwortet, dass er keine Updates hat und beendet den Update-Zyklus.

Wenn der Status updated anzeigt , führen Sie den folgenden Befehl auf dem Host aus, um über SSH auf das Ziel zuzugreifen:

ssh root@IP_DO_TARGET

Es ist kein Passwort erforderlich; drücken Sie einfach Enter , und Sie befinden sich in der Zielkonsole. Sie können die Version in /etc/os-release überprüfen Datei zu bestätigen.

Herzlichen Glückwunsch! Sie sind fertig!

Jetzt haben Sie Zugriff auf ein professionelles Tool, um Ihre Geräte aus der Ferne zu aktualisieren. In diesem Tutorial wurde ein Raspberry Pi 3 mit der Yocto Project-Version Dunfell 3.1.2 verwendet, aber andere Geräte und Versionen werden unterstützt.

Wenn Sie Fragen zur Integration Ihres Geräts haben, wenden Sie sich über Gitter oder per E-Mail an [email protected] an das Entwicklerteam.


Dieser Artikel basiert auf UpdateHub:Sending OTA Updates using the Yocto Project im Blog von UpdateHub.


Linux
  1. Open-Source-Dateifreigabe mit diesem Linux-Tool

  2. Untersuchen Sie die Fähigkeiten von ELF-Binärdateien mit diesem Open-Source-Tool

  3. Führen Sie mit diesem Open-Source-Tool eine Linux-Speicherforensik durch

  4. Meine Linux-Geschichte:Sprachbarrieren mit Open Source überwinden

  5. Arbeitgeber, um die Einstellung von IT-Experten mit Open-Source-Kenntnissen zu erhöhen

Verwalten Sie Ihre SSH-Verbindungen mit diesem Open-Source-Tool

Probieren Sie Linux auf Ihrem Mac mit Open-Source-Virtualisierung aus

Erkennen Sie mehr Geräte unter Linux mit diesem USB-ID-Repository

Erstellen Sie ein SDN unter Linux mit Open Source

Die 10 besten Open-Source-Zwischenablage-Manager für Linux

Die 10 Open-Source-Dateinavigationstools für Linux-Systeme