Posso clonar todo o meu Raspberry Pi para implantação em outro Raspberry Pi?

12

Não sei se todos os tópicos "como fazer backup do seu cartão SD" são o que estou pedindo ... mas aqui vamos nós :)

Existe uma maneira de criar um clone 100% do meu Raspberry Pi e implantá-lo em outro Raspberry Pi? Então, eu tenho duas cópias exatamente idênticas ... Ou isso é feito clonando o cartão SD usando o comando dd interno?

A razão pela qual estou perguntando é que tenho meu Raspberry Pi totalmente configurado com Apache , PHP e algumas outras bibliotecas e agora só quero outro clone dele com as mesmas configurações, etc.

Isso é possível ou eu respondi minha própria pergunta?

naboovalley
fonte
Estou surpreso que o piclone não tenha sido mencionado até agora. Para mim, essa é a maneira mais direta de clonar um cartão sd em um rpi, e a nvere teve problemas com ele. Já respondi a essa pergunta no passado, então aqui está um link para a resposta com mais alguns detalhes: raspberrypi.stackexchange.com/questions/66824/… Espero que isso ajude.
LecauseAndThePi
Eu não poderia encontrar piclone de download em qualquer lugar
Elia Weiss
Você não deseja baixá-lo, ele já está lá. Basta digitar piclone no terminal e ele iniciará a GUI.
LecauseAndThePi

Respostas:

9

@naboovalley:

Suponha o seguinte cenário:

  • No seu Raspberry Pi, vá para um terminal e depois para o diretório / dev. Você deve ver, entre outros dispositivos, mmcblk0, mmcblk0p1 e mmcblk0p2.
  • mmcblk0 é o dispositivo de cartão SD "vazio", enquanto mmcblk0p1 é a primeira partição desse cartão SD que contém a imagem do kernel e assim por diante e mmcblk0p2 é a segunda partição desse cartão SD que contém o sistema de arquivos raiz.
  • Desligue o Raspberry Pi de uma maneira decente (digite o comando "shutdown", possivelmente como root)
  • Coloque o cartão SD em outra máquina Linux. Normalmente, os diretórios mencionados acima devem ser montados automaticamente em / media / e deve haver 2 subdiretórios (um para a partição 1 do cartão SD e outro para a partição 2 do cartão SD)
  • Você criou um diretório temporário para copiar o conteúdo do seu cartão SD. Dizer:~/tmp
  • Você está localizado em ~/tmp

Agora você pode copiar o conteúdo da primeira partição do cartão SD original, emitindo o seguinte comando rsync:

rsync -avn /media/<user>/<partition1> .

Você não colocar um /no final! O comando acima irá "executar a seco", o que significa que ele mostrará o que eventualmente fará, mas não o executará de verdade.

Para executar de verdade (depois de confirmar que a execução a seco está fazendo o que deveria), você pode remover o ncomando acima (assim, rsync -av /media/<user>/<partition1> .).

Use o mesmo comando para a outra partição.

Agora você deve ter uma cópia exata do seu cartão SD original na sua máquina Linux.

Remova o cartão SD original, coloque outro cartão SD - formatado corretamente - em sua máquina Linux e execute o seguinte comando rsync:

rsync -avn <partition1> /media/<user>

Esta é novamente uma corrida a seco, que deve mostrar que o conteúdo de <partition1>in /media/<user>será copiado para o cartão SD.

Depois de confirmar que tudo está bem, você pode novamente remover no rsynccomando.

Faça o mesmo para a segunda partição.

Isso deve fornecer uma cópia exata do cartão SD original para o outro cartão SD.

Nota: verifiquei tudo isso em uma máquina Lubuntu. Diretórios e nomes podem variar em outras distribuições Linux.

Observe também que os itens entre < >são espaços reservados e você precisa ver por si mesmo como eles correspondem ao seu ambiente.

GeertVc
fonte
Perfeito. Obrigado! A cópia "dd" fará o mesmo que você descreve ou o rsync é muito melhor executando uma cópia completa do sistema da maneira que eu quero?
N
Eu não tenho muita experiência com o ddcomando, então eu não posso dizer, desculpe ...
GeertVc
Não entendo totalmente a parte em que você diz "- formatado corretamente - cartão SD". Temos que pré-formatar o cartão SD com partições fat32 e ext4 de tamanho adequado? Obrigado
Romain Vincent
7

Sim, você pode usar ddou Win32 Disk Imager no Windows para obter uma imagem exata de um cartão para outro. No entanto, o cartão de destino precisará ser do mesmo tamanho ou maior para tornar isso prático.

Você também pode copiar todos os arquivos do seu sistema de arquivos de origem para um sistema de arquivos de destino. Ou seja, conecte seu cartão de destino a um leitor de cartão USB e cole-o no seu Raspberry Pi de origem. Em seguida, faça o SSH e emita os comandos de cópia apropriados.

Uma coisa a ter em mente também é se você comprou chaves de licença para decodificação de hardware do MPEG-2 ou VC-1 . Eles estão ligados ao seu hardware, portanto, você deve editar o /boot/config.txt na sua cópia.

mim--
fonte
Então o cartão SD contém todos os arquivos específicos do sistema e bibliotecas instaladas? Não precisarei executar nenhum comando de instalação ao conectar a cópia clonada do cartão SD ao R-Pi # 2?
N
2
Isso também pode apresentar problemas com chaves SSH e endereços IP.
precisa
Então, no R-Pi # 2, pode pensar que o endereço IP é o mesmo que o R-Pi # 1? Acho que posso atualizá-lo para obter um novo ip de rede?
N
Se você estiver usando DHCP, o RPi receberá um novo IP na inicialização automaticamente, mas você deve alterar o nome do host se planeja usar os dois na mesma sub-rede. Se você usa um IP fixo, deve alterar o IP e o nome do host
Roberto
Se eu olhar para o meu sistema de arquivos ("df"), eu tenho algo chamado "rootfs" de 2,1 GB e / dev / root 2,1 GB - meu cartão SD / dev / mmcblk0 leva apenas 10 milhões. Então, quando eu copio "mmcblk0", todo o meu sistema será incluído? Obrigado rapazes
naboovalley
6

Você pode simplesmente copiar com dd como @ me-- sugere, mas isso não é tudo o que você precisa fazer ao clonar um sistema. Existem certos identificadores de sistema exclusivos que também devem ser alterados.

As senhas devem ser redefinidas para que um novo sal seja usado. Isso evita que as pessoas saibam que você usou a mesma senha duas vezes. Execute o passwdcomando como seu usuário (geralmente pi ) e como root.

Se você usar SSH, as chaves SSH deverão ser geradas novamente. Isso é importante, por exemplo, para garantir que, se alguém roubar um Raspberry Pi, não possa descriptografar as comunicações para o outro. Basta executar este comando:

sudo rm /etc/ssh/ssh_host_*

Finalmente e mais importante, você precisa alterar o nome do host. Se estiver no padrão, é raspberrypi . Se você é como eu, escrevo o nome do host do Raspberry Pi, então faço ssh raspberrypi. Ter dois "raspberrypis" na rede faz com que isso pare de funcionar; portanto, o segundo deve ser renomeado para rasberrypi2, por exemplo. Você pode fazer essa alteração com sudo raspi-config, selecionando Advanced Optionse, em seguida, selecionando Hostname.

Fred
fonte
raspi-confignão está disponível para Raspbmc . Talvez uma maneira manual de definir o nome do host deva ser descrita?
Peter Mortensen
Para referência, raspberrypi.stackexchange.com/questions/3926/… cobre a alteração do nome do host em Raspbmc.
Fred
4

A clonagem de um micro SD para backup ou para mover seu sistema para outro RPi3 é incorporada como acessório, pelo menos na versão do sistema operacional que obtive no SD de inicialização do NOOBS:

  • Vá para acessórios;
  • Hit Copy SD ;
  • Coloque um micro SD em branco em um suporte USB;
  • Suporte de lugar no slot USB aberto;
  • Escolha o novo SD;
  • Hit copy.
w8mqw
fonte
Essa deve ser a resposta correta. Tão fácil.
Jordan
1

Você pode fazer exatamente isso usando o raspberry pi e um novo cartão SD de lema conectado via USB. A versão mais recente do software Raspberry Pi possui um software interno chamado SD cardcopier em acessórios que faz exatamente isso.

Você escolhe seu cartão original (de modo que o cartão do qual você está inicializando) como Origem e o novo cartão vazio formatado (conectado via leitor de cartão a usb no pi) como Destino. UI bastante simples e funcionou para mim pela primeira vez. A opção de linha de comando no mac usando dd acabou tendo um problema de pânico no kernel.

sijones
fonte
0

Uma ferramenta muito segura e confiável para copiar coisas como sistemas de arquivos raiz (devido aos links que estão presentes no sistema de arquivos raiz) é rsync. Esta ferramenta levará em consideração todas as coisas necessárias, como registros de data e hora, links, permissões, ... Perfeitamente adequada para copiar coisas como você deseja fazer.

GeertVc
fonte
Mas ainda copio apenas o conteúdo do cartão SD para a duplicação completa do sistema - ou preciso incluir outra coisa? Graças
naboovalley
Veja a nova resposta que publiquei abaixo.
GeertVc