Ubuntu 下利用命令行将 U 盘格式化为 ext4、FAT32 和 exFAT 的详细教程

[复制链接]
发表于 2026-10-5 11:24:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

在 Linux 下插上 U 盘却只能读不能写、或者拷一个 5GB 的文件提示「文件太大」,多半是文件系统选错了。把 U 盘重新格式化成合适的格式就能解决。本文把 ext4、FAT32、exFAT 三种常见格式的适用场景说清楚,再给出从识别设备、卸载、重建分区到格式化的完整命令行流程。

三种文件系统该怎么选

  • ext4:Linux 原生默认格式,支持文件权限(rwx)、日志日志功能和更细的配额管理。缺点是Windows 和 macOS 认不出来,只能当纯 Linux 内部盘用。适合把 U 盘当 Linux 系统的移动仓库。
  • FAT32:兼容性最强,Windows / macOS / Linux / 大部分相机和车载设备都能读。缺点是单个文件不能超过 4GB,而且没有权限概念、不做日志日志,容易在掉电后损坏。
  • exFAT:同样跨平台,但突破了 4GB 单文件限制,是 FAT32 事实上的替代品。开销比 ext4 小,最适合「今天插 Windows 拷贝、明天插 Linux 使用」的移动介质。

一句话结论:只在 Linux 内部用选 ext4;跨平台小文件选 FAT32(小于 4GB 时);跨平台大文件选 exFAT。

第一步:插上 U 盘并认清设备名

插入 U 盘后先别急着手格式化,第一步永远是确认设备名。认错了就是删系统盘。

lsblk

典型输出长这样:

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  500G  0 disk
├─sda1   8:1    0   50G  0 part /
├─sda2   8:2    0   45G  0 part /home
sdb      8:16   1   16G  0 disk
└─sdb1   8:17   1   16G  0 part /media/username/USB

判断依据两条:容量(16G 那块就是 U 盘)和 挂载点(/media/username/USB)。本例 U 盘是 /dev/sdb,分区是 /dev/sdb1。

再看当前分区是什么文件系统:

lsblk -f
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sdb
└─sdb1 vfat   USB   XXXX-XXXX                            /media/username/USB

这里 vfat 就是 FAT32。确认清楚再往下走。

第二步:卸载已挂载的分区

格式化前必须先卸掉挂载,否则会报「目标忙」:

sudo umount /dev/sdb1

再用 lsblk 确认 MOUNTPOINT 那一列已经空了。如果提示 target is busy,说明还有进程占着这个目录,先切出去(cd 到别的目录)或者用 lsof +D /media/username/USB 找出占用进程。

第三步:删掉旧分区表

新 U 盘一般自带一个出厂分区表,格式化之前先清掉:

sudo fdisk /dev/sdb

进入交互界面后按这个顺序敲:

  • p — 打印当前分区表,看清楚有几个分区
  • d — 删除分区;有多个就反复 d 直到删光
  • w — 写入分区表并退出

w 这一步会清空分区表,U 盘里所有数据一并没了,确认无误再执行。

第四步:重建一个分区

还是同一个 fdisk /dev/sdb:

sudo fdisk /dev/sdb

依次输入:

  • n — 新建分区(New)
  • p — 选主分区(Primary)
  • 分区号回车用默认 1
  • 起始扇区、结束扇区都直接回车,用满整块空间
  • w — 保存退出

退出后 lsblk 应该看到 /dev/sdb1。

第五步:格式化成目标文件系统

5.1 格式化为 ext4

sudo mkfs.ext4 /dev/sdb1

成功时会有类似输出:

Creating filesystem with 39075844 4k blocks and 977280 inodes
Filesystem UUID: xxxx-xxxx
Superblock backups stored on blocks: ...

5.2 格式化为 FAT32

sudo mkfs.vfat -F 32 /dev/sdb1

-F 32 显式指定 FAT32,不加也默认走这个。成功会打印 mkfs.fat 4.2 (2021-01-31) 之类的版本信息。

5.3 格式化为 exFAT

exFAT 需要额外工具包,Ubuntu 18.04 起官方软件源已经带上了:

sudo apt update
sudo apt install exfat-utils

装完后:

sudo mkfs.exfat /dev/sdb1

会输出 mkexfatfs 1.3.0 与 Creating... done.。

第六步:验证并挂载使用

再用 lsblk -f 看一眼 FSTYPE 列,确认是 ext4 / vfat / exfat 之一。

想手动挂起来用:

sudo mkdir -p /mnt/usb
sudo mount /dev/sdb1 /mnt/usb

之后普通用户读不了的话,注意 ext4 是有权限的,需要 chmod 或者挂载时指定 -o uid=1000,gid=1000;exFAT 和 vfat 没这层概念。

几个容易翻车的地方

  • 把 /dev/sda 当 U 盘格式化:lsblk 不看容量就下手,直接把系统盘擦了。设备上 disk 的那一行是整块盘,part 的是分区。
  • 没 umount 就去 mkfs:报 Device or resource busy,看着像权限问题其实只是没卸载。
  • exFAT 装不上工具包:老系统(16.04 及更早)源里没有,换 exfat-fuse 或升级系统。
  • U 盘 4GB 上限:明明格式化成 FAT32 了还是拷不进大文件,回头确认 FSTYPE 是不是又变回 vfat 或者其实是 exFAT。
  • fdisk 对大于 2TB 的盘:MBR 分区表有容量上限,超过 2TB 要用 parted 建 GPT 表。

整套流程走完只涉及一块独立设备,不碰系统盘上任何分区,原有数据不受影响。选对格式,U 盘才算真正能用。

qidao123.com企服评测-应用市场 编辑提示

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表