Posted on September 4, 2023 by nexonhost
How To Use Fdisk Command (Create Disk Partitions).
In this article, we will talk about the fdisk command.
The first thing you need to do after installing a new SSD or hard disk is to partition it. A drive needs to have at least one partition before you can format it and store files on it.
Be aware that fdisk is a dangerous tool and should be used with extreme caution. Only root or users with sudo privileges can manipulate the partition tables.
List Partitions
To list the partition table of a device, invoke the fdisk command with the -l option, followed by the device name. For example to list the /dev/sda partition table and partitions you would run:
fdisk -l /dev/vda
When no device is given as an argument, fdisk will print partition tables of all devices listed in the /proc/partitions file:
fdisk -l
Disk /dev/vda: 26.8 GB, 26843545600 bytes, 52428800 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000b9f29 Device Boot Start End Blocks Id System /dev/vda1 * 2048 48334847 24166400 83 Linux /dev/vda2 48334848 52428799 2046976 82 Linux swap / Solaris
Creating Partition Table
To start partitioning the drive, run fdisk with the device name. In this example we’ll work on /dev/vda2:
fdisk /dev/vda2
The command prompt will change, and the fdisk dialogue where you can type in commands will open:
Welcome to fdisk (util-linux 2.34). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help):
To get a list of all available commands enter m
a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition g create a new empty GPT partition table G create an IRIX (SGI) partition table l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only)
If you are partitioning a new drive, before starting to create partitions first, you need to create a partition table. Skip this step if the device already has a partition table and you want to keep it.
fdisk supports several partitioning schemes. MBR and GPT are the two most popular partition scheme standards, that store the partitioning information on a drive in a different way. GPT is a newer standard allowing and has many advantages over MBR. The main points to consider when choosing what partitioning standard to use:
Use MBR to boot the disk in legacy BIOS mode.
Use GPT to boot the disk in UEFI mode.
The MBR standard supports creating a disk partition up to 2 TiB. If you have a disk of 2 TiB or larger, use GPT.
MBR has a limit of 4 primary partitions. If you need more partitions, one of the primary partitions can be set as an extended partition and hold additional logical partitions. With GPT, you can have up to 128 partitions. GPT doesn’t support extended or logical partitions.
In this example, we will use a GPT partition table.
Enter g to create a new empty GPT partition table:
#Command (m for help) g
The output will look something like this:
Created a new GPT disklabel (GUID: 4649EE36-3013-214E-961C-51A9187A7503).
The next step is to create the new partitions.
We will create two partitions. The first one with a size of 10 GiB and the second one will take the rest of the disk space.
Run the n command to create a new partition:
#Command (m for help) n
You’ll be prompted to enter the partition number. Hit “Enter” to use the default value (1):
Partition number (1-128, default 1):
Next, the command will ask you to specify the first sector. Generally it is always recommended to use the default values for the first value. Hit “Enter” to use the default value (2048):
First sector (2048-500118158, default 2048):
On the next prompt, you’ll need to enter the last sector. You can use an absolute value for the last sector or relative value to the start sector, using the + symbol following by the partition size. The size can be specified in kibibytes (K), mebibytes (M), gibibytes (G), tebibytes (T), or pebibytes (P).
Enter +10G to set the partition size to 10 GiB:
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-500118158, default 500118158): +10G
Created a new partition 1 of type 'Linux filesystem' and of size 10 GiB.
By default, the type of the new partition is set to “Linux filesystem”, which should be fine for most cases. If you want to change the type, press l to get a list of partition types and then press t to change the type.
Let’s create the second partition that will take the rest of the disk space:
#Command (m for help) n
Use the default values for the partition number, first and last sectors. This will create a partition that will use all available space on the disk.
Partition number (2-128, default 2): First sector (209717248-625142414, default 209717248): Last sector, +/-sectors or +/-size{K,M,G,T,P} (209717248-625142414, default 625142414):
Once done creating partitions, use the p command to display the new partition table:
#Command (m for help) p
Disk /dev/vda1: 298.9 GiB, 320072933376 bytes, 625142448 sectors Disk model: nal USB 3.0 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: gpt Disk identifier: F8365250-AF58-F74E-B592-D56E3A5DEED1 Device Start End Sectors Size Type /dev/vda11 2048 209717247 209715200 10G Linux filesystem /dev/vda12 209717248 625142414 415425167 198.1G Linux filesystem
If you want to delete a partition, use the d command.
Save the changes by running the w command:
#Command (m for help) p
The command will write the table to the disk and exit the fdisk menu.
The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
The kernel will read the device partition table without the need to reboot the system.
Activating the Partitions
Now that the partitions have been created, the next step is to format the partitions and mount them to the system’s directory tree.
We’ll format both partitions to ext4:
sudo mkfs.ext4 -F /dev/vda11sudo mkfs.ext4 -F /dev/vda12
mke2fs 1.45.5 (07-sep-2023) Creating filesystem with 51928145 4k blocks and 12984320 inodes Filesystem UUID: 63a3457e-c3a1-43f4-a0e6-01a7dbe7dfed Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872 Allocating group tables: done Writing inode tables: done Creating journal (262144 blocks): done Writing superblocks and filesystem accounting information: done
In this example, will mount the partitions to /mnt/audio and /mnt/video directories.
Create the mount points with mkdir :
sudo mkdir -p /mnt/audio /mnt/video
Mount the new partition:
sudo mount /dev/vda11 /mnt/audiosudo mount /dev/vda12 /mnt/video
Partitions will stay mounted until you unmount it or shutdown the machine. To automatically mount a partition when your Linux system starts up, define the mount in the /etc/fstab file.
That’s it! You can now use the new partitions to store your files.
Conclusion
fdisk is a command-line tool for creating partition schemes. For more information about the fdisk command, type man fdisk in your terminal.