备份手机字库基带方法(使用命令备份)

对于玩机用户来说,如果经常刷第三方ROM或面具模块,建议先完整备份手机字库,以降低因意外问题导致的变砖风险。有了手机字库备份,在遇到手机丢基带/掉串码等问题时至少有个修复方法,不然送售后只能建议更换手机主板解决。

什么是手机字库

可以简单理解为手机分区。虽然在刷机时也会刷写分区,但不是刷写全部分区。如果恰好是其它分区数据损坏,这时刷写官方ROM就恢复不了。而备份手机字库包含了全部分区,所以可以修复绝大部分非硬件故障问题。

手机字库包括基带分区,所以不用额外备份手机基带,备份字库就包含了备份基带。基带的主要分区如下:

  • 高通机型:fsg,fsc,modemst1,modemst2
  • 联发科机型:nvram,nvdata,nvcfg,persist,protect1,protect2,seccfg

准备工作

在备份手机字库前,请确保手机电量充足,已获取 Root 权限,并以 USB 调试模式连接到电脑(电脑配置好 ADB 命令环境变量)。

检查手机有足够存储空间,最好 20G 以上(通常手机型号越新备份内容越大)。

如果是联发科机型,请将下面命令中的 /dev/block/bootdevice/by-name 修改为 /dev/block/by-name

最后就是风险提示了,虽然本文方法经过了足够多次的测试。但各人环境不同,其中潜在风险须自行承担。

备份手机字库

1. 打开电脑命令行窗口,输入命令进入 Shell 和获取 Root 权限(运行命令后留意手机屏幕授权提示)。

adb shell
su

2. 在手机内部储存创建存放备份内容目录。

mkdir /sdcard/000_Backup

3. 读取手机分区名称,从中排除 userdata 和 cache 分区(这两个不用备份),然后创建备份和恢复脚本。

ls -1 /dev/block/bootdevice/by-name | grep -ixvE "userdata|cache" | while IFS= read -r name; do echo "dd if=/dev/block/bootdevice/by-name/$name of=/sdcard/000_Backup/$name.img" >> /sdcard/000_Backup/001_Backup.sh; echo "fastboot flash $name $name.img" >> /sdcard/000_Backup/002_Restore.bat; done

4. 运行备份(备份速度取决手机储存读取性能)。

sh /sdcard/000_Backup/001_Backup.sh

5. 修改恢复脚本,注释掉一些不必要的分区恢复(可自行按格式添加不需要恢复的分区)。

sed -i -e '/ super.img/s/^/::/g' -e '/ system.img/s/^/::/g' -e '/ system_a.img/s/^/::/g' -e '/ system_b.img/s/^/::/g' -e '/ vendor.img/s/^/::/g' -e '/ vendor_a.img/s/^/::/g' -e '/ vendor_b.img/s/^/::/g' -e '/ mmcblk0.img/s/^/::/g' -e '/ sda.img/s/^/::/g' -e '/ sdb.img/s/^/::/g' -e '/ sdc.img/s/^/::/g' -e '/ sdd.img/s/^/::/g' -e '/ sde.img/s/^/::/g' -e '/ sdf.img/s/^/::/g' -e '/ sdg.img/s/^/::/g' /sdcard/000_Backup/002_Restore.bat

6. 查询备份内容 MD5(查询过程消耗算力会比较慢),以便在需要时可以校验文件完整性。

cd /sdcard/000_Backup && md5sum * > /sdcard/000_Backup/003_MD5Hsah.txt

7. 打包备份文件(确认有足够空间创建打包文件。打包压缩过程比较慢,耐心等待)。

cd /sdcard && tar -zcpvf PartitionBackup.tgz 000_Backup

8. 删除备份文件夹。

rm -rf /sdcard/000_Backup

9 退出 Root 和 Shell(运行两次)。

exit

10. 将备份文件传送到电脑(电脑存放路径请自行修改)。

adb pull /sdcard/PartitionBackup.tgz D:\Backup

之后手机上的备份文件就可以删除了。如果之后需要恢复字库,将手机启动到 Fastboot 模式,连接到电脑,解压之前的字库备份,双击运行文件夹里的 002_Restore.bat 恢复脚本即可。

如果恢复后还是有问题,可以尝试清除分区内容再运行恢复(清除分区命令如下,自行添加要清除分区名称)。

fastboot erase 分区名称

最后,切记不要直接恢复他人分享的备份,如果刷了其它手机的串码,可能导致以后不能解 BL 等副作用。

评论列表

  1. #8

    emmc分区格式如何操作?

  2. #7

    好东西,就是来看看看的!!!

  3. #6

    fastboot提示刷不进参考酷安ggggg11111的帖子

  4. #5

    求大佬指点,我是红米note11,运行sh文件后文件夹多了54个文件,然后命令行就不动了,也没有退出,nvram,nvdata,nvcfg,persist,protect1,protect2,的img都有了,但是seccfg还没出现,这是正常的吗?

    1. ctrl+c了,发现程序写了个sdc.img,几乎把手机内存用完了(256GB内存用掉了230GB)
      注释掉了sdc.img程序就会很快跑完

  5. #4

    请问Xiaomi 10恢复着黑框直接就消失了,没有任何提示停留在屏幕,重启进系统卡MI。站长有何高见?

    1. 解决了,目测是因为twrp清data后会导致分区挂载失败。再次进入twrp即可。

  6. #3

    恢复备份的时候卡在刷写”oops”分区?
    Sending ‘oops’ (16384 KB) OKAY [ 0.547s]
    Writing ‘oops’
    确认按照教程创建备份,机型为Redmi K40S,VAB设备,安卓12

    1. 补充:刷写”oops”分区时,硬盘读写为0

      1. 注释掉oops后,基带分区一个都没刷进,显示写保护
        D:\Android\PartitionBackup\000_Backup>fastboot flash fsc fsc.img
        Sending ‘fsc’ (128 KB) OKAY [ 0.016s]
        Writing ‘fsc’ FAILED (remote: ‘Partition is write protected’)
        fastboot: error: Command failed

        D:\Android\PartitionBackup\000_Backup>fastboot flash fsg fsg.img
        Sending ‘fsg’ (2048 KB) OKAY [ 0.078s]
        Writing ‘fsg’ FAILED (remote: ‘Partition is write protected’)
        fastboot: error: Command failed

        D:\Android\PartitionBackup\000_Backup>fastboot flash mdm1m9kefs1 mdm1m9kefs1.img
        Sending ‘mdm1m9kefs1’ (8192 KB) OKAY [ 0.250s]
        Writing ‘mdm1m9kefs1’ FAILED (remote: ‘Partition is write protected’)
        fastboot: error: Command failed

        D:\Android\PartitionBackup\000_Backup>fastboot flash mdm1m9kefs2 mdm1m9kefs2.img
        Sending ‘mdm1m9kefs2’ (8192 KB) OKAY [ 0.250s]
        Writing ‘mdm1m9kefs2’ FAILED (remote: ‘Partition is write protected’)
        fastboot: error: Command failed

        D:\Android\PartitionBackup\000_Backup>fastboot flash mdm1m9kefs3 mdm1m9kefs3.img
        Sending ‘mdm1m9kefs3’ (8192 KB) OKAY [ 0.250s]
        Writing ‘mdm1m9kefs3’ FAILED (remote: ‘Partition is write protected’)
        fastboot: error: Command failed

        D:\Android\PartitionBackup\000_Backup>fastboot flash mdm1m9kefsc mdm1m9kefsc.img
        Sending ‘mdm1m9kefsc’ (1024 KB) OKAY [ 0.062s]
        Writing ‘mdm1m9kefsc’ FAILED (remote: ‘Partition is write protected’)
        fastboot: error: Command failed

        D:\Android\PartitionBackup\000_Backup>fastboot flash modemst1 modemst1.img
        Sending ‘modemst1’ (2048 KB) OKAY [ 0.084s]
        Writing ‘modemst1’ FAILED (remote: ‘Partition is write protected’)
        fastboot: error: Command failed

        D:\Android\PartitionBackup\000_Backup>fastboot flash modemst2 modemst2.img
        Sending ‘modemst2’ (2048 KB) OKAY [ 0.064s]
        Writing ‘modemst2’ FAILED (remote: ‘Partition is write protected’)
        fastboot: error: Command failed

        D:\Android\PartitionBackup\000_Backup>fastboot flash persist persist.img
        Sending ‘persist’ (65536 KB) OKAY [ 2.094s]
        Writing ‘persist’ FAILED (remote: ‘Partition is write protected’)
        fastboot: error: Command failed

        D:\Android\PartitionBackup\000_Backup>fastboot flash persistbak persistbak.img
        Sending ‘persistbak’ (65536 KB) OKAY [ 2.061s]
        Writing ‘persistbak’ FAILED (remote: ‘Partition is write protected’)
        fastboot: error: Command failed

  7. #2

    按教程弄完 得到一个0kb的文件 求大神指点,命令5不是太懂。

    1. 请问运行备份脚本有输出报错吗?测试红米K40备份后大概有6G。

  8. #1

    赞,这个方法简洁,不用安装软件,测试备份内容与之前用软件备份的一样,估计都是同样备份原理

发表评论

电邮地址用于 Gravatar 头像显示,不会被公开可见。