Come posso copiare la stessa immagine su molte SD?


23

Quindi finalmente posso effettuare quell'ordine all'ingrosso per Raspberry Pis ! Tuttavia, configurarli sarà un lavoro ingrato. Quello che mi piacerebbe fare è:

  1. Scarica un'immagine stock e armeggia con essa su un singolo Pi
  2. Salva / estrai / copia quell'immagine su tutte le altre schede SD
  3. Chiedi agli altri Pi di essere impostati senza che sia necessario eseguire ulteriori configurazioni

Il mio computer ha solo un singolo slot SD, quindi c'è un modo per generare un .imgfile dalla mia scheda 'master' modificata?


4
Tom dai un'occhiata a questo post raspberrypi.stackexchange.com/questions/311/… Penso che risponda alla tua domanda.
Steve Robillard,

@SteveRobillard +1 Che risponderà perfettamente alla domanda.
Jivings,

4
Una cosa da tenere presente è SSH. Se configuri SSH sul master, finirai con i certificati SSH clonati su tutte le immagini, che non è necessariamente quello che desideri. OTOH, se hai intenzione di usare il Pis senza testa, probabilmente vorrai installare SSH ...
Darren Wilkinson,

@darrenjw Questo è un punto estremamente positivo. Mi hai salvato un po 'di imbarazzo e nessun errore. Grazie.
Jivings,

A seconda di come intendi utilizzare quella massa di Pis, potresti voler dare un'occhiata al progetto Raspi-LTSP di Andrew Mulholland . Non è solo utile per l'uso in classe, ma è anche ottimo per i cluster.
Dave Jones,

Risposte:


7

Ci sono un paio di semplici passaggi di preparazione da fare prima di scrivere un clone master in copie che ti farà risparmiare un sacco di mal di testa.

  1. Configurare il master clone per DHCP
  2. Elimina tutto in /etc/ssh/ssh_host*(questi vengono ricreati quando esegui SSHD)
  3. se hai un /etc/udev/rules.d/70-network*file, dovrai modificare la eth0voce in qualcos'altro (ho usato eth9per i miei master clone) - e ricordati di aggiornare il ifconfigfile associato - in centos che è /etc/sysconfig/network-scripts/ifcfg-eth0( crealo 9) e in debian (raspbian) è/etc/network/interfaces

7

Avevo gli stessi requisiti di 1e 2per distribuire un sistema operativo personalizzato. Dopo aver guardato in giro ho trovato molti comandi, ma non un singolo strumento per creare un .zipfile compatto da una scheda SD, così ho scritto mkimg.sh, che funziona in questo modo:

sudo bash mkimg.sh /dev/sda sdcard.img.zip

Questo porta il dispositivo smontato su /dev/sda, riduce il filesystem e la partizione e scrive uno zip compresso. Nel mio uso, questo scrive un sistema Raspbian da ~ 1,5 GB per creare un <500 MB .zip.

Insieme ai controlli di integrità e ai calcoli delle dimensioni, lo script essenzialmente fa questo:

e2fsck -f /dev/sda2
resize2fs -M /dev/sda2
parted --align optimal /dev/sda unit MB resizepart 2 1700 yes
dd bs=1M if=/dev/sda of=sdcard.img count=1900
zip sdcard.img.zip sdcard.img
parted /dev/sda resizepart 2 16.0GB
resize2fs /dev/sda2

Lo script e la documentazione sono disponibili su GitHub .


5

È possibile utilizzare il Raspberry Pis stesso insieme al multixterm sul computer principale per "avviare il cinturino" della scrittura della scheda SD. Dovresti essere in grado di trovare multixterm in molti gestori di pacchetti di distro.

Passaggio 1: acquista un gruppo di adattatori per schede SD con chiavetta USB.

Passaggio 2: utilizzare i metodi standard per scrivere 2 delle immagini della scheda SD con il computer principale.

Passaggio 3: inserisci le 2 schede SD con le immagini in 2 Raspberry Pis e collegale alla rete e accendile.

Passaggio 4: inserire 2 schede SD vuote negli adattatori per chiavette USB e collegarle ai 2 Rapsberry Pis in esecuzione.

Passo 5: Ora ecco dove diventa interessante, dal tuo computer principale usa multixterm in questo modo dalla riga di comando multixterm -xc "ssh% n" host1 host2 dove host1 e host2 sono gli indirizzi IP di Raspberry Pis.

Passaggio 6: All'interno della finestra stdin di multixterm è possibile utilizzare dd come si farebbe normalmente per scrivere immagini su schede SD, ma ora multixterm invierà contemporaneamente il comando dd a entrambi Raspberry Pis.

Passaggio 7: ripetere i passaggi 3-6 fino a quando non sono state scritte tutte le carte.

Più schede SD immagini, più Raspberry Pis puoi utilizzare per l'immagine di nuove schede SD. Ovviamente questa tecnica non scriverà tutte le tue carte in una volta, ma ridurrebbe il tempo necessario per completare la scrittura di tutte le carte. Questa tecnica sarebbe ampiamente sperimentale, quindi il tuo chilometraggio potrebbe variare, ma la teoria sembra un esperimento interessante ...


Molto interessante - ma anche molto costoso per la scala di massa =), lo adora. Non c'è modo di hyper thread per scrivere immagini in console diverse su adattatori SD USB diversi forse?
Piotr Kula,

5

Quello che stai cercando è un dispositivo Gang Programmer per schede SD o duplicatore di schede SD.

Sì, questi sistemi esistono. Eccone uno che ho trovato da Google "programmatore di gang di schede SD". Questo specifico dispositivo ha uno slot master, che può copiare fino a 7 schede SD slave contemporaneamente. Sono disponibili anche altri programmatori con 3 o 11 slot slave.

Esistono anche diversi tipi di programmatori. Alcuni possono eseguire il flashing di un'immagine dal disco rigido ed è controllato dal software installato su un PC. Altri dispositivi, come quello collegato sopra, non devono interfacciarsi a un server perché rispecchiano le informazioni di un chip principale.

Vale la pena ricordare che questi dispositivi non sono economici. Sono generalmente utilizzati in un ambiente di produzione di massa e la domanda non è eccessivamente elevata. Preparati a pagare almeno $ 1.000 per un buon dispositivo con questa funzionalità.

ProDuplicator.com sembra avere anche alcune altre opzioni di duplicazione della scheda SD.


Mi chiedo perché costino così tanto, considerando che devi ancora fare da baby-sitter a questa cosa per inserire e estrarre manualmente le schede SD.
Dmitry Grigoryev il

@DmitryGrigoryev Nei 5 anni dalla mia risposta, il sito del duplicatore ora ne ha uno per meno di $ 600, che IMHO sembra economico. Tieni presente che la quantità determina il prezzo. Non molte persone ne hanno bisogno, quindi sono costose perché devono recuperare i costi di sviluppo e produzione. Se ce ne fosse uno per ogni 10 PC o laptop, probabilmente sarebbe un dispositivo da $ 100-150.
RLH,

5

Avevamo un requisito simile per un progetto in cui dovevamo essere in grado di scrivere immagini su più di 10 schede Raspberry Pi SD su base giornaliera. Abbiamo esaminato i vari duplicatori di schede disponibili per l'acquisto, ma abbiamo scoperto che la maggior parte di essi non creava correttamente una scheda SD di avvio, poiché la maggior parte copia solo i file direttamente e non le informazioni di avvio, sono anche ridicolmente costose!

Quindi, come soluzione, abbiamo scritto il nostro semplice software basato su Web per l'esecuzione su un singolo Raspberry Pi collegato a hub USB alimentati Belkin a 2 x 7 porte (The Pi ha una limitazione di 2 hub e un massimo di 14 porte USB).

Ora abbiamo rilasciato questo come software Open Source per aiutare gli altri che hanno gli stessi requisiti. Attualmente è disponibile solo il codice sorgente ma cariceremo anche un file di immagine basato su Arch Linux ARM con Nginx + php

http://www.rockandscissor.com/projects/osid


2

Funziona su Mac OS X.

Smonta la carta con cui hai armeggiato, quindi prova:

sudo dd if=/dev/sdcardlocation of=backupimage.img.

Sostituisci sdcardlocationcon la posizione della tua scheda SD.

Puoi scambiare .imgcon .dmgo .iso.

Successivamente, per preparare le altre carte, smontale ed esegui il codice precedente con i valori scambiati in tondo. La linea sarebbe questa:

sudo dd if=backupimage.img of=/dev/sdcardlocation.

Assicurati di smontarli prima di estrarli dal lettore di schede.


1

Sebbene come posso eseguire il backup di Raspberry Pi? fornisce eccellenti istruzioni su come clonare una singola scheda SD, farlo una alla volta per dozzine di carte diventerà noioso.

Dato che nessuno sembra aver prodotto un lettore di schede SD multi-card (uno che può contenere più schede SD contemporaneamente) e il fatto che è possibile acquistare un hub USB e un gruppo di lettori USB con scheda SD singola a un prezzo molto basso, un modo per accelerare il processo sarebbe quello di creare il proprio duplicatore di schede SD.

Puoi persino scrivere uno script per scrivere automaticamente l'immagine Raspberry Pi che hai scelto su qualsiasi slot per scheda SD vuoto inserito in uno slot. Gli script potrebbero rilevare automaticamente che una scheda è stata inserita e indicare quando la copia è stata completata.

Come darrenjw menzionato nei commenti, tuttavia, ti consigliamo di sostituire i certificati ssh in ciascuna delle immagini clonate al primo avvio, quindi potresti assicurarti che questo primo avvio venga eseguito mentre sei connesso a un segmento di rete privata prima di connetterti ad una rete connessa ad internet.


Normalmente non si monta una scheda per far lampeggiare un'immagine su di essa.
Alex Chamberlain,

Grazie @AlexChamberlain, ho ancora un paio di settimane prima che il mio Pi dovrebbe arrivare (Grrr, se avessi saputo che ero in una lista d'attesa RS da molto tempo che avrei appena ordinato da Farnell con un lungo tempo di consegna in primo luogo) quindi non ho ancora provato questo.
Mark Booth,

1

Di solito ci sono strumenti migliori per farlo, quindi per copiare molte immagini RP.

Ma dipende da cosa vuoi davvero fare.

Dovresti dare un'occhiata a cfengine3 [1], fai [2], chef [3], fabric [4] o puppet [5]. Sono strumenti di configurazione automatica, che sarebbero utili per fare cose nella tua macchina quando vengono avviate la prima volta (e successivamente).

[1] http://cfengine.com/ [2] http://fai-project.org/ [3] http://www.opscode.com/chef/ [4] http: //www.debian- administration.org/articles/671 [5] http://puppetlabs.com/puppet/puppet-enterprise/


1

PiBakery potrebbe essere una soluzione praticabile per te. PiBakery ti consente di creare un'immagine Raspbian personalizzata usando i blocchi per personalizzare varie cose come password wifi, chiavi ssh, ecc ...


0

Un'altra alternativa è utilizzare Flash , uno strumento da riga di comando per eseguire il flashing di schede SD con determinate personalizzazioni al sistema operativo.


0

Per risolvere il problema con un solo slot per scheda SD sul computer, la risposta semplice per masterizzare più immagini in modo efficiente è un hub USB alimentato e una serie di adattatori microSD-USB economici. Ho testato utilizzando un hub USB-3 a 13 porte e adattatori microSD-USB economici (<$ 1).

Per quanto riguarda la masterizzazione simultanea di molte immagini di base, controlla dcfldd . È disponibile nei repository jessie di raspbian. È una versione migliorata di GNU dd, con la possibilità di scrivere simultaneamente su più immagini. Ho fatto alcuni test casuali e sono stato in grado di copiare un'immagine di una scheda microSD su un RPi 3B in un mix di 7 schede collegate a 3 tipi di adattatori su un hub USB. Anche i test precedenti su un hub USB 2.0 a 3 porte su un A + funzionavano. È praticamente sparare e dimenticare una volta impostati correttamente i parametri. Ero limitato a 7 adattatori, ma non c'è motivo di pensare che non avrebbe funzionato con un numero maggiore di schede, anche se le velocità saranno limitate a quella della scheda di destinazione più lenta.

Se è necessario mantenere un gran numero di RPI up-to-date con le modifiche di configurazione una volta che sono in esecuzione e sulla rete, mi piacerebbe guardare in utilizzando ansible o tessuto per consentire gli aggiornamenti oltre ssh ed evitare che necessitano di ri-masterizzare il carte per tenerli aggiornati.

Infine, è possibile modificare il master per cambiare il nome host su ciascun RPi utilizzando un identificatore univoco (ad esempio basato sull'indirizzo MAC di rete) per consentire una facile localizzazione tramite avahisenza dover modificare ogni RPi per evitare conflitti dopo l'avvio per evitare conflitti.

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.