Eu tenho um cartão SD de 16GB com algumas partições (na verdade, é o cartão para um Raspberry Pi). Eu tenho vários outros cartões de 4 GB nos quais desejo clonar o cartão principal. As 3 partições no cartão principal são:
- Partição de inicialização Rasp, FAT, 60MB
- Partição Linux, ext2, 1 GB
- Partição adicional de "armazenamento", FAT, 1 GB
Se eu usar dd
para criar uma imagem do cartão via:
dd if=/dev/sdb of=~/sd-card.bin
o .bin resultante terá 16 GB de tamanho. Existe uma maneira de dd
copiar apenas o que realmente está sendo usado, ou seja, <4 GB, para que eu possa fazer dd
isso em um novo cartão de 4 GB? Ou existe uma solução melhor que eu deveria estar usando?
sd-card
raspberry-pi
dd
Charlie Schliesser
fonte
fonte
dd
uma quantidade de outros cartões. Ainda assim, gostaria de saber se é possível resolver o problema inicial.Respostas:
Suponho que você esteja usando um computador Linux ou Mac para executar a cópia, não o próprio raspberry pi. Você provavelmente precisará adicionar um tamanho de bloco.
Eu vi um e quatro megas usados para discos Raspberry pi especificando bs = 1M ou bs = 4M. Eu acho que o tamanho do bloco é mais importante ao gravar o disco, pois as transferências grandes são mais rápidas que as menores. Isso não define o tamanho do bloco para o disco, apenas afeta o tamanho das transferências que o dd usa. Uma razão para definir um tamanho de bloco grande é a necessidade de apagar o flash antes de escrevê-lo. Isso é feito automaticamente, mas com mais rapidez, para transferências maiores que o tamanho mínimo de apagamento.
Você pode limitar a quantidade total de dados copiados por dd usando "count". "count" está em unidades de blocos. Se o final da última partição no disco de origem for anterior ao tamanho do destino, você poderá fazer o que deseja.
Algo como
dd if=/dev/sdb of=~/sd-card.bin bs=1M count=4000
criará uma imagem com tamanho de 4000 MB.Veja http://en.wikipedia.org/wiki/Dd_(Unix) e http://elinux.org/RPi_Easy_SD_Card_Setup para obter mais informações. Não sabe como encontrar o final da última partição ou o tamanho total dos cartões. No entanto, se você tiver formatado os discos, provavelmente saberá como fazer isso.
fonte
Expandindo a resposta de William , é possível calcular o final da última partição usando
fdisk
e uma calculadora:Espaço total usado em bytes = setor final do tamanho da última partição X setor (aqui são 3667967 x 512).
Espaço total usado em GB = espaço total usado em bytes / 1024 3 (aqui é 1,749023 GB).
Normalmente, não é vital criar uma imagem que seja reduzida até o último bit de dados útil, portanto, no exemplo acima, eu criaria uma imagem de 2 GB usando o método descrito por William na mesma resposta anterior :
No final da imagem, será incluída uma pequena parte do lixo inútil após seus últimos dados úteis, mas isso não difere em princípio do que o lixo inútil que será substituído quando você gravar a imagem novamente na mídia.
Esse método está funcionando para mim em uma dúzia de clones. Se houver falhas fatais nesse método, elas ainda não foram encontradas.
fonte