一、背景

在日常使用 SD 卡的过程中,常会遇到这样几种情况:

  • 卡片曾经刷入过树莓派或其他 Linux 系统镜像;
  • 分区结构被拆成多个分区,不再适合作为普通存储卡使用;
  • 文件系统存在轻微元数据异常;
  • 希望将多张卡统一整理成相同状态,便于后续管理和使用。

这次的目标很明确:将两张不同容量的 SD 卡都整理为统一格式,即:

  • 使用 msdos 分区表;
  • 全盘只保留一个主分区;
  • 分区类型为 FAT32
  • 不设置卷标;
  • 检查文件系统无错误;
  • 最终达到“干净、标准、可直接使用”的状态。

二、第一张 SD 卡的初始状态检查

首先查看第一张卡的分区信息。结果显示:

  • 总容量约 29 GiB;
  • 使用 dos 分区表;
  • 只有一个主分区;
  • 分区类型为 W95 FAT32 (LBA)
  • 分区覆盖了几乎整张卡。

从表面上看,这张卡的结构并没有明显错误,属于“已经是单分区 FAT32”的状态。但仅凭分区表信息,还不能确认文件系统内部是否完全正常,因此继续做文件系统检查。


三、第一次文件系统检查发现的问题

对 FAT32 分区执行只读检查后,发现两处轻微异常:

  1. 根目录中存在一个无效的卷标记录;
  2. 空闲簇摘要信息未初始化。

这类问题通常不属于严重损坏,也不意味着卡本身有物理故障。更常见的原因是:

  • 曾被某些工具格式化过;
  • 设备异常拔出;
  • 文件系统元数据未被正确收尾;
  • 不同平台间反复读写造成轻微不一致。

也就是说,这时的问题主要在文件系统元数据层,不是分区层,也暂时看不出是假卡或坏卡。


四、修复第一张卡的文件系统

随后对该分区执行自动修复。修复动作主要包括:

  • 自动移除无效卷标记录;
  • 自动重建空闲簇摘要。

修复完成后再次执行只读检查,没有再出现报错,说明这张卡的 FAT32 文件系统已经恢复正常。

到这里可以得出一个中间结论:

第一张卡在分区结构上本来就是正常的,只是文件系统存在轻微元数据异常;修复后已经恢复到可正常使用的状态。


五、对第一张卡进行彻底重新格式化

虽然文件系统已经修好,但为了让状态更加统一、更加干净,后续还是决定重新格式化一次。

操作思路如下:

  1. 卸载现有分区;
  2. 擦除原有文件系统签名;
  3. 重建 msdos 分区表;
  4. 新建一个从 1MiB 开始、占满整张卡的主分区;
  5. 将该分区格式化为 FAT32
  6. 不设置卷标;
  7. 再执行一次只读检查。

最终结果如下:

  • 分区表为 msdos
  • 起始扇区为 2048,属于常见且标准的对齐方式;
  • 只有一个 FAT32 主分区;
  • 无卷标;
  • 文件系统检查无报错;
  • 卡的状态完全正常。

这样一来,第一张卡就从“可用但有轻微元数据问题”,变成了“结构标准、状态干净、检查通过”的整理完成状态。


六、第二张 SD 卡的初始状态

第二张卡容量约 14.8 GiB。最初的分区结构并不是普通存储卡的样子,而是典型的 Linux 镜像刷写后的结构:

  • 第一个分区为约 512 MiB 的 FAT32;
  • 第二个分区为 Linux 类型分区;
  • 使用 dos 分区表。

这类结构非常常见,尤其是在刷写树莓派、嵌入式系统、各类 Linux 镜像之后。
对于普通电脑、相机、文件传输等用途,这种结构并不方便,因此需要恢复成标准单分区 FAT32。


七、第二张卡的清理与重建过程

为了更彻底地清理这张卡,采用了比第一张更强一点的方式:

  1. 卸载已有分区;
  2. 用零数据覆盖磁盘起始部分,清除旧分区和文件系统痕迹;
  3. 重建 msdos 分区表;
  4. 创建一个占满全盘的 FAT32 主分区;
  5. 格式化为 FAT32;
  6. 不设置卷标;
  7. 执行只读检查;
  8. 最后再次查看分区表。

检查结果表明:

  • 新分区从 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 卡;
  • 两张卡最终都被统一为相同的普通存储卡状态,后续可以直接使用或继续刷写其他镜像。

从工程维护的角度看,这种“先检查、再修复、最后统一格式”的流程是很稳的。
既避免了不必要的误判,也让后续设备管理更加整洁。

Leave a Reply

Your email address will not be published. Required fields are marked *