Acho que parted
só aceita absolutos, não x+y
.
Você poderia fazer assim: ( +
interpretado por shell)
# start=1
# size=512
# parted /dev/loop0 unit mib mkpart primary $start $(($start+$size))
# parted /dev/loop0 unit mib print free
Model: Loopback device (loopback)
Disk /dev/loop0: 1000MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
0.02MiB 1.00MiB 0.98MiB Free Space
1 1.00MiB 513MiB 512MiB primary
513MiB 1000MiB 487MiB Free Space
... e se você quiser acrescentar mais, então
# start=$(($start+$size+1))
# size=128
# parted /dev/loop0 unit mib mkpart primary $start $(($start+$size))
# parted /dev/loop0 unit mib print free
Model: Loopback device (loopback)
Disk /dev/loop0: 1000MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
0.02MiB 1.00MiB 0.98MiB Free Space
1 1.00MiB 513MiB 512MiB primary
513MiB 514MiB 1.00MiB Free Space
2 514MiB 642MiB 128MiB primary
642MiB 1000MiB 358MiB Free Space
O +1
é totalmente opcional, eu apenas gosto de deixar 1MiB "bumpers" livres entre as partições, por algum motivo.
Se você quiser lidar com porcentagens, também é possível obter o tamanho do dispositivo a partir do shell, usando blockdev --getsize64 /dev/device
, para poder mover toda a matemática do parted para um script de shell. Eu faço isso para garantir partições alinhadas com MiB, já que nunca estou muito certo sobre o que parted
significa exatamente por -a optimal
.