Respuestas:
Creo que partedsolo acepta absolutos, no x+y.
Podrías hacerlo así: ( +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
... y si quieres agregar más, entonces
# 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
El +1es completamente opcional, me gusta dejar 1MiB "parachoques" libres entre particiones, por alguna razón.
Si desea lidiar con porcentajes, también puede obtener el tamaño del dispositivo desde el shell, usando blockdev --getsize64 /dev/device, para que pueda mover todas las matemáticas de la partición a un script de shell. Hago esto para garantizar particiones alineadas con MiB, ya que nunca estoy muy seguro de qué partedsignifica exactamente -a optimal.
parted -a optimal /dev/sdd mkpart primary 0GB 10GB?