FUNDO

FUNDO

FUNDO

Um cartão SD foi configurado para um Raspberry pi. O objetivo é replicar exatamente o cartão SD (sistema operacional, aplicativos, dados) para que a réplica funcione em um rPi exatamente como o cartão SD \master original.

ATUALIZAÇÃO: Suponha:

  • a replicação será realizada em um laptop configurado com um sistema operacional semelhante ao UNIX
  • a replicação não deve ser realizada a partir do rPi
  • o cartão SD de destino é da mesma marca/modelo
  • o cartão SD de origem é particionado com diferentes sistemas de arquivos:

insira a descrição da imagem aqui

Questões

Quais opções de clonagem UNIX estão disponíveis para um laptop Ubuntu HP com slot para cartão SD e leitor/gravador de cartão SD USB.

Faz diferença se o cartão SD USB RW é o leitor ou gravador?

Um objetivo (restrição) é evitar a compra de hardware adicional.

Observações da solução

date; sudo sh -c 'cat sdcard.image >/dev/mmcblk0'; date

Seg, 3 de junho 17:53:18 EDT 2019 [sudo] senha para o usuário: Seg, 3 de junho 23:42:17 EDT 2019

date; sudo sh -c 'pv sdcard.image >/dev/mmcblk0'; date

Terça-feira, 4 de junho 00:33:50 EDT 2019 [sudo] senha para o usuário: 119GiB 6:06:12 [5,56MiB/s] [===================== ============>] 100%
Terça, 4 de junho 06:43:05 EDT 2019

A análise gParted do cartão SD atualizado mostra particionamento idêntico:

insira a descrição da imagem aqui

MacOS\OSX

Para encontrar a localização do cartão SD:

diskutil list

Certifique-se de desmontar o cartão SD ao gravar nele:

sudo diskutil unmount /dev/disk#

onde # é 1,2,3...

Responder1

Se você deseja apenas copiar um cartão SD exatamente de um para outro, você pode fazer isso comddna linha de comando.

Você NÃO deve fazer isso no seu próprio sistema operacional do Raspberry Pi. Isso ocorre porque o sistema operacional pode gravar no cartão SD durante a cópia e corromper a cópia.

Para copiar um cartão SD, conecte ambos em seus dois leitores (não importa se são USB ou não). Em seguida, verifique o conteúdo de /dev. Os cartões devem aparecer como /dev/sd*. Por exemplo /dev/sdb. Tenha cuidado porque seu disco rígido interno pode já estar ligado /dev/sda.

Certifique-se de que nenhum cartão SD esteja montado, leia a saída digitando isto no prompt de comando:

mount | grep /dev/sd

Verifique também a saída de para saber qual cartão tem qual nome de arquivo (como root):

sudo blkid

Para realmente copiar (por exemplo, de /dev/sdb para /dev/sdc) digite (como root):

dd if=/dev/sdb of=/dev/sdc bs=4096 status=progress

Responder2

Os sistemas Unix disponibilizam dispositivos de armazenamento através de umarquivo de dispositivo. Os arquivos de dispositivo se comportam como arquivos comuns de várias maneiras. Em particular, para fazer uma cópia exata do dispositivo de armazenamento, basta copiar o conteúdo do dispositivo de origem para o dispositivo de destino.

Primeiro você precisa determinar o arquivo do dispositivo de origem e o arquivo do dispositivo de destino. O nome depende da sua variante Unix e de como ela está configurada, mas na prática os arquivos do dispositivo estão sempre no /devdiretório. Se você tiver o cartão SD montado, poderá descobrir onde está o arquivo do dispositivo

df /media/sdcard1/some/file/on/the/sdcard

O arquivo do dispositivo está na primeira coluna. Outras ferramentas podem fornecer as mesmas informações, por exemplo, mensagens de log do kernel quando você insere o cartão SD ou o lsblkcomando no Linux.

Pode haver partições no cartão. Nesse caso, copie o cartão inteiro, mesmo que haja uma única partição, pois algumas informações de tempo de inicialização podem estar localizadas fora da partição. Por exemplo, se dffor exibido /dev/sdb1no Linux, copie /dev/sdbe não apenas /dev/sdb1.

Se você retirar o cartão SD e inseri-lo novamente, ele geralmente terá o mesmo nome de arquivo do dispositivo de antes, mas isso não é garantido.

Antes de copiar, certifique-se de que:

  • O dispositivo de origem não está montado ou está montado apenas como somente leitura.
  • O dispositivo de destino não está montado.
  • O dispositivo de destino é pelo menos tão grande quanto a fonte. No Linux, lsblkexibe o tamanho do dispositivo.
  • Você tem o dispositivo de destino correto. Observe que o comando abaixo irá sobrescrever seu conteúdo sem pedir confirmação!

Suponha que você tenha identificado que o dispositivo de origem é /dev/sdbe o dispositivo de destino é /dev/sdc. Para copiar o conteúdo, execute o seguinte comando como root:

cat /dev/sdb >/dev/sdc

Se você usar sudo, o redirecionamento >precisa acontecer como root, então você precisa escrever algo como

sudo sh -c 'cat /dev/sdb >/dev/sdc'

Como alternativa, para garantir que você não sobrescreva acidentalmente o dispositivo errado, proceda em duas etapas:

  1. Dê ao usuário ( gatorbackno meu exemplo) permissão para ler no dispositivo de origem ( dev/sdbno meu exemplo) e gravar no dispositivo de origem ( /dev/sdcno meu exemplo).
    sudo setfacl -m user:gatorback:r /dev/sdb
    sudo setfacl -m user:gatorback:w /dev/sdc
    
  2. Execute a cópia sem sudo.
    cat /dev/sdb >/dev/sdc
    

Você pode copiar a imagem do disco para um arquivo e depois copiar o arquivo de imagem para o dispositivo de destino. Isto é útil se você precisar fazer várias cópias, ou se tiver apenas um leitor de cartão SD, ou para reduzir o risco de copiar na direção errada.

  1. sudo cat /dev/sdb >sdcard.image
  2. Retire o cartão de origem e insira o cartão de destino.
  3. Opcionalmente, verifique o conteúdomontando a imagem, por exemplo sudo mount -o loop -r sdcard.image /mnt.
  4. sudo sh -c 'cat sdcard.image >/dev/sdb'

Se você quiser ver informações de progresso de maneira conveniente, usepvem vez de cat( pvraramente é instalado por padrão, mas está disponível como pacote na maioria das distribuições).

informação relacionada