In this tutorial I am going to show you how to format and set up a file system for a drive in Linux using
In my particular scenario, i am setting up a USB drive with an EXT4 partition for use, but with a little tweaking can be used for all types of storage and all types of file systems.
First of all we need to find where the drive is that we want to work with.
In my case im on
/dev/sda but you may be different. Please make sure you are targeting the correct drive or data loss will occur.
It may be helpful at this point to make sure you know the basic
fdisk options are. Obviously for a more in depth list you may just want to use
m when already in
fdisk, or for a range of available switches, type
fdisk -h in the terminal. More to what we are trying to achieve, below are the basic commands relevant to deleting & creating new partitions.
m – print help p – print the partition table n – create a new partition d – delete a partition q – quit without saving changes w – write the new partition table and exit
CAUTION – The following will delete all partitions on your drive and subsequently all data. Please make sure if you do not understand or do not grasp the drive designation / location that you have ALL of your data backed up or stop at this point.
So we are going to delete all partitions to make way for our new partition
fdisk /dev/sda d // Delete d // Again if more than one... w // Write Changes
So now if you
fdisk -l again you should see an empty drive….
Something like that of below (note no partitions are in place following)
Disk /dev/sda: 14.3 GiB, 15376000000 bytes, 30031250 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 Disklabel type: dos Disk identifier: 0x00000000
So lets now go ahead and create a partition.
In this case we are using the whole drive but obviously your scenario may be different.
If in deed you are using the whole drive, the defaults are more than adequate.
fdisk /dev/sda n // New Partition // Choose defaults unless setting up >1 partition w // Write changes
SO now your new partition has been created, however we still have to build the file system.
Before that, you can confirm the partition you just created exists by once again doing an
fdisk -l. You can see mine below is no longer an empty drive but returns the following.
Disk /dev/sda: 14.3 GiB, 15376000000 bytes, 30031250 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 Disklabel type: dos Disk identifier: 0x00000000 Device Boot Start End Sectors Size Id Type /dev/sda1 2048 30031249 30029202 14.3G 83 Linux
So now its time to create the file system. Fairly straight forward..
Be aware that you are no longer dealing with the broad drive designation of
/dev/sdabut are dealing with the more specific partition that you created of
There are several other file systems that you can create using the above mkfs command. I used an
EXT4 file system, however if for example i wanted to make an
EXT3 file system, i would have just changed the above line of code to
For your reference, I have listed the available (debian) file system builders below.
mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev mkfs.fat mkfs.vfat mkfs.msdos mkfs.bfs mkfs.cramfs mkfs.minix
Just to be safe we will now do a reboot and recheck all is good upon login.
reboot fdisk -l
There are a couple of different avenues you can take now depending on what you are trying to achieve.
Obviously first and foremost, you can now temporarily mount your fresh drive wherever you want..
mount /dev/sda1/ foo/bar
However secondly, if you want to programmatically mount your drive upon every boot, look into
I will cover
fstab soon but in the meantime Ubuntu has a sufficiently detailed write up that you can reference here.