Se você tiver certeza de que o cartão SD é sempre do mesmo tamanho (ou maior) que o que você realmente tem, e o 1G é suficiente para o que você deseja copiar, você pode proceder da seguinte maneira:
- Particione manualmente um cartão SD apropriado, mas deixe as partições vazias (mas crie os sistemas de arquivos necessários nelas)
- Copie todo o cartão SD (digamos,
/dev/sdb
) para o seu sistema comdd if=/dev/sdb of=empty.image bs=4M
- Sempre que você precisar criar um novo cartão SD, copie a imagem vazia para uma nova imagem:
cp empty.image new.image
- Agora crie um dispositivo de loop nesse arquivo:
losetup -f -P new.image
(-P
é importante, pois isso forçará o kernel a ler as informações da partição).
Isso criará um novo dispositivo de loop (digamos /dev/loop0
) e as partições /dev/loop0p1.../dev/loop0pn
. Estes agora podem ser montados e usados como qualquer partição "normal". Após terminar seu trabalho, ligue para losetup -d /dev/loop0
e copie a imagem criada para o seu SD usando dd if=new.image of=/dev/sdb bs=4M
. Todas essas etapas podem ser removidas.
Editar:
Em vez de 2) e 3) acima:
Você também pode copiar apenas o bloco de partição (se for MBR) e manter isso ( dd if=/dev/sdb of=empty_MBR bs=512 count=1
); então para o novo SD, cesse o arquivo vazio ( truncate -s 1G empty.file
), que é apenas um arquivo esparso (tamanho = 0), copie a tabela de partição ( dd if=empty_MBR of=empty.file
), crie o dispositivo de loop ( losetup -f -P empty.file
), formate as partições, e prossiga como mostrado acima.
Edit2:
Se você não quiser manter o pequeno arquivo MBR, também poderá usar sfdisk
scripted (consulte man sfdisk
ou link ). Isso significa: Crie um arquivo vazio (sa), crie um dispositivo de loop (sem partições, sem -P
), particione esse dispositivo com sfdisk
, retire o dispositivo de loop, reconecte o dispositivo de loop (com partições -P
) e continue. p>