一、背景
在日常使用 SD 卡的过程中,常会遇到这样几种情况:
- 卡片曾经刷入过树莓派或其他 Linux 系统镜像;
- 分区结构被拆成多个分区,不再适合作为普通存储卡使用;
- 文件系统存在轻微元数据异常;
- 希望将多张卡统一整理成相同状态,便于后续管理和使用。
这次的目标很明确:将两张不同容量的 SD 卡都整理为统一格式,即:
- 使用
msdos分区表; - 全盘只保留一个主分区;
- 分区类型为
FAT32; - 不设置卷标;
- 检查文件系统无错误;
- 最终达到“干净、标准、可直接使用”的状态。
二、第一张 SD 卡的初始状态检查
首先查看第一张卡的分区信息。结果显示:
- 总容量约 29 GiB;
- 使用
dos分区表; - 只有一个主分区;
- 分区类型为
W95 FAT32 (LBA); - 分区覆盖了几乎整张卡。
从表面上看,这张卡的结构并没有明显错误,属于“已经是单分区 FAT32”的状态。但仅凭分区表信息,还不能确认文件系统内部是否完全正常,因此继续做文件系统检查。
三、第一次文件系统检查发现的问题
对 FAT32 分区执行只读检查后,发现两处轻微异常:
- 根目录中存在一个无效的卷标记录;
- 空闲簇摘要信息未初始化。
这类问题通常不属于严重损坏,也不意味着卡本身有物理故障。更常见的原因是:
- 曾被某些工具格式化过;
- 设备异常拔出;
- 文件系统元数据未被正确收尾;
- 不同平台间反复读写造成轻微不一致。
也就是说,这时的问题主要在文件系统元数据层,不是分区层,也暂时看不出是假卡或坏卡。
四、修复第一张卡的文件系统
随后对该分区执行自动修复。修复动作主要包括:
- 自动移除无效卷标记录;
- 自动重建空闲簇摘要。
修复完成后再次执行只读检查,没有再出现报错,说明这张卡的 FAT32 文件系统已经恢复正常。
到这里可以得出一个中间结论:
第一张卡在分区结构上本来就是正常的,只是文件系统存在轻微元数据异常;修复后已经恢复到可正常使用的状态。
五、对第一张卡进行彻底重新格式化
虽然文件系统已经修好,但为了让状态更加统一、更加干净,后续还是决定重新格式化一次。
操作思路如下:
- 卸载现有分区;
- 擦除原有文件系统签名;
- 重建
msdos分区表; - 新建一个从
1MiB开始、占满整张卡的主分区; - 将该分区格式化为
FAT32; - 不设置卷标;
- 再执行一次只读检查。
最终结果如下:
- 分区表为
msdos; - 起始扇区为
2048,属于常见且标准的对齐方式; - 只有一个 FAT32 主分区;
- 无卷标;
- 文件系统检查无报错;
- 卡的状态完全正常。
这样一来,第一张卡就从“可用但有轻微元数据问题”,变成了“结构标准、状态干净、检查通过”的整理完成状态。
六、第二张 SD 卡的初始状态
第二张卡容量约 14.8 GiB。最初的分区结构并不是普通存储卡的样子,而是典型的 Linux 镜像刷写后的结构:
- 第一个分区为约 512 MiB 的 FAT32;
- 第二个分区为 Linux 类型分区;
- 使用
dos分区表。
这类结构非常常见,尤其是在刷写树莓派、嵌入式系统、各类 Linux 镜像之后。
对于普通电脑、相机、文件传输等用途,这种结构并不方便,因此需要恢复成标准单分区 FAT32。
七、第二张卡的清理与重建过程
为了更彻底地清理这张卡,采用了比第一张更强一点的方式:
- 卸载已有分区;
- 用零数据覆盖磁盘起始部分,清除旧分区和文件系统痕迹;
- 重建
msdos分区表; - 创建一个占满全盘的 FAT32 主分区;
- 格式化为 FAT32;
- 不设置卷标;
- 执行只读检查;
- 最后再次查看分区表。
检查结果表明:
- 新分区从
2048扇区开始; - 只有一个主分区;
- 文件系统是 FAT32;
- 无卷标;
fsck没有报错;- 结构已经与第一张卡一致。
也就是说,第二张卡已经从“系统镜像卡”恢复成了“普通标准存储卡”。
八、最终统一后的状态
经过整理,两张卡最终都被统一为同一种结构:
目标状态
msdos分区表- 单一主分区
- 分区类型:
FAT32 - 不设置卷标
- 起始扇区标准对齐
- 文件系统检查通过
- 可直接作为普通存储卡继续使用
这种状态的好处在于:
- 兼容性高;
- Windows、Linux、树莓派工具等都容易识别;
- 后续再刷写镜像也方便;
- 管理简单,不容易混乱;
- 多张卡之间状态一致,便于维护。
九、实际使用时的一套通用命令
如果要把一张已经刷过镜像、或分区比较混乱的 SD 卡恢复成统一的普通 FAT32 存储卡,可以使用下面这一套流程。
1)卸载已有分区
sudo umount /dev/SDX1 2>/dev/null
sudo umount /dev/SDX2 2>/dev/null
2)清除开头区域的旧信息
sudo dd if=/dev/zero of=/dev/SDX bs=1M count=10 status=progress conv=fsync
3)重建 msdos 分区表
sudo parted -s /dev/SDX mklabel msdos
4)创建单一 FAT32 主分区
sudo parted -s /dev/SDX mkpart primary fat32 1MiB 100%
5)格式化为 FAT32,不设置卷标
sudo mkfs.vfat -F 32 /dev/SDX1
6)只读检查文件系统
sudo fsck.vfat -vn /dev/SDX1
7)查看结果
lsblk -o NAME,SIZE,FSTYPE,FSVER,LABEL,UUID,MOUNTPOINT /dev/SDX
sudo fdisk -l /dev/SDX
其中:
/dev/SDX表示整张卡;/dev/SDX1表示新建后的第一个分区;- 实际操作时必须先确认设备名,避免误操作到其他磁盘。
十、关于“可以直接拔卡吗”
整理完成后,如果设备当前没有挂载,一般可以直接拔出。
更稳妥一点的做法是先执行:
sync
lsblk -o NAME,MOUNTPOINT /dev/SDX
确认挂载点为空后再拔。
如果希望更保险,也可以尝试逻辑下电:
udisksctl power-off -b /dev/SDX
这样能进一步降低拔卡时的风险。
十一、这次操作反映出的几点经验
1. 分区表正常,不代表文件系统一定完全正常
第一张卡最开始看起来结构没问题,但文件系统内部仍然存在轻微元数据异常。
所以检查时最好分两层看:
- 分区层;
- 文件系统层。
2. FAT32 的小问题通常可以直接修复
像无效卷标、空闲簇摘要未初始化这类问题,通常都能被 fsck.fat 自动修复,不一定需要整卡重建。
3. 刷过系统镜像的卡,最稳妥的恢复方式就是彻底重建
第二张卡原本带有 Linux 分区。对于这类卡,与其只删某个分区,不如直接重建分区表和文件系统,更干净、更统一。
4. 统一状态很重要
当手里有多张 SD 卡、U 盘、系统盘时,保持统一的分区方式和文件系统格式,后续管理会轻松很多。
十二、结论
这次整理的结果很清晰:
- 第一张卡原本结构正常,但文件系统有轻微元数据异常,修复后又重新格式化,最终状态完全正常;
- 第二张卡原本是典型的 Linux 镜像分区结构,经过清除和重建后,也恢复成了标准单分区 FAT32 卡;
- 两张卡最终都被统一为相同的普通存储卡状态,后续可以直接使用或继续刷写其他镜像。
从工程维护的角度看,这种“先检查、再修复、最后统一格式”的流程是很稳的。
既避免了不必要的误判,也让后续设备管理更加整洁。