如何在Linux上格式化U盘和SD卡

时间:2020-03-05 15:27:21  来源:igfitidea点击:

在使用SD卡或者U盘之前,需要对其进行格式化和分区。
通常,大多数U盘和SD卡都使用FAT文件系统进行了预格式化,因此无需立即进行格式化。
但是,在某些情况下,我们可能需要格式化驱动器。

在Linux中,我们可以使用图形工具(例如GParted)或者命令行工具(例如“ fdisk”或者“ parted”)来格式化驱动器并创建所需的分区。

在本教程中,我们将向我们展示如何使用“ parted”实用程序在Linux上格式化U盘或者SD卡。

请务必注意,格式化是一个破坏性的过程,它将清除所有现有数据。
如果UDB驱动器或者SD卡上有数据,请确保对其进行备份。

安装“ parted”

GNU Parted是用于创建和管理分区表的工具。
如今,分装的软件包已预安装在大多数Linux发行版中。
我们可以通过键入以下内容检查它是否已安装在系统上:

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

如果系统上未安装“ parted”,则可以使用发行版的程序包管理器进行安装。

在Ubuntu和Debian上安装'parted'

sudo apt updatesudo apt install parted

在CentOS和Fedora上安装“ parted”

sudo yum install parted

识别USB或者SD卡名称

将USB闪存驱动器或者SD卡插入Linux机器,然后使用“ lsblk”命令查找设备名称:

lsblk

该命令将打印所有可用块设备的列表:

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
...

在上面的示例中,SD设备的名称为'/dev/sdb',但这在系统上可能有所不同。

我们也可以使用“ dmesg”命令查找设备名称:

lsblk

连接设备后,“ dmesg”将显示设备名称:

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

安全擦除数据(可选)

在格式化驱动器之前,我们可以通过用随机数据覆盖整个驱动器来安全擦除其中的所有数据。
这样可以确保任何数据恢复工具都无法恢复数据。

仅在将要赠送设备的情况下,才需要完全擦除数据。
否则,我们可以跳过此步骤。

运行以下命令之前,请格外小心,并清除驱动器数据。
“ dd”命令的“ of = ...”部分必须指向目标驱动器。

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

根据驱动器的大小,此过程将需要一些时间才能完成。

擦除磁盘后,“ dd”命令将显示“设备上没有剩余空间”:

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

创建分区和格式化

最常见的文件系统是Windows上的exFAT和NTFS,Linux上的EXT4和FAT32,它们可以在所有操作系统上使用。

我们将向我们展示如何将U盘或者SD卡格式化为FAT32或者EXT4.
如果我们打算仅在Linux系统上使用驱动器,请使用EXT4,否则请使用FAT32对其进行格式化。
对于大多数用例,一个分区就足够了。

用FAT32格式化

首先,通过运行以下命令创建分区表:

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

创建一个占用整个空间的Fat32分区:

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

将启动分区格式化为FAT32:

sudo mkfs.vfat -F32 /dev/sdb1
mkfs.fat 4.1 (2016-01-24)

完成后,使用下面的命令打印分区表并验证所有设置是否正确:

sudo parted /dev/sdb --script print

输出应如下所示:

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

就这样!我们已格式化设备。

使用EXT4格式化

通过发出以下命令来创建GPT分区表:

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

运行以下命令以创建占用整个空间的EXT4分区:

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

将分区格式化为ext4:

sudo mkfs.ext4 -F /dev/sdb1
mke2fs 1.44.1 (24-Mar-2016)
/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

通过打印分区表进行验证:

sudo parted /dev/sdb --script print

输出应如下所示:

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