Linux下快速清除分区表及分区数据(树莓派OS测试需求)
解决方案:Raspberry Pi 测试前清除分区表与残留文件
一、清除分区表
无需写入整个驱动器,仅需覆盖分区表核心区域即可快速清空:
- 用
sfdisk直接删除所有分区:sfdisk --delete /dev/sdX(替换/dev/sdX为目标驱动器,如/dev/sdb) - 更彻底清除MBR/GPT结构:
- MBR分区:执行
dd if=/dev/zero of=/dev/sdX bs=512 count=1,仅覆盖第一个扇区,耗时极短 - GPT分区:执行
dd if=/dev/zero of=/dev/sdX bs=1M count=1,覆盖开头1MB区域,足以清除GPT表头与备份表
- MBR分区:执行
二、清除分区残留的文件与目录结构
旧文件系统结构会因扇区未覆盖留存,需在创建新分区后重建文件系统,而非直接挂载:
- 针对
/boot分区(FAT32格式):mkfs.vfat -F 32 /dev/sdX1 - 针对根分区(ext4格式):
mkfs.ext4 /dev/sdX2 - 若临时创建全容量分区后再改回双分区,每次调整分区后都要执行对应
mkfs命令,彻底覆盖旧文件系统结构
三、Python脚本整合示例
可将上述操作通过subprocess.run()集成到测试前置流程中:
import subprocess def clean_drive(drive): # 清除分区表 subprocess.run(["sfdisk", "--delete", drive], check=True) # 可选:覆盖MBR区域 subprocess.run(["dd", "if=/dev/zero", f"of={drive}", "bs=512", "count=1"], check=True) def init_filesystems(boot_part, root_part): # 重建boot分区文件系统 subprocess.run(["mkfs.vfat", "-F", "32", boot_part], check=True) # 重建root分区文件系统 subprocess.run(["mkfs.ext4", root_part], check=True)
注意:执行这些命令需root权限,脚本需以sudo运行,且务必确认目标驱动器路径正确,避免误操作系统盘。
内容的提问来源于stack exchange,提问作者Tango
相关产品推荐
相关产品推荐

