Oct 10, 2023 5 min read

How to Format USB Drives and SD Cards on Linux

Format USB Drives and SD Cards on Linux with our step-by-step tutorial. Formatting optimizes storage by restructuring file system, erasing data.

Format USB Drives and SD Cards on Linux
Table of Contents

Introduction

Before we begin talking about how to format USB drives and SD Cards on Linux, let's briefly understand – What is Formatting ?

Formatting prepares the drive for data storage by restructuring its file system, erasing existing data, and optimizing storage space. It enhances performance, resolves issues, and ensures compatibility across devices.

Most USB drives and SD cards are preformatted with the FAT file system and do not need to be formatted right away. In some cases, however, you may need to format the drive. To format the drive and create the necessary partitions on Linux, you can use a graphical tool like GParted or command-line tools like fdisk or parted. It is critical to understand that formatting is a destructive process that will erase all existing data. Make a backup of any data stored on the UDB drive or SD card.

In this tutorial, you will format USB drives and SD Cards on Linux. We will also address a few FAQs on how to format USB drives and SD Cards on Linux.

Advantages of formatting

  1. Optimize storage capacity: Formatting removes unnecessary files and reorganizes the drive, enhancing its storage capacity.
  2. Resolve errors: Formatting can fix common issues like corruption and read/write errors, improving drive reliability.
  3. Compatibility: A formatted USB drive and SD Cards ensures compatibility with different devices and operating systems.
  4. Enhanced performance: Formatting provides a fresh start, optimizing the drive's performance by removing fragmented data.
  5. Data protection: By erasing all existing data during formatting, it helps protect sensitive information from unauthorized access.

Installing parted

GNU Parted is a partition table creation and management utility. Most Linux distributions now come with the parted package pre-installed. You can see if it's installed on your computer by typing:

parted --version
Output

parted (GNU parted) 3.2
Copyright (C) 2014 Free Software Foundation, Inc.
...

If parted is not already installed on your system, use your distribution's package manager to install it.

Install parted on Ubuntu and Debian

sudo apt install parted
sudo apt update

Install parted on CentOS and Fedora

sudo yum install parted

Identifying the USB or SD Card Name

Insert the USB flash drive or SD card into your Linux machine and use the lsblk command to determine the device name:

lsblk

The following command will output a list of all available block devices:

Output

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
...
sdb      8:16   1  14.4G  0 disk 
└─sdb1   8:17   1   1.8G  0 part /media/data
...

The name of the SD device in the preceding example is /dev/sdb, but this may differ depending on your system.

You can also find the device name using the dmesg command:

lsblk


When you connect the device, dmesg will display the device name:

Output

...
[  +0.000232] sd 1:0:0:0: [sdb] 30218842 512-byte logical blocks: (15.5 GB/14.4 GiB)
...

Securely Wipe Up the Data (Optional)

You can securely wipe out all the data on the drive before formatting it by overwriting the entire drive with random data. This ensures that no data recovery tool can recover the data.

You can skip this step if you want to.

Before running the following command and permanently erasing the drive data, exercise extreme caution. The target drive must be specified in the of=... portion of the dd command.

sudo dd if=/dev/zero of=/dev/sdb bs=4096 status=progress

The process will take some time depending on the size of the drive.

The dd command will print "No space left on device" once the disc has been erased:

Output

15455776768 bytes (15 GB, 14 GiB) copied, 780 s, 19.8 MB/s 
dd: error writing '/dev/sdb': No space left on device
3777356+0 records in
3777355+0 records out
15472047104 bytes (15 GB, 14 GiB) copied, 802.296 s, 19.3 MB/s

Creating a Partition and Formatting

On Windows, the most common file systems are exFAT and NTFS, on Linux, EXT4, and on all operating systems, FAT32.

We'll demonstrate how to format your SD card or USB device to FAT32 or EXT4. If you just want to use the drive with Linux systems, format it using EXT4. Otherwise, use FAT32. For the majority of use situations, one partition is adequate.

Format with FAT32

To begin, run the following command to create the partition table:

sudo parted /dev/sdb --script -- mklabel msdos

Make a Fat32 partition that takes up the entire space:

sudo parted /dev/sdb --script -- mkpart primary fat32 1MiB 100%

Format the boot partition to FAT32:

sudo mkfs.vfat -F32 /dev/sdb1
Output

mkfs.fat 4.1 (2017-01-24)

After that, run the following command to print the partition table and ensure that everything is in order:

sudo parted /dev/sdb --script print

The final result should look like this:

Output

Model: Kingston DataTraveler 3.0 (scsi)
Disk /dev/sdb: 15.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  15.5GB  15.5GB  primary  fat32        lba

That's it! Your device has been formatted.

Format with EXT4

Make a GPT partition table by issuing the command:

sudo parted /dev/sdb --script -- mklabel gpt

To create an EXT4 partition that takes up the entire space, use the following command:

sudo parted /dev/sdb --script -- mkpart primary ext4 0% 100%

Format the partition to ext4:

sudo mkfs.ext4 -F /dev/sdb1
Output

mke2fs 1.44.1 (24-Mar-2018)
/dev/sdb1 contains a vfat file system
Creating filesystem with 3777024 4k blocks and 944704 inodes
Filesystem UUID: 72231e0b-ddef-44c9-a35b-20e2fb655b1c
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done   

Print the partition table to confirm:

sudo parted /dev/sdb --script print

The final result should look like this:

Output

Model: Kingston DataTraveler 3.0 (scsi)
Disk /dev/sdb: 15.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  15.5GB  15.5GB  ext4         primary  

FAQs to Format USB Drives and SD Cards on Linux

Will formatting a USB drive or SD card erase all data? 

Yes, formatting will erase all data on the drive or card. Make sure to back up any important files before proceeding with the formatting process.

Which file system should I choose when formatting? 

The choice of file system depends on your requirements. For compatibility across different devices, FAT32 is widely supported. Ext4 is a common option for Linux-only usage, offering better performance and security features.

Can I format a USB drive or SD card to NTFS on Linux? 

Yes, you can format a USB drive or SD card as NTFS on Linux by installing the NTFS-3g package. Use the 'mkfs.ntfs' command to format with NTFS file system, but be aware that NTFS write support on Linux is not as robust as on Windows.

How can I format a protected USB drive or SD card? 

Some USB drives and SD cards come with write protection switches. Slide the switch to the unlocked position before formatting. If it is a software write protection issue, try using disk management tools to remove the write protection.

Can I format multiple partitions on a USB drive or SD card? 

Yes, you can format multiple partitions on a USB drive or SD card. Use tools like 'fdisk' or 'parted' to manage and format the individual partitions.

What if the USB drive or SD card is not recognized or unable to be formatted? 

If the drive or card is not recognized, check its connection and verify if the necessary drivers are installed. If formatting fails, the drive or card might be faulty or damaged, and it could be time to consider a replacement.

Is it possible to format a USB drive or SD card from the command line? 

Yes, it is possible to format a USB drive or SD card from the command line on Linux. Tools like 'mkfs' or 'fdisk' provide command-line options to format and manage storage devices efficiently.

Conclusion

On Linux, formatting a USB drive or SD card is a simple process. Simply insert the drive, make a partition table, and format it with FAT32 or your preferred file system.

If you encounter a problem or have feedback, please leave a comment below, we'll be happy to respond to them.

Great! You’ve successfully signed up.
Welcome back! You've successfully signed in.
You've successfully subscribed to DevOps Tutorials - VegaStack.
Your link has expired.
Success! Check your email for magic link to sign-in.
Success! Your billing info has been updated.
Your billing was not updated.