
在 Linux 上使用新的 U 盘或 SD 卡之前,可能需要先对其进行分区和格式化。大多数可移动驱动器出厂时已预先格式化为 FAT32,开箱即可使用,但在切换文件系统类型、修复损坏的驱动器或安全擦除数据时,可能需要重新格式化。
本指南介绍如何在 Linux 上使用 parted 和 mkfs 命令行工具格式化 U 盘或 SD 卡。
快速参考
如需可打印的快速参考,请参阅 parted 速查表。
| 任务 | 命令 |
|---|---|
| 识别设备 | lsblk |
| 卸载设备 | sudo umount /dev/sdb1 |
| 创建 MBR 分区表 | sudo parted /dev/sdb --script -- mklabel msdos |
| 创建 GPT 分区表 | sudo parted /dev/sdb --script -- mklabel gpt |
| 创建分区(整个磁盘) | sudo parted /dev/sdb --script -- mkpart primary fat32 1MiB 100% |
| 格式化为 FAT32 | sudo mkfs.vfat -F32 /dev/sdb1 |
| 格式化为 exFAT | sudo mkfs.exfat /dev/sdb1 |
| 格式化为 EXT4 | sudo mkfs.ext4 -F /dev/sdb1 |
| 格式化为 NTFS | sudo mkfs.ntfs -f /dev/sdb1 |
| 验证分区表 | sudo parted /dev/sdb --script print |
前提条件
parted 工具已预装在大多数 Linux 发行版中。通过运行以下命令验证其是否可用:
parted --version
如果未安装 parted,请使用发行版的包管理器安装。
在 Ubuntu、Debian 及其衍生版上:
sudo apt update && sudo apt install parted
在 Fedora、RHEL 及其衍生版上:
sudo dnf install parted
识别设备
将 U 盘或 SD 卡插入 Linux 计算机,然后使用 lsblk 命令识别设备名称:
lsblk
输出会列出所有可用的块设备:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 238.5G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 237G 0 part /
└─sda3 8:3 0 1G 0 part [SWAP]
sdb 8:16 1 14.4G 0 disk
└─sdb1 8:17 1 14.4G 0 part /media/data
在本示例中,USB 设备为 /dev/sdb。设备名称会因你的系统和连接的驱动器数量而异。如果磁盘、分区与文件系统之间的关系不够清晰,我们关于块设备、分区和文件系统的指南涵盖了下文使用的术语。
在运行任何格式化命令之前,请通过 lsblk 输出中的大小和型号确认设备。
你也可以使用 dmesg 命令查找设备名称。插入驱动器后,运行:
dmesg | tail -10
输出会显示内核分配的设备名称:
[ +0.000232] sd 1:0:0:0: [sdb] 30218842 512-byte logical blocks: (15.5 GB/14.4 GiB)
卸载设备
如果驱动器当前已挂载,必须在格式化之前先卸载它。格式化已挂载的设备可能会损坏数据。
检查设备上的任何分区是否已挂载:
mount | grep sdb
如果输出显示挂载点,请将其卸载:
sudo umount /dev/sdb1
如果设备有多个分区,请逐个卸载。
选择文件系统
格式化之前,请选择适合你使用场景的文件系统:
| 文件系统 | 最大文件大小 | 跨平台 | 最佳用途 |
|---|---|---|---|
FAT32 | 4 GB | Linux, macOS, Windows | 小型 U 盘、启动介质、最大兼容性 |
exFAT | 16 EB | Linux, macOS, Windows | 大容量 U 盘、大于 4 GB 的文件、跨平台使用 |
EXT4 | 16 TB | Linux only | 仅 Linux 的驱动器、Linux 系统的外部存储 |
NTFS | 16 TB | Windows, Linux (read/write) | 主要与 Windows 共享的驱动器 |
格式化为 FAT32
FAT32 是兼容性最广泛的文件系统。对于需要跨所有操作系统使用的驱动器,请使用它。请注意,FAT32 有 4 GB 的文件大小限制;如果你需要存储大于 4 GB 的文件,请改用 exFAT。
创建 MBR 分区表:
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
验证分区表:
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
格式化为 exFAT
对于需要在 Linux、macOS 和 Windows 上工作且不受 FAT32 的 4 GB 文件大小限制的 U 盘和 SD 卡,exFAT 是推荐的文件系统。
首先,如果尚未安装 exFAT 工具,请先安装:
在 Ubuntu、Debian 及其衍生版上:
sudo apt install exfatprogs
在 Fedora、RHEL 及其衍生版上:
sudo dnf install exfatprogs
创建 MBR 分区表:
sudo parted /dev/sdb --script -- mklabel msdos
创建一个使用整个磁盘的分区。ntfs 提示符将 MBR 分区类型设置为 0x07,exFAT 也使用它以保持与 Windows 的兼容性。它不会创建 NTFS 文件系统:
sudo parted /dev/sdb --script -- mkpart primary ntfs 1MiB 100%
将该分区格式化为 exFAT:
sudo mkfs.exfat /dev/sdb1
格式化为 EXT4
如果驱动器只在 Linux 系统上使用,请使用 EXT4。EXT4 支持 Linux 文件权限、大文件以及日志功能。
创建 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
验证分区表:
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
格式化为 NTFS
对于主要要与 Windows 系统共享的驱动器,请使用 NTFS。Linux 可以通过内核 5.15 引入的 ntfs3 内核驱动或 ntfs-3g 用户空间驱动读写 NTFS。具体可用和使用哪个驱动取决于你的发行版和内核配置。创建文件系统是另一回事,因为 mkfs.ntfs 来自 NTFS-3G 用户空间工具,而该工具默认并不总是存在。
如有需要,请安装 NTFS 工具:
在 Ubuntu、Debian 及其衍生版上:
sudo apt install ntfs-3g
在 Fedora、RHEL 及其衍生版上:
在 RHEL 及其衍生版上,安装 ntfsprogs 之前需要先启用 EPEL。
sudo dnf install ntfsprogs
创建 MBR 分区表:
sudo parted /dev/sdb --script -- mklabel msdos
创建一个使用整个磁盘的分区:
sudo parted /dev/sdb --script -- mkpart primary ntfs 1MiB 100%
将该分区格式化为 NTFS。-f 标志执行快速格式化:
sudo mkfs.ntfs -f /dev/sdb1
使用 GNOME 磁盘工具格式化
如果你更喜欢图形化工具,GNOME 磁盘(GNOME Disks)是最简单的选择,它预装在 Ubuntu、Fedora 和大多数基于 GNOME 的桌面上。如果缺失,可在 Ubuntu 和 Debian 上使用 sudo apt install gnome-disk-utility 安装,或在 Fedora 和 RHEL 上使用 sudo dnf install gnome-disk-utility 安装。
打开磁盘应用程序,从左侧列表中选择你的 U 盘或 SD 卡。通过核对大小和型号确认选择了正确的设备,然后点击停止(方块)按钮卸载任何已挂载的分区。
要格式化单个分区,请选中它并打开分区菜单(齿轮图标),然后选择“格式化分区”。输入卷名,选择文件系统(FAT 用于跨平台、Ext4 仅用于 Linux、或 NTFS 用于 Windows),然后点击格式化。要擦除整个驱动器并重新创建分区表,请打开驱动器菜单(右上角的三点图标)并选择“格式化磁盘”。
使用 GParted 格式化
GParted 是另一种常见的图形化选择,当你需要更改分区布局而不仅仅是格式化现有分区时,它是更好的选择。在 Ubuntu 和 Debian 上使用 sudo apt install gparted 安装,或在 Fedora 上使用 sudo dnf install gparted 安装。在 RHEL 8/9 及其衍生版上,运行 dnf 命令之前需先启用 EPEL。
启动 GParted,并从右上角的设备下拉菜单中选择 U 盘或 SD 卡。在继续之前检查大小和设备路径,因为 GParted 会在其找到的第一个磁盘上打开,而该磁盘通常是你的系统盘。如果设备上的某个分区已挂载,请右键点击它并选择“卸载”。
要从干净的驱动器开始,请打开“设备”菜单并选择“创建分区表”,然后选择 msdos 以获得广泛兼容性,或选择 gpt 用于大于 2 TB 的驱动器。创建新分区表会删除驱动器上的所有现有分区。在该对话框中点击“应用”即可立即写入新的分区表。
然后右键点击未分配空间,选择“新建”,从“文件系统”下拉菜单中选择文件系统,然后点击“添加”。创建和格式化新分区会被排队,因此这些操作会在你点击绿色对勾以应用它们时执行。
安全擦除驱动器(可选)
如果你要赠送或丢弃驱动器,可以覆盖写入驱动器以降低恢复旧文件的几率。对于正常的重新格式化,此步骤并非必要。
使用 dd 将整个驱动器用零覆盖写入:
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
擦除之后,按照上述步骤创建新的分区表并进行格式化。
故障排查
格式化时出现“设备或资源忙”:设备仍处于挂载状态。格式化之前,使用 sudo umount /dev/sdb* 卸载设备上的所有分区。
“权限被拒绝”:格式化需要 root 权限。请确保对所有 parted、mkfs 和 dd 命令都使用 sudo。
插入后未检测到驱动器:尝试不同的 USB 端口。运行 dmesg | tail -20 检查内核是否识别了该设备。如果没有输出,则驱动器或端口可能已损坏。
“无法满足分区上的所有约束”:mkpart 命令中的对齐或大小值相互冲突。使用 1MiB 作为起始值、100% 作为结束值,让 parted 自动处理对齐。
格式化后的驱动器变为只读:某些 SD 卡侧面带有物理写保护开关。请检查开关是否处于解锁位置。对于 U 盘,请检查 dmesg 输出中是否有写保护消息。
FAT32 不允许大于 4 GB 的文件:FAT32 有 4 GB 的文件大小限制。请将驱动器格式化为 exFAT,它支持几乎任意大小的文件,并且与 Linux、macOS 和 Windows 兼容。
常见问题
我应该为 U 盘使用哪种文件系统?如果需要跨平台兼容性且文件超过 4 GB,请使用 exFAT。若要与较旧的设备获得最大兼容性,请使用 FAT32。如果驱动器只在 Linux 系统上使用,请使用 EXT4。
我需要创建分区表吗,还是可以直接格式化原始设备?从技术上讲,无需分区表即可格式化原始设备(sudo mkfs.ext4 /dev/sdb),但建议先创建分区表。某些操作系统和设备无法识别没有分区表的驱动器。
MBR 和 GPT 分区表有什么区别?MBR(主引导记录)是较旧的标准,最多支持 4 个主分区,适用于最大 2 TB 的驱动器。GPT(GUID 分区表)支持更多分区以及大于 2 TB 的驱动器。当你需要与传统设备和固件获得广泛兼容性时,请使用 MBR。对于现代系统和更大的驱动器,请使用 GPT。parted 和 fdisk 命令都可以创建这两种类型。
如何使用图形化工具格式化驱动器?使用 GNOME 磁盘可快速格式化单个分区,而当你还需要更改分区布局时,请使用 GParted。这两种工具都在上面的章节中介绍过。
格式化后可以恢复数据吗?标准格式只会删除文件系统元数据,而不是实际数据。testdisk 或 photorec 等工具可能可以恢复文件。使用 dd 覆盖写入会降低可恢复性,但在基于闪存的介质(U 盘、SD 卡、SSD)上,由于磨损均衡的存在,安全擦除并不总是能得到保证。
结论
要在 Linux 上格式化 U 盘或 SD 卡,请使用 lsblk 识别设备、卸载它、用 parted 创建分区表,然后用 mkfs 格式化分区。跨平台使用请选择 FAT32 或 exFAT,仅用于 Linux 的驱动器请选择 EXT4。
本文译自 Linuxize,原文标题《How to Format USB Drives and SD Cards on Linux》。