GNU/Linux >> Tutoriels Linux >  >> Linux

Mettez à jour les appareils à distance avec cet outil open source

La possibilité d'accéder, de connecter et de gérer plusieurs appareils à distance via un seul compte est importante. Pour aller plus loin, pouvoir mettre à jour complètement les appareils à distance est un autre moyen pour les administrateurs système de réduire les efforts et de minimiser les maux de tête.

UpdateHub est une solution open source qui vous permet d'effectuer à distance des mises à jour complètes de l'appareil, y compris le micrologiciel et les chargeurs de démarrage. Son objectif est de faciliter les mises à jour des appareils et de réduire les reprises et les risques, que vous mettiez à jour des milliers d'appareils ou que vous gériez de petits déploiements. UpdateHub gère tous les aspects des mises à jour en direct (OTA), y compris l'intégrité et l'authenticité des packages, pendant que vous vous occupez de vos autres tâches.

Plus de ressources Linux

  • Aide-mémoire des commandes Linux
  • Aide-mémoire des commandes Linux avancées
  • Cours en ligne gratuit :Présentation technique de RHEL
  • Aide-mémoire sur le réseau Linux
  • Aide-mémoire SELinux
  • Aide-mémoire sur les commandes courantes de Linux
  • Que sont les conteneurs Linux ?
  • Nos derniers articles Linux

Ce guide étape par étape d'UpdateHub vise à vous aider à démarrer avec cet outil professionnel. Il existe deux options de serveur UpdateHub :UpdateHub Cloud et UpdateHub Community Edition (UpdateHub CE), un serveur entièrement open source (distribué sous licence MIT), qui est utilisé par ce didacticiel.

Vérifier les exigences

Tout d'abord, assurez-vous que votre distribution Linux a installé tous les packages nécessaires pour construire une image à l'aide du projet Yocto.

Vous avez également besoin du matériel suivant :

  • Cible est le dispositif de développement. Ce didacticiel utilise un Raspberry Pi 3 modèle B+, mais vous pouvez également utiliser un Raspberry Pi 3, modèle B ou modèle B+.
  • Hébergeur est l'ordinateur sur lequel vous allez construire l'image à l'aide du Yocto Project. Ce tutoriel utilise Yocto 3.1 Dunfell.

Pour démarrer UpdateHub CE, Docker doit être installé sur l'hôte. Si vous ne l'avez pas, consultez les instructions d'orientation et de configuration de Docker.

Ce tutoriel utilise l'outil de référentiel de Google pour faciliter le processus, car il nécessite plusieurs référentiels. Vous pouvez en savoir plus sur le référentiel dans le guide de configuration du développement Android.

Sur les distributions Debian et Ubuntu, installez le référentiel avec :

sudo apt install repo

Si vous utilisez une autre distribution Linux, téléchargez directement le référentiel et configurez votre distribution avec :

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

Enfin, il faut une connectivité réseau via DHCP, ou savoir changer l'adresse IP (Internet Protocol) ou créer une couche Yocto Project qui gère cette configuration.

Préparez votre environnement pour le build

UpdateHub fournit un référentiel avec un fichier manifeste utilisé par l'outil de référentiel, ce qui facilite la gestion de plusieurs couches.

Téléchargez le code source en créant un répertoire et en récupérant les couches Yocto Project nécessaires :

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

Après la repo sync commande terminée, vous verrez toutes les couches dont vous avez besoin dans les sources répertoire.

La plate-forme UpdateHub prend en charge plusieurs appareils pris en charge. Lors de l'installation de l'environnement Yocto Project, il vous sera demandé si vous souhaitez accepter le contrat de licence utilisateur final (EULA) du meta-freescale couche; ce n'est pas nécessaire pour ce projet.

Chargez l'environnement Yocto Project :

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

Notez que cette commande n'est valide que pour la session de terminal où vous avez chargé l'environnement. Si vous utilisez un nouveau terminal, vous devrez recharger l'environnement. Cependant, vous n'aurez pas besoin de reconfigurer la machine car le contenu de la configuration est stocké dans le conf/local.conf fichier.

Démarrer UpdateHub CE

Une fois Docker installé, téléchargez l'image Docker et démarrez le serveur sur le port 8080 :

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

Accédez au tableau de bord UpdateHub CE via l'adresse IP de l'hôte et le port 8080 (http://IP_ADDRESS:8080 ). L'IP de l'hôte dans l'exemple est 192.168.15.50, donc ce serait http://192.168.15.50:8080 .

Utilisez la valeur par défaut de admin pour le login et le mot de passe, puis cliquez sur Connexion .

Vous devez configurer le UPDATEHUB_SERVER_URL d'utiliser l'adresse UpdateHub CE car l'appareil doit connaître l'adresse IP du serveur. Par défaut, le meta-updatehub couche utilise l'adresse UpdateHub Cloud dans la variable d'URL du serveur.

Vous devriez voir l'interface principale d'UpdateHub CE :

Configurer l'environnement pour générer l'image

L'étape suivante consiste à générer l'image Linux qui sera utilisée par l'appareil. Mais d'abord, vous devez configurer certaines variables dans le conf/local.conf fichier :

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

Aller ligne par ligne dans le code ci-dessus :

  • UPDATEHUB_SERVER_URL contient l'adresse IP où UpdateHub CE s'exécute.
  • UPDATEHUB_PACKAGE_VERSION_SUFFIX ajoute un suffixe dans la version image. Ceci est utile pour placer un numéro de version et l'incrémenter pour chaque nouvelle image. Cette variable sera le VERSION_ID , qui est composé de DISTRO_VERSION (décrit dans la documentation) plus le UPDATEHUB_PACKAGE_VERSION_SUFFIX . Vous pouvez le vérifier dans le /etc/os-release fichier dans la cible.
  • ENABLE_UART :Il existe plusieurs façons d'accéder au périphérique cible, comme l'utilisation de la console série ou la connexion d'un clavier et d'un moniteur. Cette variable permet d'accéder à une console série sur un Raspberry Pi en utilisant les ports série disponibles sur l'en-tête GPIO.
  • UPDATEHUB_POLLING_INTERVAL :Par défaut, la communication entre l'agent et le serveur d'UpdateHub a lieu toutes les 24 heures. Utilisez cette variable pour configurer un nouveau temps de consultation de 1 minute.

Ce didacticiel utilise Minicom pour se connecter à la cible ; si vous le souhaitez, vous pouvez en savoir plus sur l'utilisation de la connexion série dans Raspberry Pi.

Générer l'image

Maintenant que l'environnement Yocto Project est prêt, compilez l'image à l'aide du moteur d'exécution de tâches BitBake en lançant :

bitbake updatehub-image-base

La génération d'images peut prendre un certain temps, selon la machine hôte. Si c'est la première fois que vous construisez une image pour raspberrypi3 dans la branche Dunfell de Yocto, BitBake téléchargera l'intégralité du code source, donc votre vitesse de téléchargement influencera le temps de génération de l'image.

Une fois l'image compilée, accédez au build/tmp/deploy/images/raspberrypi3/ répertoire hôte et vérifiez le fichier image, updatehub-image-minimal-raspberrypi3.wic.gz , est là.

Insérez une carte SD dans votre Raspberry Pi et vérifiez son nom en exécutant dmesg . Ensuite, flashez l'image sur votre carte SD avec la commande suivante, mais assurez-vous de changer /dev/sdX au nom de votre carte SD :

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

Insérez la carte SD imagée dans l'appareil cible pour vous connecter à Raspberry Pi. L'image dispose d'un réseau configuré pour obtenir une adresse IP à l'aide de DHCP. Accéder à la console avec l'utilisateur root et laissez le mot de passe vide.

Confirmez la version de l'image en cours d'exécution sur la cible à l'aide de cat /etc/os-release .

Générer le package de mise à jour

Votre appareil devrait fonctionner et fonctionner correctement, mais vous devez ajouter la fonctionnalité pour créer un package de mise à jour. Cela crée une image pour mettre à jour votre cible. L'exemple suivant ajoute la prise en charge d'un serveur SSH sur la cible et crée un package de mise à jour pour installer cette fonctionnalité.

Ajoutez la prise en charge du serveur OpenSSH en ajoutant la ligne suivante au build/conf/local.conf fichier :

IMAGE_FEATURES += "ssh-server-openssh"

Pour préciser que l'image mise à jour aura une autre version, mettez le suffixe -test-image-2 dans le UPDATEHUB_PACKAGE_VERSION_SUFFIX variables :

UPDATEHUB_PACKAGE_VERSION_SUFFIX = "-test-image-2"

Enregistrez le fichier et exécutez :

bitbake updatehub-image-base -c uhuarchive

Cette commande génère un fichier avec un .uhupkg extension, un format utilisé par UpdateHub pour mettre à jour le système. Le fichier généré sera dans le même répertoire que les images, tmp/deploy/images/raspberrypi3; dans cet exemple, c'est updatehub-image-base-raspberrypi3.uhupkg .

Vérifiez votre appareil

Pour accéder au tableau de bord UpdateHub CE, cliquez sur Appareils pour voir si votre appareil est répertorié :

Envoyer un package de mise à jour

Packages du tableau de bord UpdateHub CE affiche une liste des packages disponibles, mais vous n'en avez pas encore. Pour ajouter un package, cliquez sur Télécharger le package et sélectionnez le bouton updatehub-image-minimal-raspberrypi3.uhupkg dossier. Dans cet exemple, il se trouve dans tmp/deploy/images/raspberrypi3/directory . Un écran montrant les détails du paquet apparaîtra. Cela montre le processus d'ajout d'un package de mise à jour au tableau de bord :

Créer un déploiement

Avec le périphérique reconnu et le paquet envoyé au serveur, vous pouvez créer un déploiement, qui est essentiellement un plan de déploiement. Accédez aux déploiements et cliquez sur Créer un déploiement . Choisissez la version du package que vous souhaitez utiliser dans la mise à niveau. Cet exemple ne contient que le package de l'étape précédente, avec la version 20.04-test-image-2 . Choisissez cette version et assurez-vous qu'elle inclut la liste des appareils qui seront mis à jour.

Auparavant, vous configuriez l'image en cours d'exécution sur la cible pour effectuer une requête de mise à jour sur le serveur UpdateHub toutes les minutes. Ainsi, dans la minute qui suit la création du déploiement, le processus de mise à jour démarre. Pour suivre l'état de la mise à jour, consultez les déploiements onglet.

Après avoir terminé un processus de mise à niveau, la cible redémarre automatiquement. La nouvelle image démarre et interroge automatiquement le serveur pour les mises à jour. Le serveur répond qu'il n'a pas de mises à jour et termine le cycle de mise à jour.

Lorsque le statut indique updated , exécutez la commande ci-dessous sur l'hôte pour accéder à la cible via SSH :

ssh root@IP_DO_TARGET

Aucun mot de passe n'est requis; appuyez simplement sur Entrée , et vous serez dans la console cible. Vous pouvez vérifier la version dans le /etc/os-release fichier à confirmer.

Félicitations ! Vous avez terminé !

Vous avez désormais accès à un outil professionnel pour mettre à jour vos appareils à distance. Ce tutoriel a utilisé un Raspberry Pi 3 avec la version Yocto Project Dunfell 3.1.2, mais d'autres appareils et versions sont supportés.

Si vous avez des questions sur l'intégration de votre appareil, accédez à l'équipe de développeurs via Gitter ou en envoyant un e-mail à [email protected].


Cet article est basé sur UpdateHub :Envoyer des mises à jour OTA à l'aide du projet Yocto sur le blog d'UpdateHub.


Linux
  1. Partage de fichiers open source avec cet outil Linux

  2. Inspectez les capacités des binaires ELF avec cet outil open source

  3. Effectuez des analyses de mémoire Linux avec cet outil open source

  4. Mon histoire Linux :briser les barrières linguistiques avec l'open source

  5. Les employeurs vont augmenter l'embauche de professionnels de l'informatique avec des compétences open source

Gérez vos connexions SSH avec cet outil open source

Essayez Linux sur votre Mac avec la virtualisation open source

Reconnaître plus d'appareils sous Linux avec ce référentiel d'ID USB

Créer un SDN sous Linux avec open source

Les 10 meilleurs gestionnaires de presse-papiers Open Source pour Linux

Les 10 outils de navigation de fichiers open source pour le système Linux