Controllo della versione dell'immagine del sistema operativo embedded

3

Sto lavorando a un prodotto hardware che contiene un sistema Linux incorporato. La maggior parte di ciò che eseguiamo su quel sistema è un insieme di codice Python che al momento ha il suo repository Git ed è controllato in versione come un normale progetto software indipendente.

Sono bloccato su come gestire e il controllo della versione stessa della configurazione del sistema operativo. Per caricare il sistema operativo su una macchina di nuova costruzione, abbiamo un file immagine master memorizzato dell'intero filesystem (un singolo file da ~ 4 GB di backup su un'unità di rete). Deve essere in quel formato da installare. Questo mi lascia senza controllo della versione su una varietà di cose importanti come:

  • Versione installata del software Python.
  • Versione di Debian e versione del kernel.
  • Librerie di terze parti e driver hardware che sono stati installati.
  • Importanti file di configurazione del sistema (sorgenti dell'albero dei dispositivi, rc.local, ecc.)

Mentre lavoro sul debug del mio hardware personalizzato, questo sta diventando particolarmente preoccupante perché sto curiosando e producendo file di configurazione senza controllo della versione.

Esiste un tipo di strumento per la gestione di una configurazione del sistema operativo come questa o almeno alcune best practice che posso implementare? Ho provato a esaminare gli strumenti di gestione della configurazione e tutto ciò che ho trovato è stato mirato più a un tipo di applicazione sysadmin IT per gestire flotte di computer in uso che non si adattano molto bene all'utilizzo dell'hardware incorporato. Mi sento come se stavo cercando la cosa sbagliata.

    
posta Joe Baker 14.09.2017 - 20:42
fonte

2 risposte

2

Ok, hai scritto che hai un file immagine master memorizzato dell'intero filesystem su un'unità di rete che è troppo grande per essere inserito nel controllo della versione. Presumo che l'immagine principale venga cambiata raramente, se mai.

Suppongo che quello che puoi fare qui è creare uno script nel tuo linguaggio di programmazione di tua scelta

  • che carica il file binario dall'unità di rete

  • esegue l'installazione

  • e applica un elenco di modifiche ai file di configurazione, se necessario (ad esempio, lo script può semplicemente copiare una versione più recente dei file di configurazione nel sistema incorporato, installa versioni di componenti più recenti se necessario e così via)

E puoi mettere quello script, insieme con le versioni più recenti dei file di configurazione sotto controllo di versione, immagino? Questo dovrebbe essere tutto ciò di cui hai bisogno. Rende l'ambiente embedded riproducibile, senza la necessità di gonfiare il repository Git con file binari di grandi dimensioni.

La strategia generale qui dovrebbe essere, invece di versionare l'intero binario, versione i passaggi e i comandi per portare l'immagine nello stato richiesto. Nel nostro team, lo facciamo regolarmente con grandi quantità di dati di test, che sono congelati su un'unità di rete, ma necessari nel contesto delle nostre copie di lavoro locali di alcuni programmi. Il tuo caso potrebbe essere un po 'diverso, ma penso che la strategia potrebbe funzionare anche per il tuo caso.

    
risposta data 14.09.2017 - 22:13
fonte
0

Consiglierei di dare un'occhiata a Vagrant & famiglia nella Hashicorp Suite che usa un file di testo versione come una ricetta per specificare l'immagine di base e tutto il componenti installati + passi di costruzione.

The Vagrant Family

  • Vagrant : ti consente anche di costruire VM di test per il tuo sviluppo e amp; test. Gratuito, Open Source, Cross Platform, VCS friendly, basato su Ruby
  • Packer : automatizza la creazione di qualsiasi tipo di immagine della macchina. Configurazione JSON libera, open source, multipiattaforma, VCS amichevole per obiettivi incorporati utilizza un Custom Builder .
  • Terraform, Vault, Console & I Nomad sono molto più specifici per la distribuzione e l'amp; ambienti cloud. Sia open source che amp; edizioni aziendali
risposta data 14.09.2017 - 21:25
fonte

Leggi altre domande sui tag