fdisk is a command-line utility for disk partition management. It's not common that you want to automate fdisk (i.e., running fdisk in a batch mode), since (re)-partitioning your system is a rare thing, and you typically deal with a small number of partitions at once. However, if you try to automate virtual machine creation, partitioning and formatting in batch mode may no longer be so unrealistic.
If you would like to run fdisk in non-interactive batch mode on Linux, you can use one of the two methods.
The first method is to leverage the following shell snippet.
#!/bin/sh hdd="/dev/hda /dev/hdb /dev/hdc" for i in $hdd;do echo "n p 1 w "|fdisk $i;mkfs.ext3 $i;done
Note that there are two blank lines between "1" and "w" lines. Given three hard drives (mapped to /dev/hda, /dev/hdb and /dev/hdc), this script creates for each hard drive a single primary partition, allocates all available space in the drive to the partition, and finally builds an EXT3-type file system on it. By tweaking the script, you should be able to create any number of (primary/logical) partitions for any number of disk drives in non-interactive fashion.
The second method to automate disk partitioning is to use a command-line tool called sfdisk. This tool allows you to create/change partition tables according to the disk partitioning specification read from standard input. It also allows you to export the partition table specification of a device to a file, so that sfdisk can read the file back in to apply the same partitioning to a different device.
The basic usage of sfdisk for non-interactive disk partitioning is as follows.
To prepare a disk partitioning specification:
The exported disk layout information looks as follows.
# partition table of /dev/sda unit: sectors /dev/sda1 : start= 2048, size= 497664, Id=83, bootable /dev/sda2 : start= 501758, size=1953021954, Id= 5 /dev/sda3 : start= 0, size= 0, Id= 0 /dev/sda4 : start= 0, size= 0, Id= 0 /dev/sda5 : start= 501760, size=1953021952, Id=8e
To apply the same disk partitioning and layout to another device:
Subscribe to Xmodulo
Do you want to receive Linux FAQs, detailed tutorials and tips published at Xmodulo? Enter your email address below, and we will deliver our Linux posts straight to your email box, for free. Delivery powered by Google Feedburner.
Did you find this tutorial helpful? Then please be generous and support Xmodulo!