You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何擦除GPT分区表并清除旧分区挂载信息?BeagleBone Black定制板问题

解决GPT分区表擦除后mkfs.ext4报错的问题

我在处理嵌入式存储(尤其是BeagleBone这类板子的eMMC)时经常碰到这个问题——你只擦除了主GPT分区表,但磁盘末尾的备份GPT表、残留的文件系统签名,还有旧分区的挂载信息没清理干净,导致mkfs.ext4误判分区已有文件系统。下面是一步步的根治方案:

1. 彻底清除GPT分区表(主+备份)

默认的分区擦除命令往往只处理开头的主GPT,而eMMC末尾的备份GPT还会残留,这是最常见的原因。推荐用sgdisk工具一次性清空所有GPT相关数据:

sgdisk --zap-all /dev/mmcblk0

这个命令会:

  • 清除主GPT分区表
  • 清除末尾的备份GPT分区表
  • 清除MBR保护分区(如果有的话)

如果你的系统里没有sgdisk,可以用dd直接覆盖开头和结尾的区域:

# 覆盖开头10MB(包含主GPT和可能的文件系统签名)
dd if=/dev/zero of=/dev/mmcblk0 bs=1M count=10
# 覆盖末尾10MB(包含备份GPT)
dd if=/dev/zero of=/dev/mmcblk0 bs=1M count=10 seek=$(( $(blockdev --getsize64 /dev/mmcblk0)/1024/1024 -10 ))

2. 清除残留的文件系统签名

即使分区表没了,旧文件系统的签名(比如ext4的超级块)还会留在磁盘上,mkfs.ext4会检测到这些签名并报错。用wipefs工具一键清除所有可识别的签名:

wipefs --all /dev/mmcblk0

这个命令会删除ext4、FAT、RAID等所有类型的文件系统签名,确保磁盘是“干净”的。如果没有wipefs,也可以逐个覆盖旧分区的开头区域(假设旧分区是/dev/mmcblk0p1、/dev/mmcblk0p2等):

dd if=/dev/zero of=/dev/mmcblk0p1 bs=1M count=1
dd if=/dev/zero of=/dev/mmcblk0p2 bs=1M count=1
# 所有旧分区都执行一遍

3. 清理挂载信息残留

首先确保旧分区没有被挂载,避免格式化时出问题:

umount /dev/mmcblk0p* 2>/dev/null

然后检查/etc/fstab文件,如果里面有旧分区的挂载条目,一定要注释掉或者删除——否则系统重启后可能会尝试挂载不存在的分区,引发错误。比如:

# 用sed注释掉包含/mmcblk0p的行
sed -i '/\/dev\/mmcblk0p/s/^/#/' /etc/fstab

临时的挂载信息(比如/proc/mounts里的内容)会在重启后自动消失,如果你的脚本是在运行中操作,也可以直接重启板子(嵌入式系统重启成本很低)。

4. 重新分区并格式化

做完上面的步骤后,再重新创建分区并格式化就不会报错了。比如用sgdisk创建分区:

# 清空分区表(保险起见)
sgdisk --clear /dev/mmcblk0
# 创建第一个分区:从2048扇区开始,大小512MB,类型为Linux文件系统(8300)
sgdisk --new=1:2048:+512M --typecode=1:8300 /dev/mmcblk0
# 创建第二个分区:剩余所有空间,类型为Linux文件系统
sgdisk --new=2:0:0 --typecode=2:8300 /dev/mmcblk0
# 刷新分区表
partprobe /dev/mmcblk0
# 格式化分区
mkfs.ext4 /dev/mmcblk0p1
mkfs.ext4 /dev/mmcblk0p2

注意事项

  • 一定要确认设备路径是正确的/dev/mmcblk0,别误操作其他存储设备!
  • 如果你的嵌入式系统缺少sgdisk或wipefs,可以通过包管理器安装(比如Debian/Ubuntu系:apt install gdisk wipefs)。
  • 在脚本中执行这些命令时,最好加上错误检查,比如每个命令后判断$? -eq 0,避免出错后继续执行后续步骤。

内容的提问来源于stack exchange,提问作者ART

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:44:49