GNU/Linux >> Tutoriales Linux >  >> Linux

Actualiza dispositivos de forma remota con esta herramienta de código abierto

La capacidad de acceder, conectar y administrar varios dispositivos de forma remota a través de una sola cuenta es importante. Yendo un paso más allá, poder actualizar completamente los dispositivos de forma remota es otra forma para que los administradores de sistemas reduzcan el esfuerzo y minimicen los dolores de cabeza.

UpdateHub es una solución de código abierto que le permite realizar actualizaciones completas de dispositivos, incluidos el firmware y los cargadores de arranque, de forma remota. Su objetivo es facilitar la actualización de dispositivos y reducir el retrabajo y el riesgo, ya sea que esté actualizando miles de dispositivos o administrando pequeñas implementaciones. UpdateHub maneja todos los aspectos de las actualizaciones inalámbricas (OTA), incluidas la integridad y la autenticidad del paquete, mientras usted se encarga de su otro trabajo.

Más recursos de Linux

  • Hoja de trucos de los comandos de Linux
  • Hoja de trucos de comandos avanzados de Linux
  • Curso en línea gratuito:Descripción general técnica de RHEL
  • Hoja de trucos de red de Linux
  • Hoja de trucos de SELinux
  • Hoja de trucos de los comandos comunes de Linux
  • ¿Qué son los contenedores de Linux?
  • Nuestros últimos artículos sobre Linux

Esta guía paso a paso de UpdateHub tiene como objetivo ayudarlo a comenzar a utilizar esta herramienta profesional. Hay dos opciones de servidor UpdateHub:UpdateHub Cloud y UpdateHub Community Edition (UpdateHub CE), un servidor de código completamente abierto (distribuido bajo la licencia MIT), que es lo que usa este tutorial.

Verificar los requisitos

Primero, asegúrese de que su distribución de Linux haya instalado todos los paquetes necesarios para construir una imagen usando el Proyecto Yocto.

También necesita el siguiente hardware:

  • Objetivo es el dispositivo de desarrollo. Este tutorial usa un Raspberry Pi 3 Model B+, pero también podría usar un Raspberry Pi 3, Model B o Model B+.
  • Anfitrión es la computadora donde construirás la imagen usando el Proyecto Yocto. Este tutorial utiliza Yocto 3.1 Dunfell.

Para iniciar UpdateHub CE, debe tener Docker instalado en el host. Si no lo tiene, consulte las instrucciones de configuración y orientación de Docker.

Este tutorial utiliza la herramienta de repositorios de Google para facilitar el proceso, ya que requiere varios repositorios. Puede obtener más información sobre el repositorio en la guía de configuración de desarrollo de Android.

En las distribuciones Debian y Ubuntu, instale el repositorio con:

sudo apt install repo

Si está utilizando otra distribución de Linux, descargue el repositorio directamente y configure su distribución con:

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

Finalmente, necesita conectividad de red a través de DHCP, o debe saber cómo cambiar la dirección del protocolo de Internet (IP) o crear una capa de Yocto Project que maneje esta configuración.

Prepare su entorno para la compilación

UpdateHub proporciona un repositorio con un archivo de manifiesto utilizado por la herramienta de repositorio, lo que facilita la administración de varias capas.

Descargue el código fuente creando un directorio y obteniendo las capas necesarias del Proyecto Yocto:

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

Después de la repo sync completa el comando, verá todas las capas que necesita en las sources directorio.

La plataforma UpdateHub brinda soporte para múltiples dispositivos compatibles. Durante la configuración del entorno del proyecto Yocto, se le preguntará si desea aceptar el acuerdo de licencia de usuario final (EULA) del meta-freescale capa; esto no es necesario para este proyecto.

Cargue el entorno del Proyecto Yocto:

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

Tenga en cuenta que este comando solo es válido para la sesión de terminal en la que cargó el entorno. Si usa una nueva terminal, deberá volver a cargar el entorno. Sin embargo, no necesitará volver a configurar la máquina porque el contenido de la configuración se almacena en el conf/local.conf archivo.

Iniciar UpdateHub CE

Con Docker instalado, descargue la imagen de Docker e inicie el servidor en el puerto 8080:

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

Acceda al panel de UpdateHub CE a través de la dirección IP del host y el puerto 8080 (http://IP_ADDRESS:8080 ). La IP del host en el ejemplo es 192.168.15.50, por lo que sería http://192.168.15.50:8080 .

Utilice el valor predeterminado de admin para el nombre de usuario y la contraseña, y haga clic en Iniciar sesión .

Debe configurar el UPDATEHUB_SERVER_URL usar la dirección CE de UpdateHub porque el dispositivo necesita conocer la dirección IP del servidor. De forma predeterminada, el meta-updatehub capa utiliza la dirección de UpdateHub Cloud en la variable URL del servidor.

Debería ver la interfaz principal de UpdateHub CE:

Configure el entorno para generar la imagen

El siguiente paso es generar la imagen de Linux que utilizará el dispositivo. Pero primero, debe configurar algunas variables en el conf/local.conf archivo:

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

Yendo línea por línea en el código anterior:

  • UPDATEHUB_SERVER_URL contiene la dirección IP donde se ejecuta UpdateHub CE.
  • UPDATEHUB_PACKAGE_VERSION_SUFFIX agrega un sufijo en la versión de la imagen. Esto es útil para colocar un número de versión e incrementarlo para cada nueva imagen. Esta variable será el VERSION_ID , que se compone de DISTRO_VERSION (descrito en los documentos) más el UPDATEHUB_PACKAGE_VERSION_SUFFIX . Puede verificar esto en el /etc/os-release archivo en el destino.
  • ENABLE_UART :Hay varias formas de acceder al dispositivo de destino, como usar la consola serie o conectar un teclado y un monitor. Esta variable permite el acceso a una consola serial en una Raspberry Pi usando los puertos seriales disponibles en el encabezado GPIO.
  • UPDATEHUB_POLLING_INTERVAL :De manera predeterminada, la comunicación entre el agente y el servidor de UpdateHub ocurre cada 24 horas. Utilice esta variable para configurar un nuevo tiempo de consulta de 1 minuto.

Este tutorial usa Minicom para conectarse con el objetivo; si lo desea, puede obtener más información sobre el uso de la conexión en serie en Raspberry Pi.

Generar la imagen

Ahora que el entorno del Proyecto Yocto está listo, compila la imagen usando el motor de ejecución de tareas de BitBake ejecutando:

bitbake updatehub-image-base

La generación de imágenes puede demorar un tiempo, dependiendo de la máquina anfitriona. Si es la primera vez que crea una imagen para raspberrypi3 en la sucursal Dunfell de Yocto, BitBake descargará el código fuente completo, por lo que la velocidad de descarga influirá en el tiempo que se tarde en generar la imagen.

Una vez compilada la imagen, vaya a build/tmp/deploy/images/raspberrypi3/ host y verifique el archivo de imagen, updatehub-image-minimal-raspberrypi3.wic.gz , está ahí.

Inserte una tarjeta SD en su Raspberry Pi y verifique su nombre ejecutando dmesg . Luego, envíe la imagen a su tarjeta SD con el siguiente comando, pero asegúrese de cambiar /dev/sdX al nombre de su tarjeta SD:

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

Inserte la tarjeta SD con la imagen en el dispositivo de destino para conectarse a Raspberry Pi. La imagen tiene una red configurada para obtener una dirección IP mediante DHCP. Accede a la consola con el usuario root y deja la contraseña vacía.

Confirme la versión de la imagen que se ejecuta en el objetivo usando cat /etc/os-release .

Generar el paquete de actualización

Su dispositivo debería estar funcionando correctamente, pero debe agregar la función para crear un paquete de actualización. Esto crea una imagen para actualizar su objetivo. El siguiente ejemplo agrega soporte para un servidor SSH en el destino y crea un paquete de actualización para instalar esta funcionalidad.

Agregue soporte para el servidor OpenSSH agregando la siguiente línea a build/conf/local.conf archivo:

IMAGE_FEATURES += "ssh-server-openssh"

Para que quede claro que la imagen actualizada tendrá otra versión, ponle el sufijo -test-image-2 en el UPDATEHUB_PACKAGE_VERSION_SUFFIX variables:

UPDATEHUB_PACKAGE_VERSION_SUFFIX = "-test-image-2"

Guarde el archivo y ejecute:

bitbake updatehub-image-base -c uhuarchive

Este comando genera un archivo con un .uhupkg extensión, un formato utilizado por UpdateHub para actualizar el sistema. El archivo generado estará en el mismo directorio que las imágenes, tmp/deploy/images/raspberrypi3; en este ejemplo, eso es updatehub-image-base-raspberrypi3.uhupkg .

Revisa tu dispositivo

Para acceder al panel de UpdateHub CE, haga clic en Dispositivos pestaña para ver si su dispositivo está en la lista:

Enviar un paquete de actualización

Paquetes del panel de UpdateHub CE La pestaña muestra una lista de paquetes disponibles, pero aún no tiene ninguno. Para agregar un paquete, haga clic en Subir paquete y seleccione el botón updatehub-image-minimal-raspberrypi3.uhupkg expediente. En este ejemplo, está en tmp/deploy/images/raspberrypi3/directory . Aparecerá una pantalla que muestra los detalles del paquete. Esto muestra el proceso de agregar un paquete de actualización al tablero:

Crear un lanzamiento

Con el dispositivo reconocido y el paquete enviado al servidor, puede crear una implementación, que es esencialmente un plan de implementación. Vaya a Lanzamientos y haga clic en Crear lanzamiento . Elija qué versión del paquete desea usar en la actualización. Este ejemplo solo tiene el paquete del paso anterior, con la versión 20.04-test-image-2 . Elija esta versión y asegúrese de que incluya la lista de dispositivos que se actualizarán.

Anteriormente, configuró la imagen que se ejecuta en el destino para realizar una consulta de actualización en el servidor UpdateHub cada minuto, por lo que dentro de un minuto de crear el lanzamiento, comenzará el proceso de actualización. Para realizar un seguimiento del estado de la actualización, consulta los Lanzamientos. pestaña.

Después de finalizar un proceso de actualización, el objetivo se reinicia automáticamente. La nueva imagen se inicia y consulta automáticamente el servidor en busca de actualizaciones. El servidor responde que no tiene ninguna actualización y finaliza el ciclo de actualización.

Cuando el estado muestra updated , ejecute el siguiente comando en el host para acceder al destino a través de SSH:

ssh root@IP_DO_TARGET

No se requiere contraseña; solo presiona Entrar , y estará en la consola de destino. Puede verificar la versión en /etc/os-release archivo para confirmar.

¡Felicitaciones! ¡Terminaste!

Ahora tienes acceso a una herramienta profesional para actualizar tus dispositivos de forma remota. Este tutorial usó una Raspberry Pi 3 con Yocto Project versión Dunfell 3.1.2, pero se admiten otros dispositivos y versiones.

Si tiene alguna pregunta sobre la integración de su dispositivo, acceda al equipo de desarrolladores a través de Gitter o envíe un correo electrónico a [email protected].


Este artículo se basa en UpdateHub:envío de actualizaciones OTA mediante el proyecto Yocto en el blog de UpdateHub.


Linux
  1. Uso compartido de archivos de código abierto con esta herramienta de Linux

  2. Inspeccione las capacidades de los binarios ELF con esta herramienta de código abierto

  3. Realice análisis forense de memoria de Linux con esta herramienta de código abierto

  4. Mi historia de Linux:romper las barreras del idioma con código abierto

  5. Los empleadores aumentarán la contratación de profesionales de TI con habilidades de código abierto

Gestiona tus conexiones SSH con esta herramienta de código abierto

Pruebe Linux en su Mac con virtualización de código abierto

Reconozca más dispositivos en Linux con este repositorio de ID USB

Crear un SDN en Linux con código abierto

Los 10 mejores administradores de portapapeles de código abierto para Linux

Las 10 herramientas de navegación de archivos de código abierto para el sistema Linux