GNU/Linux >> Linux Esercitazione >  >> Linux

Aggiorna i dispositivi da remoto con questo strumento open source

La possibilità di accedere, connettere e gestire più dispositivi in ​​remoto tramite un unico account è importante. Facendo un ulteriore passo avanti, essere in grado di aggiornare completamente i dispositivi da remoto è un altro modo per gli amministratori di sistema di ridurre lo sforzo e ridurre al minimo i mal di testa.

UpdateHub è una soluzione open source che ti consente di eseguire aggiornamenti completi del dispositivo, inclusi firmware e bootloader, da remoto. Il suo obiettivo è semplificare l'esecuzione degli aggiornamenti dei dispositivi e ridurre le rilavorazioni e i rischi, sia che tu stia aggiornando migliaia di dispositivi o gestendo piccole distribuzioni. UpdateHub gestisce tutti gli aspetti degli aggiornamenti over-the-air (OTA), inclusa l'integrità e l'autenticità del pacchetto, mentre tu ti occupi del tuo altro lavoro.

Più risorse Linux

  • Comandi Linux cheat sheet
  • Cheat sheet sui comandi avanzati di Linux
  • Corso online gratuito:Panoramica tecnica RHEL
  • Cheat sheet della rete Linux
  • Cheat sheet di SELinux
  • Cheat sheet dei comandi comuni di Linux
  • Cosa sono i container Linux?
  • I nostri ultimi articoli su Linux

Questa guida dettagliata a UpdateHub mira ad aiutarti a iniziare con questo strumento professionale. Esistono due opzioni del server UpdateHub:UpdateHub Cloud e UpdateHub Community Edition (UpdateHub CE), un server completamente open source (distribuito con licenza MIT), che è ciò che utilizza questo tutorial.

Verifica i requisiti

Innanzitutto, assicurati che la tua distribuzione Linux abbia installato tutti i pacchetti necessari per creare un'immagine utilizzando Yocto Project.

Hai anche bisogno del seguente hardware:

  • Obiettivo è il dispositivo di sviluppo. Questo tutorial utilizza un Raspberry Pi 3 Model B+, ma puoi anche usare un Raspberry Pi 3, Model B o Model B+.
  • Ospite è il computer su cui costruirai l'immagine utilizzando Yocto Project. Questo tutorial utilizza Yocto 3.1 Dunfell.

Per avviare UpdateHub CE, devi avere Docker installato sull'host. Se non lo possiedi, consulta l'orientamento e le istruzioni di configurazione di Docker.

Questo tutorial utilizza lo strumento repository di Google per facilitare il processo, poiché richiede più repository. Puoi saperne di più sul repository nella guida alla configurazione dello sviluppo Android.

Nelle distribuzioni Debian e Ubuntu, installa repository con:

sudo apt install repo

Se stai utilizzando un'altra distribuzione Linux, scarica direttamente il repository e imposta la tua distribuzione con:

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

Infine, è necessaria la connettività di rete tramite DHCP, oppure è necessario sapere come modificare l'indirizzo del protocollo Internet (IP) o creare un livello Yocto Project che gestisca questa configurazione.

Prepara il tuo ambiente per la build

UpdateHub fornisce un repository con un file manifest utilizzato dallo strumento repository, che semplifica la gestione di più livelli.

Scarica il codice sorgente creando una directory e recuperando i livelli di Yocto Project necessari:

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

Dopo la repo sync comando completato, vedrai tutti i livelli di cui hai bisogno nei sources directory.

La piattaforma UpdateHub fornisce supporto per più dispositivi supportati. Durante la configurazione dell'ambiente Yocto Project, ti verrà chiesto se desideri accettare il contratto di licenza con l'utente finale (EULA) del meta-freescale strato; questo non è necessario per questo progetto.

Carica l'ambiente del progetto Yocto:

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

Si noti che questo comando è valido solo per la sessione del terminale in cui è stato caricato l'ambiente. Se utilizzi un nuovo terminale, dovrai caricare nuovamente l'ambiente. Tuttavia, non sarà necessario configurare nuovamente la macchina perché il contenuto della configurazione è archiviato in conf/local.conf file.

Avvia UpdateHub CE

Con Docker installato, scarica l'immagine Docker e avvia il server sulla porta 8080:

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

Accedi alla dashboard di UpdateHub CE tramite l'indirizzo IP dell'host e la porta 8080 (http://IP_ADDRESS:8080 ). L'IP host nell'esempio è 192.168.15.50, quindi sarebbe http://192.168.15.50:8080 .

Usa l'impostazione predefinita di admin per il login e la password, quindi fare clic su Accedi .

Devi configurare il UPDATEHUB_SERVER_URL per utilizzare l'indirizzo UpdateHub CE perché il dispositivo deve conoscere l'indirizzo IP del server. Per impostazione predefinita, il meta-updatehub layer utilizza l'indirizzo UpdateHub Cloud nella variabile URL del server.

Dovresti vedere l'interfaccia principale di UpdateHub CE:

Configura l'ambiente per generare l'immagine

Il passaggio successivo consiste nel generare l'immagine Linux che verrà utilizzata dal dispositivo. Ma prima devi impostare alcune variabili in conf/local.conf file:

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

Andando riga per riga nel codice sopra:

  • UPDATEHUB_SERVER_URL contiene l'indirizzo IP su cui è in esecuzione UpdateHub CE.
  • UPDATEHUB_PACKAGE_VERSION_SUFFIX aggiunge un suffisso nella versione dell'immagine. Questo è utile per inserire un numero di versione e incrementarlo per ogni nuova immagine. Questa variabile sarà il VERSION_ID , che è composto da DISTRO_VERSION (descritto nei documenti) più il UPDATEHUB_PACKAGE_VERSION_SUFFIX . Puoi verificarlo in /etc/os-release file nella destinazione.
  • ENABLE_UART :Esistono diversi modi per accedere al dispositivo di destinazione, ad esempio utilizzando la console seriale o collegando una tastiera e un monitor. Questa variabile consente l'accesso a una console seriale su un Raspberry Pi utilizzando le porte seriali disponibili sull'intestazione GPIO.
  • UPDATEHUB_POLLING_INTERVAL :per impostazione predefinita, la comunicazione tra l'agente e il server di UpdateHub avviene ogni 24 ore. Utilizza questa variabile per impostare un nuovo tempo di consultazione di 1 minuto.

Questo tutorial utilizza Minicom per connettersi con il target; se lo desideri, puoi saperne di più sull'utilizzo della connessione seriale in Raspberry Pi.

Genera l'immagine

Ora che l'ambiente Yocto Project è pronto, compila l'immagine utilizzando il motore di esecuzione delle attività BitBake eseguendo:

bitbake updatehub-image-base

La generazione dell'immagine può richiedere del tempo, a seconda della macchina host. Se è la prima volta che crei un'immagine per raspberrypi3 nel ramo Dunfell di Yocto, BitBake scaricherà l'intero codice sorgente, quindi la tua velocità di download influenzerà il tempo necessario per generare l'immagine.

Una volta che l'immagine è stata compilata, vai a build/tmp/deploy/images/raspberrypi3/ directory host e verifica il file immagine, updatehub-image-minimal-raspberrypi3.wic.gz , c'è.

Inserisci una scheda SD nel tuo Raspberry Pi e controlla il suo nome eseguendo dmesg . Quindi flash l'immagine sulla tua scheda SD con il seguente comando, ma assicurati di cambiare /dev/sdX al nome della tua scheda SD:

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

Inserisci la scheda SD con immagine nel dispositivo di destinazione per connetterti a Raspberry Pi. L'immagine ha una rete configurata per ottenere un indirizzo IP tramite DHCP. Accedi alla console con l'utente root e lascia vuota la password.

Conferma la versione dell'immagine in esecuzione sulla destinazione usando cat /etc/os-release .

Genera il pacchetto di aggiornamento

Il tuo dispositivo dovrebbe funzionare e funzionare correttamente, ma devi aggiungere la funzione per creare un pacchetto di aggiornamento. Questo crea un'immagine per aggiornare il tuo target. L'esempio seguente aggiunge il supporto per un server SSH sulla destinazione e crea un pacchetto di aggiornamento per installare questa funzionalità.

Aggiungi il supporto per il server OpenSSH aggiungendo la seguente riga a build/conf/local.conf file:

IMAGE_FEATURES += "ssh-server-openssh"

Per chiarire che l'immagine aggiornata avrà un'altra versione, inserisci il suffisso -test-image-2 nel UPDATEHUB_PACKAGE_VERSION_SUFFIX variabile:

UPDATEHUB_PACKAGE_VERSION_SUFFIX = "-test-image-2"

Salva il file ed esegui:

bitbake updatehub-image-base -c uhuarchive

Questo comando genera un file con un .uhupkg estensione, un formato utilizzato da UpdateHub per aggiornare il sistema. Il file generato sarà nella stessa directory delle immagini, tmp/deploy/images/raspberrypi3; in questo esempio, è updatehub-image-base-raspberrypi3.uhupkg .

Controlla il tuo dispositivo

Per accedere alla dashboard di UpdateHub CE, fai clic su Dispositivi scheda per vedere se il tuo dispositivo è elencato:

Invia un pacchetto di aggiornamento

Pacchetti della dashboard di UpdateHub CE la scheda mostra un elenco di pacchetti disponibili, ma non ne hai ancora nessuno. Per aggiungere un pacchetto, fai clic su Carica pacchetto e seleziona updatehub-image-minimal-raspberrypi3.uhupkg file. In questo esempio, è in tmp/deploy/images/raspberrypi3/directory . Apparirà una schermata che mostra i dettagli del pacchetto. Questo mostra il processo di aggiunta di un pacchetto di aggiornamento alla dashboard:

Crea un rollout

Con il dispositivo riconosciuto e il pacchetto inviato al server, puoi creare un rollout, che è essenzialmente un piano di distribuzione. Vai a Rollout scheda e fai clic su Crea implementazione . Scegli la versione del pacchetto che desideri utilizzare nell'aggiornamento. Questo esempio ha solo il pacchetto del passaggio precedente, con la versione 20.04-test-image-2 . Scegli questa versione e assicurati che includa l'elenco dei dispositivi che verranno aggiornati.

In precedenza, hai configurato l'immagine in esecuzione sulla destinazione per eseguire una query di aggiornamento sul server UpdateHub ogni minuto, quindi entro un minuto dalla creazione del rollout, verrà avviato il processo di aggiornamento. Per monitorare lo stato dell'aggiornamento, controlla le Rollout scheda.

Dopo aver terminato un processo di aggiornamento, il target si riavvia automaticamente. La nuova immagine si avvia e richiede automaticamente gli aggiornamenti al server. Il server risponde che non ha aggiornamenti e termina il ciclo di aggiornamento.

Quando lo stato mostra updated , esegui il comando seguente sull'host per accedere alla destinazione tramite SSH:

ssh root@IP_DO_TARGET

Non è richiesta alcuna password; basta premere Invio e sarai nella console di destinazione. Puoi controllare la versione in /etc/os-release file per confermare.

Congratulazioni! Hai finito!

Ora hai accesso a uno strumento professionale per aggiornare i tuoi dispositivi da remoto. Questo tutorial ha utilizzato un Raspberry Pi 3 con Yocto Project versione Dunfell 3.1.2, ma sono supportati altri dispositivi e versioni.

Se hai domande sull'integrazione del tuo dispositivo, accedi al team di sviluppatori tramite Gitter o inviando un'e-mail a [email protected].

Questo articolo è basato su UpdateHub:invio di aggiornamenti OTA utilizzando il progetto Yocto sul blog di UpdateHub.


Linux
  1. Condivisione di file open source con questo strumento Linux

  2. Ispeziona le capacità dei binari ELF con questo strumento open source

  3. Esegui analisi forensi sulla memoria di Linux con questo strumento open source

  4. La mia storia su Linux:rompere le barriere linguistiche con l'open source

  5. Datori di lavoro per aumentare l'assunzione di professionisti IT con competenze open source

Gestisci le tue connessioni SSH con questo strumento open source

Prova Linux sul tuo Mac con la virtualizzazione open source

Riconosci più dispositivi su Linux con questo repository di ID USB

Crea un SDN su Linux con open source

I 10 migliori gestori di appunti open source per Linux

I 10 strumenti di navigazione dei file open source per il sistema Linux