Clonando cartão SD e editando o arquivo imagem para gravação em cartões menores – Exemplo de uso: Raspberry

Quando se faz necessário a cópia de um cartão com sistema operacional (com boot) é necessário realizar um processo de clonagem; este processo somente pode ser realizado para cartões de mesmo tamanho ou superior.

Abaixo descrevo os passos para adequar um arquivo de imagem clonado para tamanhos menores. Fonte de pesquisa:  canal do youtube – Dušan Ogrizović

Passo 1: Clonar o cartão no HD

Criar um diretório para os arquivos de imagem

mkdir sd-image

Entrar no diretório

cd sd-image

Verificar o nome do cartão com o comando lsblk, a saída deverá ser algo do tipo:

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 931,5G  0 disk 
├─sda4        8:4    0   9,3G  0 part [SWAP]
├─sda2        8:2    0    37G  0 part /
├─sda3        8:3    0 884,8G  0 part /home
└─sda1        8:1    0   512M  0 part /boot/efi
mmcblk0     179:0    0   7,4G  0 disk 
├─mmcblk0p2 179:2    0     1K  0 part 
├─mmcblk0p7 179:7    0     6G  0 part /media/xxx
├─mmcblk0p5 179:5    0    32M  0 part /media/yyyy
├─mmcblk0p1 179:1    0   1,2G  0 part 
└─mmcblk0p6 179:6    0    63M  0 part /media/boot

Gravar a imagem do SD no HD, utilizando o comando dd

sudo dd bs=4M if=/dev/mmcblk0 of=SD-image.img

Este processo poderá levar horas, dependendo da velocidade do cartão.

Passo 2: Editar a imagem do SD

Para ser possível editar o tamanho das partições da imagem será necessário associar o arquivo a um dispositivo do tipo loop (pseudo-dispositivo, usado em sistemas linux para permitir acesso como um dispositivo de bloco).

Associar o arquivo ao dispositivo /dev/loop0

sudo losetup /dev/loop0 SD-image.img

Informar ao sistema operacional a mudança na tabela de partições:

sudo partprobe /dev/loop0

Editar a imagem

Poderá ser feito por quaisquer meios, como sugestão o gparted.

sudo gparted /dev/loop0

Desmontar o dispositivo /dev/loop0:

sudo losetup -d /dev/loop0

Listar a tabela de partições da imagem

sudo fdisk -l SD-image.img
Disk SD-image.img: 15 GiB, 16156459008 bytes, 31555584 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0000d60b
Dispositivo  Inicializar   Start      Fim  Setores   Size Id Tipo
SD-image.img1                8192  2427734  2419543   1,2G  e FAT16 W95 (LBA)
SD-image.img2             2430976  15261695 12830720  6,1G  5 Estendida
SD-image.img5             2433024  2498557    65534   32M   83 Linux
SD-image.img6             2498560  2627583   129024   63M   c W95 FAT32 (LBA)
SD-image.img7             2629632  15258453 12628822  6G 83 Linux

Localizar o maior número do final de bloco

Neste exemplo: 15261695.

Redimensione a imagem

sudo truncate --size=$[(15261695+1)*512] rasp-dd.img

Como a contagem dos blocos começa com 0 é necessário adicionar 1.

Verifique o tamanho da nova imagem

ls -lh

Passo 3: Clonar o arquivo imagem no cartão SD

Copiar a imagem em um cartão SD de tamanho compatível

sudo dd bs=4M if=SD-image.img of=/dev/mmcblk

Este processo poderá levar horas, dependendo da velocidade do cartão.

Passo 4: Redimensionar as partições no cartão SD

Finalmente, é possível usar o gparted para redimensionar diretamente no cartão as partições para otimizar o espaço.

Espero que seja útil!

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s