Comment puis-je copier la même image sur plusieurs SD?

23

Donc, finalement, je peux passer cette commande groupée de Raspberry Pis ! Cependant, leur configuration va être une corvée. Ce que j'aimerais faire, c'est:

  1. Téléchargez une image de stock et bricolez-la sur un seul Pi
  2. Enregistrer / extraire / copier cette image sur toutes les autres cartes SD
  3. Ayez tous les autres Pi configurés sans aucune configuration supplémentaire à faire

Mon ordinateur ne dispose que d'un seul emplacement SD, donc existe-t-il un moyen de générer un .imgfichier à partir de ma carte «maître» modifiée?

Tom Medley
la source
4
Tom consultez cet article raspberrypi.stackexchange.com/questions/311/… Je pense que cela répond à votre question.
Steve Robillard
@SteveRobillard +1 Cela répondra parfaitement à la question.
Jivings
4
Une chose à savoir est SSH. Si vous configurez SSH sur le maître, vous vous retrouverez avec des certificats SSH clonés sur toutes les images, ce qui n'est pas nécessairement ce que vous voulez. OTOH, si vous allez utiliser le Pis sans tête, vous voulez probablement que SSH soit installé ...
Darren Wilkinson
@darrenjw C'est un très bon point. Vous m'avez sauvé de l'embarras et pas d'erreur. Merci.
Jivings
Selon la façon dont vous avez l'intention d'utiliser cette masse de Pis, vous voudrez peut-être consulter le projet Raspi-LTSP d' Andrew Mulholland . Ce n'est pas seulement utile pour une utilisation en classe - c'est aussi très bon pour les clusters.
Dave Jones

Réponses:

7

Il y a quelques étapes de préparation faciles à faire avant d'écrire un maître de clone sur des copies qui vous éviteront beaucoup de maux de tête.

  1. Configurer le maître de clonage pour DHCP
  2. Tout supprimer /etc/ssh/ssh_host*(ceux-ci sont recréés lorsque vous exécutez SSHD)
  3. si vous avez un /etc/udev/rules.d/70-network*fichier, vous devrez modifier l' eth0entrée à quelque chose d'autre (j'ai utilisé eth9pour mes maîtres de clone) - et n'oubliez pas de mettre à jour le ifconfigfichier associé - en centos c'est-à-dire /etc/sysconfig/network-scripts/ifcfg-eth0(faire 9) et en debian (raspbian) c'est/etc/network/interfaces
Nox
la source
7

J'ai eu les mêmes exigences 1et 2de distribuer un système d' exploitation personnalisé. Après avoir regardé autour de moi, j'ai trouvé de nombreuses commandes, mais pas un seul outil pour créer un .zipfichier compact à partir d'une carte SD, alors j'ai écrit mkimg.sh, qui fonctionne comme ceci:

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

Cela prend le périphérique non monté à /dev/sda, réduit le système de fichiers et la partition, et écrit un zip compressé. Dans mon utilisation, ce système écrit un Raspbian ~ 1.5GB pour créer un <500Mo .zip.

En plus des vérifications d'intégrité et des calculs de taille, le script fait essentiellement ceci:

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

Le script et la documentation sont disponibles sur GitHub .

berto
la source
5

Vous pouvez utiliser les Raspberry Pis eux-mêmes ainsi que le multixterm sur votre ordinateur principal pour "démarrer" l'écriture de votre carte SD. Vous devriez pouvoir trouver multixterm dans de nombreux gestionnaires de paquets de distribution.

Étape 1: Achetez un tas d'adaptateurs de carte SD pour clé USB.

Étape 2: Utilisez les méthodes standard pour écrire 2 des images de la carte SD avec votre ordinateur principal.

Étape 3: Mettez les 2 cartes SD avec images dans 2 Raspberry Pis et connectez-les à votre réseau et mettez-les sous tension.

Étape 4: Insérez 2 cartes SD vides dans les adaptateurs de clé USB et branchez-les sur les 2 Rapsberry Pis en cours d'exécution.

Étape 5: Maintenant, voici où cela devient intéressant, à partir de votre ordinateur principal, utilisez multixterm comme cela à partir de la ligne de commande multixterm -xc "ssh% n" host1 host2 où host1 et host2 sont les adresses IP du Raspberry Pis.

Étape 6: À l'intérieur de la fenêtre stdin de multixterm, vous pouvez utiliser dd comme vous le feriez normalement pour écrire des images sur les cartes SD, mais maintenant multixterm enverra cette commande dd aux deux Raspberry Pis simultanément.

Étape 7: Répétez les étapes 3 à 6 jusqu'à ce que toutes vos cartes soient écrites.

Plus vous créez de cartes SD, plus vous pouvez utiliser de Raspberry Pis pour créer de nouvelles cartes SD. Évidemment, cette technique n'écrira pas toutes vos cartes en une seule fois, mais elle réduirait le temps nécessaire pour terminer l'écriture de toutes les cartes. Cette technique serait largement expérimentale donc votre kilométrage varierait, mais sa théorie sonne comme une expérience intéressante ...

Dan B
la source
Très intéressant - mais aussi très cher à grande échelle =) hehe l'adore. N'y a-t-il pas moyen d'hyper thread écrire des images dans différentes consoles vers différents adaptateurs USB SD peut-être?
Piotr Kula
5

Ce que vous cherchez, c'est un appareil Gang Programmer pour cartes SD, ou SD Card Duplicator.

Oui, ces systèmes existent. Voici celui que j'ai trouvé par Googling "programmeur de gangs de cartes SD". Cet appareil spécifique dispose d'un emplacement maître, qu'il peut copier jusqu'à 7 cartes SD esclaves à la fois. D'autres programmeurs avec 3 ou 11 emplacements esclaves sont également disponibles.

Il existe également différents types de programmeurs. Certains peuvent flasher une image de votre disque dur et sont contrôlés par un logiciel installé sur un PC. D'autres appareils, comme celui lié ci-dessus, n'ont pas à s'interfacer avec un serveur car ils reflètent les informations d'une puce principale.

Il convient de mentionner que ces appareils ne sont pas bon marché. Ils sont généralement utilisés dans un environnement de production de masse et la demande n'est pas excessivement élevée. Soyez prêt à payer au moins 1 000 $ pour un bon appareil doté de cette fonctionnalité.

ProDuplicator.com semble également avoir plusieurs options de duplication de carte SD.

RLH
la source
Je me demande pourquoi ceux-ci coûtent si cher, étant donné que vous devez encore garder cette chose pour mettre et retirer manuellement les cartes SD.
Dmitry Grigoryev
@DmitryGrigoryev Dans les 5 oui depuis ma réponse, le site duplicateur en a maintenant un pour moins de 600 $, ce qui à mon humble avis semble bon marché. Gardez à l'esprit que la quantité détermine le prix. Peu de gens en ont besoin, ils sont donc chers car ils doivent récupérer les coûts de développement et de fabrication. S'il y en avait un pour 10 PC ou ordinateurs portables, ce serait probablement un appareil de 100 à 150 $.
RLH
5

Nous avions une exigence similaire pour un projet où nous devions être en mesure d'écrire des images sur plus de 10 cartes SD Raspberry Pi quotidiennement. Nous avons examiné les différents duplicateurs de cartes disponibles à l'achat, mais nous avons constaté que la plupart d'entre eux ne réussiraient pas à créer une carte SD amorçable, car la plupart ne copient que des fichiers directement et non les informations de démarrage, ils sont également ridiculement chers!

Donc, comme solution, nous avons écrit notre propre logiciel Web simple à exécuter sur un seul Raspberry Pi connecté à 2 concentrateurs USB alimentés par Belkin à 7 ports (le Pi a une limitation de 2 concentrateurs et un maximum de 14 ports USB).

Nous l'avons maintenant publié en tant que logiciel Open Source pour aider ceux qui ont la même exigence. Actuellement, seul le code source est disponible, mais nous téléchargerons également un fichier image basé sur Arch Linux ARM exécutant Nginx + php

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

user10282
la source
2

Cela fonctionne sur Mac OS X.

Démontez la carte avec laquelle vous avez bricolé, puis essayez:

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

Remplacez sdcardlocationpar l'emplacement de votre carte SD.

Vous pouvez échanger .imgavec .dmgou .iso.

Ensuite, pour préparer les autres cartes, démontez-les et exécutez le code précédent avec les valeurs échangées. La ligne serait la suivante:

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

Assurez-vous de les démonter avant de les retirer du lecteur de carte.

Théorémiseur
la source
1

Bien comment sauvegarder mon Raspberry Pi? fournit d'excellentes restrictions sur la façon de cloner une seule carte SD, le faire une à la fois pour des dizaines de cartes deviendra fastidieux.

Étant donné que personne ne semble avoir produit un lecteur de carte SD multi-cartes (un qui peut contenir plusieurs cartes SD à la fois) et le fait que vous pouvez acheter un concentrateur USB et un tas de lecteurs USB de carte SD à très bon marché, une façon d'accélérer le processus serait de créer votre propre duplicateur de carte SD.

Vous pouvez même écrire un script pour écrire automatiquement l'image de votre Raspberry Pi choisie sur n'importe quel emplacement de carte SD vide inséré dans un emplacement. Les scripts pourraient détecter automatiquement qu'une carte a été insérée et indiquer quand la copie est terminée.

Comme darrenjw l'a mentionné dans les commentaires, vous souhaiterez remplacer les certificats ssh dans chacune des images clonées la première fois qu'elles sont démarrées, vous pouvez donc vous assurer que ce premier démarrage est effectué lors de la connexion à un segment de réseau privé avant la connexion à un réseau connecté à Internet.

Mark Booth
la source
Normalement, vous ne montez pas de carte pour y flasher une image.
Alex Chamberlain
Merci @AlexChamberlain, il me reste encore quelques semaines avant l'arrivée de mon Pi (Grrr, si j'avais su que j'étais sur une liste d'attente RS depuis longtemps, j'aurais juste commandé à Farnell avec une longue délai de livraison en premier lieu), donc je n'ai pas encore essayé.
Mark Booth
1

Il existe généralement un meilleur outil pour ce faire, puis pour copier un grand nombre d'images RP.

Mais cela dépend de ce que vous voulez vraiment faire.

Vous devriez jeter un œil à cfengine3 [1], fai [2], chef [3], tissu [4] ou marionnette [5]. Ce sont des outils de configuration automatique, qui seraient utiles pour faire des choses dans votre machine lors du premier démarrage (et plus tard).

[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/

Anders
la source
1

PiBakery pourrait être une solution viable pour vous. PiBakery vous permet de créer une image Raspbian personnalisée à l'aide de blocs pour personnaliser diverses choses comme les mots de passe wifi, les clés ssh, etc ...

Ameer
la source
0

Une autre alternative consiste à utiliser flash , un outil en ligne de commande pour flasher les cartes SD avec certaines personnalisations du système d'exploitation.

Ameer
la source
0

Pour éviter d'avoir un seul emplacement pour carte SD sur votre ordinateur, la solution la plus simple pour graver efficacement plusieurs images est un concentrateur USB alimenté et un certain nombre d'adaptateurs microSD-USB bon marché. J'ai testé en utilisant un concentrateur USB-3 à 13 ports et des adaptateurs microSD-USB bon marché (<$ 1).

En ce qui concerne la gravure simultanée de nombreuses images de base, consultez dcfldd . Il est disponible dans les dépôts raspbian jessie. Il s'agit d'une version améliorée de GNU dd, avec la possibilité d'écrire simultanément sur plusieurs images. J'ai fait quelques tests occasionnels et j'ai pu copier une image de carte microSD sur un RPi 3B vers un mélange de 7 cartes branchées sur 3 types d'adaptateurs sur un hub USB. Les tests précédents sur un concentrateur USB 2.0 à 3 ports sur un A + ont également fonctionné. C'est à peu près feu-et-oublier une fois que les paramètres sont correctement définis. J'étais limité à 7 adaptateurs, mais il n'y a aucune raison de penser que cela ne fonctionnerait pas avec un plus grand nombre de cartes, bien que les vitesses soient limitées à celles de la carte de destination la plus lente.

Si vous devez garder un grand nombre de RPis à jour avec les changements de configuration une fois qu'ils sont en cours d'exécution et sur votre réseau, je chercherais à utiliser ansible ou fabric pour autoriser les mises à jour sur ssh et éviter d'avoir à re-graver le cartes pour les tenir à jour.

Enfin, vous pouvez modifier votre maître pour changer le nom d'hôte sur chaque RPi en utilisant un identifiant unique (par exemple basé sur l'adresse MAC du réseau) pour permettre une localisation facile via avahisans avoir à modifier chaque RPi pour éviter les conflits après son démarrage pour éviter les conflits.

bobstro
la source