Expandindo a falha da partição linux

0

Estou intrigado com uma tarefa muito simples. Eu tenho um arquivo img que contém um sistema de arquivos com 2 partições. Como encontrado em alguns tutoriais, eu expandi o espaço disponível desta maneira:

dd if=/dev/zero of=./temp_image bs=1 count=1 seek=3G
cat temp_image >> orig_image.img
losetup --offset [offset of the second partition*512] /dev/loop0 orig_image.img
e2fsck -f /dev/loop0
resize2fs -f /dev/loop0
losetup -d /dev/loop0

Mas receio que a tabela de partições não seja redimensionada corretamente:

parted orig_image.img > print
Model:  (file)
Disk /home/user/orig_image.img: 7255MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      4194kB  67,1MB  62,9MB  primary  fat16        lba
 2      67,1MB  4000MB  3933MB  primary  ext4

Mas se eu chroot no sistema ele realmente encontra um novo espaço ... Eu estava com saudades de alguns passos?

Eu tentei redimensionar a partição usando o gparted, mas ele não consegue reclamar sobre erros durante o e2fsck.

    
por Mark 09.04.2016 / 16:55

2 respostas

0

Eu recomendo truncate em vez do comando dd peculiar que cria arquivos esparsos 3GiB + zeros de 1 byte. truncate também usa o arquivo esparso. Com -s 3G você obtém uma imagem de um arquivo esparso de 3GiB com precisão sem zeros (ou você pode usar count=0 para dd também):

Euprefirofazê-lo"no local" com truncate , pois cat converteria o arquivo esparso em zeros (embora isso possa ser o que você deseja), o que custa tempo, espaço e gravação excessiva. p>

O exemplo a seguir é "no local" (veja o prefixo + entre -s e 3G no comando truncate ):

Como você pode ver, você precisa redimensionar a partição (por exemplo, com fdisk ) também . Portanto, você precisa usar losetup -P em vez de simplesmente anexar a partição especificando um deslocamento. Isto é o que você perdeu uma vez que a solução que você ligou / citou aplica-se apenas a uma imagem do sistema de arquivos .

Quando você recriar a entrada da partição depois de excluir a original, certifique-se de iniciar no mesmo LBA que o original (no exemplo é 206848 ), caso contrário o sistema de arquivos será perdido.

    
por 09.04.2016 / 17:41
0

Nunca testei o modo descrito, mas se você lida com um cartão SD, o seguinte funciona para mim.

  1. dd da imagem inalterada para o sdcard com dd if=my.img of=/dev/mmcblk0 bs=1M

  2. sync depois disso

  3. Use fdisk to d elete a partição 2 nd. Em seguida, crie uma partição n ew e aceite todos os padrões. Então w rite a tabela de partições.
  4. sync novamente
  5. Verifique o sistema de arquivos com e2fsck -f /dev/mmcblk0p2
  6. Redimensione o fs com resize2fs /dev/mmcblk0p2
  7. sync novamente
por 09.04.2016 / 17:09