O Fdisk não corresponde a / proc / partitions ou mount points (embedded)

0

Estou trabalhando em um dispositivo Linux embarcado existente e estou tendo problemas para editar as partições usando o fdisk. Meu objetivo é criar uma partição para fins de teste em / dev / sda . Eu estou usando o fdisk empacotado com o BusyBox v1.23.2. Por favor, veja abaixo para o meu enigma:

# cat /proc/partitions
major minor  #blocks  name
8        0   56582144 sda
8        1          8 sda1
8        2      32768 sda2
8        3     262144 sda3
8        4       1024 sda4
8        5        512 sda5
8        6        512 sda6
8        7   56285132 sda7

Observe que há 7 partições listadas para sda

# fdisk -l /dev/sda
Note: sector size is 4096 (not 512)

Disk /dev/sda: 57.9 GB, 57940115456 bytes
256 heads, 63 sectors/track, 877 cylinders
Units = cylinders of 16128 * 4096 = 66060288 bytes

  Device Boot        Start        End       Blocks    Id    System
/dev/sda1                1     266306   4294967292    ee    EFI GPT
Partition 1 has different physical/logical beginnings (non-Linux?):
        phys=(0,0,1) logical=(0,0,2)
Partition 1 has different physical/logical endings:
        phys=(1023, 255, 63) logical=(266305, 4, 4)

Nenhuma informação é mostrada sobre as 6 partições restantes sda2 - sda7 .

Vamos ver o que está realmente montado agora

# mount | grep '^/dev'
/dev/root on / type ext4 (rw,relatime,data=ordered)
/dev/block/bootdevice/by-name/userdata on /data type ext4 (rw,relatime,discard,noauto_da_alloc,data=ordered)
/dev/block/bootdevice/by-name/modem on /firmware type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
/dev/block/bootdevice/by-name/dsp on /dsp type ext4 (rw,relatime,discard,noauto_da_alloc,data=ordered)
/dev/block/bootdevice/by-name/bluetooth on /bt_firmware type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)

Preste especial atenção ao /dev/block/bootdevice/by-name/userdata sendo montado em /data aqui. Vamos verificar a que partição userdata se refere:

# ls -alh /dev/block/bootdevice/by-name | grep userdata
lrwxrwxrwx    1 root     root           9 Jan 12 20:34 userdata -> /dev/sda7

Podemos ver aqui que /dev/sda7 está sendo usado, pois está montado em /data . Existe alguma coisa que eu possa fazer para que o fdisk reconheça corretamente todas as partições e permita que eu as edite?

    
por Zomp 09.06.2017 / 00:00

1 resposta

2

Você tem uma tabela de partição GUID (GPT) em /dev/sda e fdisk , especialmente versões antigas ou pequenas versões incorporadas não funcionam com GPTs. O que você vê é uma espécie de saída de "compatibilidade" que não mostra a estrutura real, e você não poderá alterar os dados da partição com fdisk .

Opções:

(1) Retire o disco rígido, conecte-o a outro computador, use gparted etc. para manipular a tabela de partições GPT.

(2) Examine os binários (non-busybox) no seu dispositivo incorporado para ver se você tem algo que pode modificar as GPTs, por exemplo, gdisk / cgdisk / sgdisk .

(3) Compile cruzado gdisk / cgdisk / sgdisk ou um programa semelhante, ou talvez até gparted , para que funcione no seu dispositivo incorporado.

(4) Coloque a tabela de partições MBR antiga no disco rígido em vez do GPT e tente manter as partições que deseja manter (se você quiser criar uma nova partição, pelo menos uma das partições antigas para ir, de qualquer maneira). Isso pode destruir dados se você não for cuidadoso, então faça um backup primeiro.

    
por 09.06.2017 / 08:02