Como faço para reduzir uma imagem do cartão SD?

5

Eu imaginei um cartão SD de 16 GB usando o comando dd. No entanto, o cartão não tem mais de 4 GB de dados em duas partições (FAT32 e ext3).

Gostaria de transferir esta imagem para um cartão SD de 8 GB. Como faço para diminuir a imagem?

    
por Lord Loh. 23.02.2012 / 13:07

2 respostas

6

Assumindo o Linux, algo assim poderia ser feito:

  1. Anexe a imagem a um dispositivo de loop usando losetup . Não monte partições.

    0 GB                              8 GB                             16 GB
    |--------fat32--------|--------------------ext3--------------------|
    
  2. Usando gparted , reduza a primeira partição para menos de 50% do tamanho original.

    0 GB                              8 GB                             16 GB
    |--fat32---|          |--------------------ext3--------------------|
    
  3. Mova a segunda partição para o espaço livre recém-criado, reduza para < 50%.

    0 GB                              8 GB                             16 GB
    |--fat32---|---------ext3---------|                                |
    
  4. Verifique se a segunda partição termina antes dos 8 GB.

  5. Desconecte o dispositivo de loop.

  6. Trunca o arquivo de imagem para 8 GB.

Nota: Normalmente, você tem que primeiro reduzir o sistema de arquivos , em seguida, ajustar o tamanho da partição para corresponder ao sistema de arquivos. O Gparted faz isso para você em uma única etapa "Redimensionar", mas outras ferramentas podem não funcionar.

    
por 23.02.2012 / 15:24
0

Primeiro, você não pode simplesmente reduzir a imagem do disco. Há muita coisa complicada acontecendo lá dentro.

Vou sugerir que você monte a imagem dd e copie os arquivos para o novo sistema de arquivos, ou pesquise mais sobre o encolhimento de seus sistemas de arquivos específicos em vez do disco.

Primeiro, você tem uma cópia da tabela de partições original?

Se não, tente: fdisk -l -u /path/to/image

Espero que você possa usar os valores acima para fazer algo como:

dd if=/path/to/image of=/path/to/output bs=BLOCKSIZE skip=STARTBLOCK count=TOTALBLOCKS

(substituindo os capitais acima, conforme necessário)

De lá, monte a imagem:

mount -o loop /path/to/output /path/to/mountlocation

e copie seus dados ou aprenda sobre o encolhimento padrão de seus sistemas de arquivos em particular e mais detalhes.

    
por 23.02.2012 / 13:14