¿Cómo puedo copiar la misma imagen en muchas SD?

23

¡Así que finalmente puedo hacer ese pedido a granel para Raspberry Pis ! Sin embargo, configurarlos será una tarea difícil. Lo que me gustaría hacer es:

  1. Descargue una imagen de archivo y juegue con ella en una sola Pi
  2. Guardar / extraer / copiar esa imagen en todas las otras tarjetas SD
  3. Haga que el otro Pi esté configurado sin necesidad de configuración adicional.

Mi computadora solo tiene una ranura SD, entonces, ¿hay alguna forma de generar un .imgarchivo desde mi tarjeta 'maestra' modificada?

Tom Medley
fuente
44
Tom echa un vistazo a esta publicación raspberrypi.stackexchange.com/questions/311/… Creo que responde a tu pregunta.
Steve Robillard
@SteveRobillard +1 Eso responderá la pregunta perfectamente.
Jivings
44
Una cosa a tener en cuenta es SSH. Si configura SSH en el maestro, terminará con certificados SSH clonados en todas las imágenes, que no es necesariamente lo que desea. OTOH, si vas a usar el Pis sin cabeza, probablemente quieras instalar SSH ...
Darren Wilkinson
@darrenjw Ese es un punto extremadamente bueno. Me has ahorrado algo de vergüenza y no hay error. Gracias.
Jivings
Dependiendo de cómo pretenda utilizar esa masa de Pis, puede consultar el proyecto Raspi-LTSP de Andrew Mulholland . No solo es útil para el uso en el aula, también es muy bueno para los grupos.
Dave Jones el

Respuestas:

7

Hay un par de sencillos pasos de preparación que hacer antes de escribir un clon master en copias que le ahorrará muchos dolores de cabeza.

  1. Configure el maestro de clonación para DHCP
  2. Elimine todo en /etc/ssh/ssh_host*(estos se recrean cuando ejecuta SSHD)
  3. si tiene un /etc/udev/rules.d/70-network*archivo, necesitará modificar la eth0entrada a otra cosa (que utilicé eth9para mis maestros de clones), y recuerde actualizar el ifconfigarchivo asociado , en centos que es /etc/sysconfig/network-scripts/ifcfg-eth0(hacer 9) y en debian (raspbian) es/etc/network/interfaces
Nox
fuente
7

Tenía los mismos requisitos que 1y 2para distribuir un sistema operativo personalizado. Después de mirar alrededor, encontré muchos comandos, pero no una sola herramienta para crear un .ziparchivo compacto desde una tarjeta SD, así que escribí mkimg.sh, que funciona así:

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

Esto toma el dispositivo desmontado en /dev/sda, reduce el sistema de archivos y la partición, y escribe un zip comprimido. En mi uso, esto escribe un sistema Raspbian ~ 1.5GB para crear <500MB .zip.

Junto con los controles de cordura y los cálculos de tamaño, el script esencialmente hace esto:

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

El script y la documentación están disponibles en GitHub .

berto
fuente
5

Podrías usar el Raspberry Pis junto con multixterm en tu computadora principal para "arrancar" la escritura de tu tarjeta SD. Debería poder encontrar multixterm en muchos administradores de paquetes de distro.

Paso 1: Compre un montón de adaptadores de tarjeta SD de memoria USB.

Paso 2: Use los métodos estándar para escribir 2 de las imágenes de la tarjeta SD con su computadora principal.

Paso 3: coloque las 2 tarjetas SD con imágenes en 2 Raspberry Pis y conéctelas a su red y enciéndalas.

Paso 4: coloque 2 tarjetas SD vacías en los adaptadores de memoria USB y conéctelas a las 2 Rapsberry Pis en ejecución.

Paso 5: Ahora aquí es donde se pone interesante, desde su computadora principal use multixterm como tal desde la línea de comando multixterm -xc "ssh% n" host1 host2 donde host1 y host2 son las direcciones IP de Raspberry Pis.

Paso 6: Dentro de la ventana stdin de multixterm, puede usar dd como lo haría normalmente para escribir imágenes en las tarjetas SD, pero ahora multixterm enviará ese comando dd a Raspberry Pis simultáneamente.

Paso 7: Repita los pasos 3-6 hasta que tenga todas sus tarjetas escritas.

Cuantas más tarjetas SD imagines, más Raspberry Pis podrás usar para crear imágenes de nuevas tarjetas SD. Obviamente, esta técnica no escribirá todas sus tarjetas de una vez, pero reduciría la cantidad de tiempo que lleva completar la escritura de todas las tarjetas. Esta técnica sería en gran medida experimental, por lo que su kilometraje variaría, pero la teoría parece un experimento interesante ...

Dan B
fuente
Muy interesante, pero también muy caro para la escala de masa =) jeje, me encanta. ¿No hay forma de hiperprocesar imágenes de escritura en diferentes consolas en diferentes adaptadores USB SD?
Piotr Kula el
5

Lo que está buscando es un dispositivo Gang Programmer para tarjetas SD o Duplicador de tarjetas SD.

Sí, estos sistemas existen. Aquí hay uno que encontré en Google "programador de pandillas de tarjetas SD". Este dispositivo específico tiene una ranura maestra, que puede copiar hasta 7 tarjetas SD esclavas a la vez. Otros programadores con 3 u 11 ranuras esclavas también están disponibles.

También hay diferentes tipos de programadores. Algunos pueden mostrar una imagen desde su disco duro y es controlada por un software instalado en una PC. Otros dispositivos, como el vinculado anteriormente, no tienen que conectarse a un servidor porque reflejan la información de un chip maestro.

Vale la pena mencionar que estos dispositivos no son baratos. Por lo general, se usan en un entorno de producción en masa y la demanda no es excesivamente alta. Esté preparado para pagar al menos $ 1,000 por un buen dispositivo con esta funcionalidad.

ProDuplicator.com también parece tener muchas más opciones de duplicación de tarjetas SD.

RLH
fuente
Me pregunto por qué cuestan tanto, teniendo en cuenta que todavía necesitas cuidarlo para colocar y sacar manualmente las tarjetas SD.
Dmitry Grigoryev
@DmitryGrigoryev En los 5 años desde mi respuesta, el sitio duplicador ahora tiene uno por menos de $ 600, lo que en mi humilde opinión parece barato. Tenga en cuenta que la cantidad impulsa el precio. No muchas personas los necesitan, por lo que son caros porque necesitan recuperar los costos de desarrollo y fabricación. Si hubiera uno de estos por cada 10 PC o computadoras portátiles, probablemente sería un dispositivo de $ 100-150.
RLH
5

Tuvimos un requisito similar para un proyecto en el que necesitábamos poder escribir imágenes en más de 10 tarjetas SD Raspberry Pi diariamente. Observamos los diversos duplicadores de tarjetas disponibles para comprar, pero descubrimos que la mayoría de ellos no crearán con éxito una tarjeta SD de arranque, ya que la mayoría solo copia archivos directamente y no la información de arranque, ¡también son ridículamente caros!

Entonces, como solución, escribimos nuestro propio software simple basado en la web para ejecutar en una sola Raspberry Pi conectada a 2 x 7 puertos USB con alimentación Belkin (The Pi tiene una limitación de 2 centros y un máximo de 14 puertos USB).

Ahora hemos lanzado esto como software de código abierto para ayudar a otros que tienen el mismo requisito. Actualmente solo está disponible el código fuente, pero también cargaremos un archivo de imagen basado en ARM Arch Linux que ejecuta Nginx + php

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

usuario10282
fuente
2

Esto funciona en Mac OS X.

Desmonta la tarjeta con la que has jugado, luego prueba:

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

Reemplace sdcardlocationcon la ubicación de su tarjeta SD.

Puedes intercambiar .imgcon .dmgo .iso.

Luego, para preparar las otras tarjetas, desmóntelas y ejecute el código anterior con los valores intercambiados. La línea sería esta:

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

Asegúrese de desmontarlos antes de sacarlos del lector de tarjetas.

Teórico
fuente
1

Aunque ¿Cómo hago una copia de seguridad de mi Raspberry Pi? proporciona excelentes instrucciones sobre cómo clonar una sola tarjeta SD, haciéndola una a la vez para que docenas de tarjetas se vuelvan tediosas.

Dado que nadie parece haber producido un lector de tarjetas SD de múltiples tarjetas (uno que pueda contener múltiples tarjetas SD a la vez) y el hecho de que puede comprar un concentrador USB y un montón de lectores USB de tarjetas SD a muy bajo costo, Una forma de acelerar el proceso sería hacer su propio duplicador de tarjetas SD.

Incluso podría escribir un script para escribir automáticamente la imagen de Raspberry Pi elegida en cualquier ranura para tarjeta SD vacía insertada en una ranura. Las secuencias de comandos podrían detectar automáticamente que se ha insertado una tarjeta e indicar cuándo se completa la copia.

Como darrenjw mencionado en los comentarios, sin embargo, tendrá que sustituir los certificados de ssh en cada una de las imágenes clonadas la primera vez que se inician, por lo que puede asegurarse de que este primer arranque se realiza mientras está conectado a un segmento de red privada antes de conectar a una red conectada a internet.

Mark Booth
fuente
Normalmente no monta una tarjeta para mostrar una imagen en ella.
Alex Chamberlain
Gracias @AlexChamberlain, todavía tengo un par de semanas antes de que se suponga que llegue mi Pi (Grrr, si hubiera sabido que estaba en una lista de espera de RS por un largo tiempo de espera, habría ordenado a Farnell con un largo tiempo de entrega en primer lugar), así que aún no he probado esto todavía.
Mark Booth
1

Por lo general, hay una mejor herramienta para hacer esto, que copiar muchas imágenes RP.

Pero depende de lo que realmente quieras hacer.

Debes echar un vistazo a cfengine3 [1], fai [2], chef [3], fabric [4] o puppet [5]. Son herramientas de configuración automática, que serían útiles para hacer cosas en su máquina cuando se inicia por primera vez (y más tarde).

[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
fuente
1

PiBakery podría ser una solución viable para usted. PiBakery le permite crear una imagen Raspbian personalizada utilizando bloques para personalizar varias cosas como contraseñas wifi, claves ssh, etc.

Ameer
fuente
0

Otra alternativa es usar flash , una herramienta de línea de comandos para flashear tarjetas SD con ciertas personalizaciones para el sistema operativo.

Ameer
fuente
0

Para abordar solo tener una sola ranura para tarjeta SD en su computadora, la respuesta fácil para grabar múltiples imágenes de manera eficiente es un concentrador USB con alimentación y una serie de adaptadores microSD-USB económicos. He probado usando un concentrador USB-3 de 13 puertos y adaptadores microSD-USB económicos (<$ 1).

En cuanto a la grabación simultánea de muchas imágenes base, consulte dcfldd . Está disponible en los repositorios raspbian jessie. Es una versión mejorada de GNU dd, con la capacidad de escribir simultáneamente en múltiples imágenes. Hice algunas pruebas casuales y pude copiar una imagen de tarjeta microSD en un RPi 3B en una combinación de 7 tarjetas conectadas a 3 tipos de adaptadores en un concentrador USB. Las pruebas previas a un concentrador USB 2.0 de 3 puertos en un A + también funcionaron. Es más o menos disparar y olvidar una vez que obtiene los parámetros configurados correctamente. Estaba limitado a 7 adaptadores, pero no hay razón para pensar que no funcionaría con una mayor cantidad de tarjetas, aunque las velocidades se limitarán a la de la tarjeta de destino más lenta.

Si necesita mantener una gran cantidad de RPis actualizados con los cambios de configuración una vez que se ejecutan y en su red, buscaría usar ansible o fabric para permitir actualizaciones a través de ssh y evitar la necesidad de volver a grabar el tarjetas para mantenerlos al día.

Finalmente, puede modificar su maestro para cambiar el nombre de host en cada RPi utilizando un identificador único (por ejemplo, basado en la dirección MAC de la red) para permitir una ubicación fácil avahisin tener que modificar cada RPi para evitar conflictos después de que se inicie para evitar conflictos.

bobstro
fuente