parted 3.2 diz que 1024MiB está fora do dispositivo (de tamanho 1024MiB)

1

Estou com um pouco de dificuldade em aceitar parted 3.2 para aceitar um esquema de particionamento válido em parted 2.3 (testado no Debian com jessie vs. wheezy). / p>

parted 3.2 não aceita uma partição que vá até o final de um volume (marcador 1024MiB em um volume com tamanho 1024MiB), em vez disso, com erros:
Erro: A localização 1024MiB está fora do dispositivo / dev / loop0.

Aqui está um pequeno script para reproduzir (também acontece ao usar o GPT):

#!/bin/bash -x
truncate disk.raw --size="1024M"
device_path="$(losetup -f --show disk.raw)"
parted --script --align none $device_path -- mklabel msdos
parted --script --align none $device_path -- unit mib print free
parted --script --align none $device_path -- mkpart primary 0MiB 1024MiB
losetup -d $device_path
rm disk.raw

Saída com parted 2.3

+ truncate disk.raw --size=1024M
++ losetup -f --show disk.raw
+ device_path=/dev/loop0
+ parted --script --align none /dev/loop0 -- mklabel msdos
+ parted --script --align none /dev/loop0 -- unit mib print free
Model:  (file)
Disk /dev/loop0: 1024MiB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start    End      Size     Type  File system  Flags
        0.02MiB  1024MiB  1024MiB        Free Space

+ parted --script --align none /dev/loop0 -- mkpart primary 0MiB 1024MiB
+ losetup -d /dev/loop0
+ rm disk.raw

Saída com parted 3.2

+ truncate disk.raw --size=1024M
++ losetup -f --show disk.raw
+ device_path=/dev/loop0
+ parted --script --align none /dev/loop0 -- mklabel msdos
+ parted --script --align none /dev/loop0 -- unit mib print free
Model: Loopback device (loopback)
Disk /dev/loop0: 1024MiB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start    End      Size     Type  File system  Flags
        0.03MiB  1024MiB  1024MiB        Free Space

+ parted --script --align none /dev/loop0 -- mkpart primary 0MiB 1024MiB
Error: The location 1024MiB is outside of the device /dev/loop0.
+ losetup -d /dev/loop0
+ rm disk.raw

Como você pode ver, a versão 3.2 é um pouco diferente quando a partição começa, mas isso não deve fazer diferença, pois mkpart só aceita [start] [end] e não [start] [size] .

Existem soluções alternativas para isso, como tornar a última partição menor ou aumentar o volume, mas eu gostaria de chegar ao fundo disso e entender por que isso acontece.

    
por andsens 14.12.2014 / 12:11

1 resposta

2

Bem, tecnicamente, 1024MiB está fora, se é apenas 1024MiB grande e você considera o fim de ser inclusivo ...

Teste unit s e print free , caso você mostre exatamente o que está disponível para o setor e permita criar uma partição de tamanho máximo. Provavelmente não será exibido corretamente com unit mib , pois há muito arredondamento acontecendo.

Além disso, você pode usar apenas 100% para o [end] ; embora ainda possa deixar alguns setores livres, provavelmente devido ao alinhamento?

Também com o esquema de partição GPT, você não poderá ir até o fim, pois há um cabeçalho secundário da GPT localizado aqui.

Deixar um pouco livre no final também faz sentido por outras razões, nem todas as unidades têm o mesmo tamanho exato e mesmo se você ainda usa partições msdos, agora você pode querer convertê-las em GPT mais tarde tempo.

    
por 14.12.2014 / 13:21

Tags