Creazione di un'immagine della scheda SD pre-preparata


19

Per un progetto a cui sto lavorando vorrei creare un'immagine "stock" basata su Raspbian che posso installare su molti Pis.

Idealmente mi piacerebbe essere in grado (sul mio computer) di prendere l'immagine di Raspbian, apt-ottenere alcuni pacchetti, modificare alcune configurazioni e quindi creare e un'immagine della scheda SD da quella da mettere sul mio Pis.

Esiste un modo semplice o consigliato per farlo? Eventuali insidie ​​che posso incontrare?

Sono desideroso di evitare di armeggiare manualmente con un pi e quindi clonare quell'immagine. Presumibilmente Raspbian è realizzato in un modo che non è qualcuno che fa clic manualmente sui pulsanti su un Pi. Mi piacerebbe farlo in questo modo, se posso.

Idealmente, voglio creare qualcosa che possa essere automaticamente costruito su un server di integrazione continua - non voglio un processo di compilazione che implichi "scrivere una scheda SD, inserirla in un Pi" perché voglio essere ale per creare immagini senza alcun accesso fisico a un Raspberry Pi.


3
Può tornare utile: come posso montare un'immagine distro di Raspberry Pi Linux? - annota la riga sottolineata nella risposta accettata, "Se cambi qualcosa, tali cambiamenti verranno inclusi nel file .img." Sfortunatamente, ciò non offre l'opportunità di candidarsi apt-get; il modo più semplice per farlo sarebbe usare una VM e rsynccon un'immagine montata identica a quella usata per avviare la VM (dal momento che le immagini VM stesse non vanno bene per questo) ma penso che l'unica opzione VM qui sia QEMU, che AFAICT è un PITA.
riccioli d'oro

Un altro approccio sarebbe l'avvio da rete.
lexu,

Win32DiskImager ha una funzione di lettura, l'hai provato?
Kong Chun Ho,

Risposte:


6

La fondazione Raspberry Pi utilizza una serie di script bash che automatizzano QEMU per generare le loro immagini. Dovresti ancora esaminare la buildroot degli "standard di settore" e anche Yocto.

https://github.com/RPi-Distro/pi-gen

http://cellux.github.io/articles/diy-linux-with-buildroot-part-1/


Se l'OP sta cercando di creare un'immagine di rilascio standard del settore .. sì, questa è la strada da percorrere, ma è un'enorme curva di apprendimento e non vorrei che nessun hobbista su quella strada.
Piotr Kula,

1
Sembra quello che sto cercando! Ci sono delle guide per l'utilizzo di questo? build.sh sembra presupporre che siano state impostate alcune variabili di ambiente.
Andy Smith,

Probabilmente coperto da # 4 sotto TODO ;) Non è stato toccato da alcuni mesi, quindi o le persone coinvolte sono impegnate con altre cose o hanno perso interesse.
riccioli d'oro

@goldilocks, quindi questa non è la provenienza dell'immagine rasbian di base?
Andy Smith,

3
Sarò onesto e dirò che la mia impressione è che stai perseguendo il lato Y di un problema XY con troppo vigore - è implicito che pensi che il metodo più semplice (basta impostare un'immagine su un pi, che può essere fatto da un computer tramite accesso remoto e l'immagine stessa ottimizzata dal montaggio, che può essere eseguita su un PC, e tutto ciò può essere automatizzato con lo scripting) è troppo fastidiosa, e quindi hai riposto le tue speranze in un metodo che è in realtà molto più seccature .
Riccioli d'oro

5

Il mio progetto Nard SDK ha molte delle funzionalità che desideri. Non è Raspbian ma ha un'emulazione binaria di Raspbian e sono quindi molto vicini. Con Nard costruisci tutto su un PC e il processo è molto veloce e riproducibile. Tutto è programmabile tramite script e può essere fatto, ad esempio, con un'integrazione continua notturna.
http://www.arbetsmyra.dyndns.org/nard/


0

A mio avviso , farlo nel modo che hai suggerito (montaggio, soluzioni alternative per l'aggiornamento e la configurazione, ecc.) Presenta più sfide rispetto alle soluzioni reali . Certo, può essere divertente farlo a modo tuo se sei interessato, ma il modo migliore e più semplice potrebbe essere quello che stai evitando.

Ti consiglio di ottenere un Pi e fare quello che devi fare su di esso, quindi fare un'immagine della sua scheda SD. Quindi, usa quell'immagine sull'altro tuo Pis poiché quell'immagine è già configurata.

Nota: suppongo che userete Raspbian. Presumo anche che tu sia solo una persona media e non una persona che prepara immagini su base frequente (ad es. Raspberry Pi Foundation).


Passaggi se fai armeggiare con il tuo Pi:

  1. Scarica e installa un'immagine del sistema operativo nuova di tua scelta
  2. Collegare il cavo Ethernet / connettersi al WiFi
    • Forse esegui una scansione LAN se non conosci gli indirizzi IP del tuo Pi
  3. Fai cose via SSH
    • apt-get update -y && apt-get upgrade per aggiornare i pacchetti
    • Le tue esigenze di configurazione personale
  4. Crea un'immagine, quindi usa quell'immagine per altri Pis.

Passaggi se non armeggi con il tuo Pi (vedi nota sopra):

  1. Scarica una nuova immagine del sistema operativo
  2. Montare l'immagine usando le istruzioni di /raspberrypi//a/13138/24224 (devi anche considerare quale sistema operativo / immagine hai poiché alcuni hanno layout FS diversi)
    • Tieni pronta una calcolatrice.
  3. Trova il debfile per ogni pacchetto che desideri aggiornare, oltre alle relative dipendenze , oltre a quelle dipendenze di tali dipendenze , oltre alle dipendenze di tali dipendenze . apt-offlineè una seccatura. Fare riferimento a questo link
    • Quindi trova un modo per installare tutti quei pacchetti senza usare / armeggiare con il tuo Pi. apt-getnon funzionerà offline. deb dettagli del file qui . In bocca al lupo.
  4. Aggiorna i kernel Pi e le cose di basso livello usando lo strumento di Hexxeh
  5. Configura in base alle tue esigenze
  6. Scrivi un'immagine modificata sulle schede SD del tuo Pis.

Non vedo alcun vantaggio nel non armeggiare con il tuo Pi.

Tagliati un po 'di gioco con il tuo Pi. Devi farlo solo una volta.


È quasi impossibile ottenere i programmi manualmente ottenendo, dipendenze e dipendenze e là dipendenze, ecc. Ma se usi apt-get e dici che vuoi VLC lo faresti, apt-get install vlc --yes --print- URI. Ciò fornirà un elenco di collegamenti; una volta scaricato, inseriscili in / var / cache / apt / archives / partial ed esegui dpkg -i partial / *. deb per l'installazione. Ancora meglio, se ottieni Synaptics, ha un'opzione per generare script di download di pacchetti. Esegui quello script su un computer Linux e avrai i tuoi pacchetti. Quindi è possibile installarli nuovamente con Synaptics.
NULL

@NULLThen find a way to install all of those packages without using/tinkering with your Pi.
PNDA

@NULL Per quanto ne so, è possibile utilizzare solo dpkgsul sistema stesso, non su un'immagine montata. Inoltre, OP sta pianificando di utilizzare il proprio PC, quindi i *.debfile che hai sono per un'architettura errata in primo luogo (il PC è x86 / x64, Pi è ARMv6 / v7)
PNDA

Come ho specificato nella mia domanda, non voglio fare 1. Quanto al 2, sembra pazzesco :). Cosa ti fa pensare che il suggerimento di @flakeshakes sia più difficile da 2?
Andy Smith,

@AndySmith citerò il commento di goldilock:I'll be honest and say that my impression is you are pursuing the Y side of an XY problem with too much vigour -- it's implied you think the simpler method (just set up an image on a pi, which can be done from a computer via remote login, and the image itself tweaked by mounting, which can be done on a PC, and all of this can be automated with scripting) is too much hassle, and so you have put your hopes in a method that is actually much more hassle.
PNDA

0

Penso che quello che stai cercando sia una specie di (software) configuration management. Con questo saresti in grado di avviare un'immagine raspbian di serie e quindi eseguire il push sulla tua configurazione (inclusi nuovi pacchetti e simili). Ci sono molti sistemi SCM là fuori. Il rovescio della medaglia è che la maggior parte di questi sistemi ha lo scopo di supportare reti su larga scala e quindi è forse un po 'eccessivo per il tuo scopo. È inoltre necessario un tipo di server di provisioning. Gli SCM più popolari sembrano essere Puppet , Chef , Ansible . Articoli per iniziare:

Questa è una specie di risposta generica, ma SCM è un campo ampio. Forse vale la pena scavare a seconda di quali sono i tuoi piani.


Ansible sembra promettente perché è privo di agenti e non è necessario un server completo per eseguirlo.
duenni,

1
Non proprio, voglio che l'immagine sia già costruita, non qualcosa su cui affido le cose. Questo suggerimento non funziona se il mio Pi non ha una connessione di rete.
Andy Smith,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.