FUNDO
Um cartão SD foi configurado para um Raspberry pi. O objetivo é replicar exatamente o cartão SD (SO, aplicativos, dados) para que a réplica funcione em um rPi exatamente como o cartão SD original\master.
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:
Perguntas
Quais opções de clonagem UNIX estão disponíveis para um laptop Ubuntu HP com um slot para cartão SD e um leitor/gravador de cartão SD USB.
Faz diferença se o cartão SD USB RW é o leitor ou o 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 usuário: Seg 3 de junho 23:42:17 EDT 2019
date; sudo sh -c 'pv sdcard.image >/dev/mmcblk0'; date
Ter, 4 de junho 00:33:50 EDT 2019 [sudo] senha para usuário: 119GiB 6:06:12 [5.56MiB/s] [===================== ============>] 100%
terça-feira 4 de junho 06:43:05 EDT 2019
A análise do gParted do cartão SD atualizado mostra o particionamento idêntico:
Mac OS\OSX
Para encontrar a localização do cartão SD :
diskutil list
Certifique-se de desmontar o cartão SD ao escrever nele:
sudo diskutil unmount /dev/disk#
onde # é 1,2,3...
Se você deseja apenas copiar um cartão SD exatamente de um para outro, pode fazê-lo com dd na linha de comando.
Você NÃO deve fazer isso no seu raspberry pi do próprio sistema operacional. 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 ou não USB). 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 isso no prompt de comando:
Verifique também a saída de para saber qual cartão tem qual nome de arquivo (como root):
Para realmente copiar (por exemplo, de /dev/sdb para /dev/sdc) digite (como root):
Os sistemas Unix disponibilizam dispositivos de armazenamento por meio de um arquivo 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 no dispositivo de destino.
Primeiro você precisa determinar o arquivo de dispositivo de origem e o arquivo de dispositivo de destino. O nome depende da sua variante do Unix e de como ela está configurada, mas na prática os arquivos do dispositivo estão sempre no
/dev
diretório. Se você tiver o cartão SD montado, poderá descobrir qual é o arquivo do dispositivoO 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
lsblk
comando no Linux.Pode haver partições no cartão. Nesse caso, copie o cartão inteiro, mesmo se houver uma única partição, pois algumas informações de inicialização podem estar localizadas fora da partição. Por exemplo, se for
df
exibido/dev/sdb1
no Linux, copie/dev/sdb
e não apenas/dev/sdb1
.Se você retirar o cartão SD e reinseri-lo, ele geralmente terá o mesmo nome de arquivo de dispositivo de antes, mas isso não é garantido.
Antes de copiar, certifique-se de que:
lsblk
exibe o tamanho do dispositivo.Suponha que você tenha identificado que o dispositivo de origem é
/dev/sdb
e o dispositivo de destino é/dev/sdc
. Para copiar o conteúdo, execute o seguinte comando como root:Se você usa sudo, o redirecionamento
>
precisa acontecer como root, então você precisa escrever algo comoComo alternativa, para garantir que você não substitua acidentalmente o dispositivo errado, siga duas etapas:
gatorback
no meu exemplo) permissão para ler do dispositivo de origem (dev/sdb
no meu exemplo) e gravar no dispositivo de origem (/dev/sdc
no meu exemplo).Você pode copiar a imagem do disco para um arquivo e, em seguida, copiar o arquivo de imagem para o dispositivo de destino. Isso é ú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.
sudo cat /dev/sdb >sdcard.image
sudo mount -o loop -r sdcard.image /mnt
.sudo sh -c 'cat sdcard.image >/dev/sdb'
Se você quiser ver as informações de progresso convenientemente, use
pv
em vez decat
(pv
raramente é instalado por padrão, mas está disponível como um pacote na maioria das distribuições).