Como posso copiar a mesma imagem para muitos SDs?

23

Então, finalmente, eu posso fazer esse pedido em massa para Raspberry Pis ! No entanto, configurá-los será uma tarefa árdua. O que eu gostaria de fazer é:

  1. Faça o download de uma imagem e mexa com ela em um único Pi
  2. Salve / extraia / copie essa imagem para todos os outros cartões SD
  3. Os outros Pi estão todos configurados sem precisar de nenhuma configuração adicional

Meu computador possui apenas um slot SD, então existe uma maneira de gerar um .imgarquivo a partir do meu cartão 'mestre' modificado?

Tom Medley
fonte
4
Tom confira este post raspberrypi.stackexchange.com/questions/311/… Acho que responde à sua pergunta.
Steve Robillard
@SteveRobillard +1 Isso responderá perfeitamente à pergunta.
Jivings
4
Uma coisa a ter em atenção é o SSH. Se você configurar o SSH no mestre, você terminará com certificados SSH clonados em todas as imagens, o que não é necessariamente o que você deseja. OTOH, se você estiver usando o Pis sem cabeça, provavelmente desejará que o SSH seja instalado ...
Darren Wilkinson
@darrenjw Esse é um ponto extremamente bom. Você me salvou de vergonha e sem erro. Obrigado.
21712 Jivings
Dependendo de como você pretende usar essa massa de Pis, consulte o projeto Raspi-LTSP de Andrew Mulholland . Não é apenas útil para uso em sala de aula - também é muito bom para clusters.
Dave Jones

Respostas:

7

Existem algumas etapas fáceis de preparar antes de escrever um mestre de clone em cópias, o que poupará muitas dores de cabeça.

  1. Configure o clone mestre para DHCP
  2. Exclua tudo /etc/ssh/ssh_host*(eles são recriados quando você executa o SSHD)
  3. se você tiver um /etc/udev/rules.d/70-network*arquivo, precisará modificar a eth0entrada para outra coisa (usei eth9para meus mestres de clones) - e lembre-se de atualizar o ifconfigarquivo associado - nos centos que são /etc/sysconfig/network-scripts/ifcfg-eth0(make it 9) e no debian (raspbian) é/etc/network/interfaces
Nox
fonte
7

Eu tinha os mesmos requisitos 1e 2para distribuir um sistema operacional personalizado. Depois de olhar ao redor, encontrei muitos comandos, mas nenhuma ferramenta para criar um .ziparquivo compacto a partir de um cartão SD, então escrevi mkimg.sh, que funciona assim:

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

Isso leva o dispositivo desmontado/dev/sda , reduz o sistema de arquivos e a partição e grava um zip compactado. No meu uso, isso cria um sistema Raspbian de ~ 1.5GB para criar um <500MB .zip.

Juntamente com verificações de integridade e cálculos de tamanho, o script basicamente faz isso:

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

O script e a documentação estão disponíveis no GitHub .

berto
fonte
5

Você pode usar os Raspberry Pis em si, juntamente com o multixterm no computador principal, para "inicializar" a gravação do cartão SD. Você deve encontrar multixterm em muitos gerenciadores de pacotes da distribuição.

Etapa 1: Compre vários adaptadores de cartão SD do stick USB.

Etapa 2: use os métodos padrão para gravar 2 das imagens do cartão SD no seu computador principal.

Etapa 3: Coloque os 2 cartões SD com imagens em 2 Raspberry Pis e conecte-os à sua rede e ligue-os.

Etapa 4: Coloque 2 cartões SD vazios nos adaptadores USB e conecte-os aos 2 Rapsberry Pis em execução.

Etapa 5: Agora é aqui que fica interessante: no computador principal, use multixterm da linha de comando multixterm -xc "ssh% n" host1 host2 host2 em que host1 e host2 são os endereços IP dos Raspberry Pis.

Etapa 6: Dentro da janela stdin do multixterm, você pode usar o dd como faria normalmente para gravar imagens nos cartões SD, mas agora o multixterm envia esse comando dd para os dois Raspberry Pis simultaneamente.

Etapa 7: repita as etapas de 3 a 6 até que todos os seus cartões sejam gravados.

Quanto mais cartões SD você imagina, mais Raspberry Pis você pode usar para criar novos cartões SD. Obviamente, essa técnica não escreverá todos os seus cartões de uma só vez, mas reduziria o tempo necessário para concluir a escrita de todos os cartões. Essa técnica seria amplamente experimental, portanto sua milhagem variaria, mas a teoria dela soa como um experimento interessante ...

Dan B
fonte
Muito interessante - mas também muito caro para escala de massa =) hehe adoro. Talvez não exista uma maneira de encadear imagens de gravação em threads em diferentes consoles para diferentes adaptadores USB SD?
Piotr Kula #
5

O que você está procurando é um dispositivo Gang Programmer para cartões SD ou Duplicador de Cartão SD.

Sim, esses sistemas existem. Aqui está um que eu encontrei no Googling "programador de gangues de cartões sd". Este dispositivo específico possui um slot mestre, que pode copiar até 7 cartões SD escravos de uma só vez. Outros programadores com 3 ou 11 slots escravos também estão disponíveis.

Existem também diferentes tipos de programadores. Alguns podem piscar uma imagem do seu disco rígido e são controlados pelo software instalado em um PC. Outros dispositivos, como o link acima, não precisam fazer interface com os servidores porque espelham as informações de um chip mestre.

Vale ressaltar que esses dispositivos não são baratos. Eles geralmente são usados ​​em um ambiente de produção em massa e a demanda não é excessivamente alta. Esteja preparado para pagar pelo menos US $ 1.000 por um bom dispositivo com essa funcionalidade.

O ProDuplicator.com parece ter também muito mais opções de duplicação de cartão SD.

RLH
fonte
Eu me pergunto por que custam tanto, considerando que você ainda precisa cuidar dessa coisa para colocar e retirar manualmente os cartões SD.
Dmitry Grigoryev
@DmitryGrigoryev Nos 5 anos desde a minha resposta, o site duplicador agora tem um por menos de US $ 600, que IMHO parece barato. Lembre-se de que a quantidade gera preço. Muitas pessoas não precisam disso, por isso são caras porque precisam recuperar os custos de desenvolvimento e fabricação. Se houvesse um desses para cada 10 PCs ou laptops, provavelmente seria um dispositivo de US $ 100-150.
RLH 6/07
5

Tínhamos um requisito semelhante para um projeto em que precisávamos ser capazes de gravar imagens em mais de 10 cartões SD Raspberry Pi diariamente. Analisamos os vários Card Duplicator disponíveis para compra, mas descobrimos que a maioria deles não será capaz de criar um cartão SD inicializável, pois a maioria apenas copia arquivos diretamente e não as informações inicializáveis, além de serem ridiculamente caras!

Portanto, como solução, criamos nosso próprio software simples baseado na Web para rodar em um único Raspberry Pi conectado a hubs USB com 2 portas 7 da Belkin (o Pi tem uma limitação de 2 hubs e um máximo de 14 portas USB).

Agora, lançamos isso como software de código aberto para ajudar outras pessoas que têm o mesmo requisito. Atualmente, apenas o código fonte está disponível, mas também enviaremos um arquivo de imagem com base no Arch Linux ARM executando o Nginx + php

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

user10282
fonte
2

Isso funciona no Mac OS X.

Desmonte o cartão com o qual você mexeu e tente:

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

Substitua sdcardlocationpela localização do seu cartão SD.

Você pode trocar .imgcom .dmgou .iso.

Em seguida, para preparar os outros cartões, desmonte-os e execute o código anterior com os valores trocados. A linha seria esta:

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

Desmonte-os antes de removê-los do leitor de cartões.

Teoremador
fonte
1

Embora como eu faça backup do meu Raspberry Pi? fornece excelentes instruções sobre como clonar um único cartão SD, fazendo um de cada vez para dezenas de cartões.

Dado que ninguém parece ter produzido um leitor de cartão SD com vários cartões (um que pode armazenar vários cartões SD ao mesmo tempo) e o fato de que você pode comprar um hub USB e vários leitores USB de cartão SD com um preço muito baixo, Uma maneira de acelerar o processo seria criar seu próprio duplicador de cartão SD.

Você pode até escrever um script para gravar automaticamente a imagem escolhida do Raspberry Pi em qualquer slot de cartão SD vazio inserido em um slot. Os scripts podem detectar automaticamente que um cartão foi inserido e indicar quando a cópia é concluída.

Como darrenjw mencionado nos comentários, porém, você vai querer substituir os certificados ssh em cada uma das imagens clonadas a primeira vez que são inicializado, então você pode querer certificar-se de que este primeiro boot é feito enquanto conectado a um segmento de rede privada antes de ligar para uma rede conectada à Internet.

Mark Booth
fonte
Normalmente, você não monta um cartão para exibir uma imagem nele.
AlexCalllain
Obrigado @AlexChamberlain, ainda tenho algumas semanas antes do meu Pi chegar (Grrr, se eu soubesse que estava na lista de espera do RS por um longo tempo, eu teria pedido da Farnell com um longo primeiro lugar), então ainda não tentei.
21812 Mark Booth
1

Geralmente, há uma ferramenta melhor para fazer isso e depois copiar muitas imagens RP.

Mas isso depende do que você realmente deseja fazer.

Você deve dar uma olhada em cfengine3 [1], fai [2], chef [3], tecido [4] ou fantoche [5]. São ferramentas de configuração automática, que seriam úteis para fazer coisas em sua máquina quando iniciadas pela primeira vez (e depois).

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

PiBakery pode ser uma solução viável para você. O PiBakery permite criar uma imagem Raspbian personalizada usando blocos para personalizar várias coisas, como senhas de wifi, chaves ssh, etc ...

Ameer
fonte
0

Outra alternativa é usar o flash , uma ferramenta de linha de comando para o flash de cartões SD com certas personalizações no sistema operacional.

Ameer
fonte
0

Para lidar apenas com um único slot para cartão SD no seu computador, a resposta fácil para a gravação eficiente de várias imagens é um hub USB com alimentação e vários adaptadores microSD-USB baratos. Testei usando um hub USB-3 de 13 portas e adaptadores microSD-USB baratos (<$ 1).

Quanto a gravar muitas imagens de base simultaneamente, consulte o dcfldd . Está disponível nos repositórios raspbian jessie. É uma versão aprimorada do GNU dd, com a capacidade de gravar simultaneamente em várias imagens. Fiz alguns testes casuais e consegui copiar uma imagem de cartão microSD em um RPi 3B para uma mistura de 7 cartões conectados em adaptadores de 3 tipos em um hub USB. Testes anteriores em um hub USB 2.0 de 3 portas em um A + também funcionaram. É basicamente disparar e esquecer depois de definir os parâmetros corretamente. Eu estava limitado a 7 adaptadores, mas não há motivos para pensar que não funcionaria com um número maior de cartões, embora as velocidades sejam limitadas às do cartão de destino mais lento.

Se você precisar manter um grande número de RPis atualizados com as alterações de configuração assim que estiverem em execução na rede, eu usaria o ansible ou fabric para permitir atualizações através do ssh e evitar a necessidade de re-queimar o cartões para mantê-los atualizados.

Finalmente, você pode modificar seu mestre para alterar o nome do host em cada RPi usando um identificador exclusivo (por exemplo, com base no endereço MAC da rede) para facilitar a localização avahisem precisar modificar cada RPi para evitar conflitos após a inicialização para evitar conflitos.

bobstro
fonte