parted
può stampare spazio libero. Esempio (ne ho scelto uno complicato di proposito):
# parted /dev/sda unit s print free
[...]
Number Start End Size Type File system Flags
63s 2047s 1985s Free Space
1 2048s 4196351s 4194304s primary fat32 lba
4196352s 4198399s 2048s Free Space
2 4198400s 6295551s 2097152s primary ext2 boot
6295552s 6297599s 2048s Free Space
3 6297600s 27269119s 20971520s primary ext2
27269120s 27271167s 2048s Free Space
4 27271168s 31115263s 3844096s extended lba
5 27273216s 29192191s 1918976s logical ext2
6 29194240s 31115263s 1921024s logical ext2
31115264s 31116287s 1024s Free Space
Come puoi vedere, ti dà direttamente la posizione e le dimensioni della partizione che potresti essere in grado di creare, ovvero l'ultima riga che dice Free Space
. È possibile creare una partizione che inizia a 31115264 e termina a 31116287s.
Se non fosse per la trappola che la partizione estesa non è abbastanza grande!
Ma forse usi già GPT dove non soffri di tali complicazioni.
Afferrare i numeri dovrebbe essere abbastanza facile.
function make_partition
{
parted -s "$1" unit s mkpart primary "$2" "$3"
}
make_partition /dev/sda `parted /dev/sda unit s print free | grep 'Free Space' | tail -n 1`
O qualcosa di simile. (Naturalmente vorresti fare qualche altro controllo di integrità qui.)
@swisscheese ha fatto un buon commento nell'altra risposta, non sapevo che parted
offrisse un output di analisi amichevole. Puoi scegliere di usarlo invece. Esempio per ottenere l'ultimo più grande gratuito:
# parted -m /dev/sda unit s print free | grep 'free;' | sort -t : -k 4n -k 2n | tail -n 1
1:27269120s:27271167s:2048s:free;
Se questo è applicabile per la tua situazione (nel mio esempio, non puoi nemmeno creare una partizione lì, è già davvero pieno) è qualcosa che devi capire da solo. :)