安卓备份分区----手动查询安卓系统分区信息 导出系统分区的一些基本操作

在玩机搞机过程中。有时候需要手动查看有些分区信息,或者备份分区的操作。那么今天以小米8为例解析下其中的操作步骤

机型:小米8

adb版本:https://developer.android.com/studio/releases/platform-tools

机型芯片:高通骁龙845

手机系统版本:安卓10

机型界面:twrp

机型字库:UFS

查看分区

1---手机进入twrp模式里安装好联机驱动。然后打开adb输入指令

adb shell ls -al /dev/block/bootdevice/by-name/界面如下

C:\Users\Administrator\Desktop\adb>adb shell ls -al /dev/block/bootdevice/by-name/
drwxr-xr-x    2 root     root          1740 Aug 10  1970 .
drwxr-xr-x    3 root     root          1880 Aug 10  1970 ..
lrwxrwxrwx    1 root     root            15 Aug 10  1970 ImageFv -> /dev/block/sdf4
lrwxrwxrwx    1 root     root            16 Aug 10  1970 abl_a -> /dev/block/sde32
lrwxrwxrwx    1 root     root            16 Aug 10  1970 abl_b -> /dev/block/sde33
lrwxrwxrwx    1 root     root            16 Aug 10  1970 aop_a -> /dev/block/sde14
lrwxrwxrwx    1 root     root            16 Aug 10  1970 aop_b -> /dev/block/sde15
lrwxrwxrwx    1 root     root            15 Aug 10  1970 apdp -> /dev/block/sde6
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk01 -> /dev/block/sda3
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk02 -> /dev/block/sda4
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk03 -> /dev/block/sda5
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk04 -> /dev/block/sda8
lrwxrwxrwx    1 root     root            16 Aug 10  1970 bk05 -> /dev/block/sda13
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk31 -> /dev/block/sdd1
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk32 -> /dev/block/sdd3
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk33 -> /dev/block/sdd5
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk41 -> /dev/block/sde3
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk42 -> /dev/block/sde9
lrwxrwxrwx    1 root     root            16 Aug 10  1970 bk43 -> /dev/block/sde16
lrwxrwxrwx    1 root     root            16 Aug 10  1970 bk44 -> /dev/block/sde17
lrwxrwxrwx    1 root     root            16 Aug 10  1970 bk45 -> /dev/block/sde25
lrwxrwxrwx    1 root     root            16 Aug 10  1970 bk46 -> /dev/block/sde29
lrwxrwxrwx    1 root     root            16 Aug 10  1970 bk47 -> /dev/block/sde38
lrwxrwxrwx    1 root     root            16 Aug 10  1970 bk48 -> /dev/block/sde40
lrwxrwxrwx    1 root     root            16 Aug 10  1970 bk49 -> /dev/block/sde41
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk51 -> /dev/block/sdf2
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk52 -> /dev/block/sdf3
lrwxrwxrwx    1 root     root            15 Aug 10  1970 bk53 -> /dev/block/sdf5
lrwxrwxrwx    1 root     root            16 Aug 10  1970 bluetooth -> /dev/block/sde24
lrwxrwxrwx    1 root     root            16 Aug 10  1970 boot -> /dev/block/sde45
lrwxrwxrwx    1 root     root            16 Aug 10  1970 cache -> /dev/block/sda20
lrwxrwxrwx    1 root     root            15 Aug 10  1970 cdt -> /dev/block/sdd2
lrwxrwxrwx    1 root     root            16 Aug 10  1970 cmnlib64_a -> /dev/block/sde20
lrwxrwxrwx    1 root     root            16 Aug 10  1970 cmnlib64_b -> /dev/block/sde21
lrwxrwxrwx    1 root     root            16 Aug 10  1970 cmnlib_a -> /dev/block/sde18
lrwxrwxrwx    1 root     root            16 Aug 10  1970 cmnlib_b -> /dev/block/sde19
lrwxrwxrwx    1 root     root            16 Aug 10  1970 cust -> /dev/block/sda18
lrwxrwxrwx    1 root     root            15 Aug 10  1970 ddr -> /dev/block/sdd4
lrwxrwxrwx    1 root     root            16 Aug 10  1970 devcfg_a -> /dev/block/sde12
lrwxrwxrwx    1 root     root            16 Aug 10  1970 devcfg_b -> /dev/block/sde13
lrwxrwxrwx    1 root     root            16 Aug 10  1970 devinfo -> /dev/block/sda12
lrwxrwxrwx    1 root     root            16 Aug 10  1970 dip -> /dev/block/sde28
lrwxrwxrwx    1 root     root            16 Aug 10  1970 dsp -> /dev/block/sde44
lrwxrwxrwx    1 root     root            16 Aug 10  1970 dtbo -> /dev/block/sde37
lrwxrwxrwx    1 root     root            15 Aug 10  1970 frp -> /dev/block/sda7
lrwxrwxrwx    1 root     root            15 Aug 10  1970 fsc -> /dev/block/sdf1
lrwxrwxrwx    1 root     root            16 Aug 10  1970 fsg -> /dev/block/sde36
lrwxrwxrwx    1 root     root            16 Aug 10  1970 hyp_a -> /dev/block/sde26
lrwxrwxrwx    1 root     root            16 Aug 10  1970 hyp_b -> /dev/block/sde27
lrwxrwxrwx    1 root     root            16 Aug 10  1970 keymaster_a -> /dev/block/sde22
lrwxrwxrwx    1 root     root            16 Aug 10  1970 keymaster_b -> /dev/block/sde23
lrwxrwxrwx    1 root     root            15 Aug 10  1970 keystore -> /dev/block/sda6
lrwxrwxrwx    1 root     root            15 Aug 10  1970 limits -> /dev/block/sde2
lrwxrwxrwx    1 root     root            16 Aug 10  1970 logdump -> /dev/block/sda16
lrwxrwxrwx    1 root     root            16 Aug 10  1970 logfs -> /dev/block/sda10
lrwxrwxrwx    1 root     root            16 Aug 10  1970 logo -> /dev/block/sde43
lrwxrwxrwx    1 root     root            16 Aug 10  1970 minidump -> /dev/block/sda17
lrwxrwxrwx    1 root     root            15 Aug 10  1970 misc -> /dev/block/sda9
lrwxrwxrwx    1 root     root            16 Aug 10  1970 modem -> /dev/block/sde46
lrwxrwxrwx    1 root     root            15 Aug 10  1970 modemst1 -> /dev/block/sdf6
lrwxrwxrwx    1 root     root            15 Aug 10  1970 modemst2 -> /dev/block/sdf7
lrwxrwxrwx    1 root     root            15 Aug 10  1970 msadp -> /dev/block/sde7
lrwxrwxrwx    1 root     root            16 Aug 10  1970 oops -> /dev/block/sda11
lrwxrwxrwx    1 root     root            16 Aug 10  1970 persist -> /dev/block/sda14
lrwxrwxrwx    1 root     root            16 Aug 10  1970 persistbak -> /dev/block/sda15
lrwxrwxrwx    1 root     root            15 Aug 10  1970 qupfw_a -> /dev/block/sde4
lrwxrwxrwx    1 root     root            15 Aug 10  1970 qupfw_b -> /dev/block/sde5
lrwxrwxrwx    1 root     root            16 Aug 10  1970 recovery -> /dev/block/sda19
lrwxrwxrwx    1 root     root            15 Aug 10  1970 sec -> /dev/block/sde1
lrwxrwxrwx    1 root     root            16 Aug 10  1970 splash -> /dev/block/sde42
lrwxrwxrwx    1 root     root            16 Aug 10  1970 spunvm -> /dev/block/sde39
lrwxrwxrwx    1 root     root            15 Aug 10  1970 ssd -> /dev/block/sda2
lrwxrwxrwx    1 root     root            16 Aug 10  1970 sti -> /dev/block/sde30
lrwxrwxrwx    1 root     root            16 Aug 10  1970 storsec_a -> /dev/block/sde10
lrwxrwxrwx    1 root     root            16 Aug 10  1970 storsec_b -> /dev/block/sde11
lrwxrwxrwx    1 root     root            15 Aug 10  1970 switch -> /dev/block/sda1
lrwxrwxrwx    1 root     root            16 Aug 10  1970 system -> /dev/block/sda21
lrwxrwxrwx    1 root     root            16 Aug 10  1970 toolsfv -> /dev/block/sde31
lrwxrwxrwx    1 root     root            16 Aug 10  1970 tz_a -> /dev/block/sde34
lrwxrwxrwx    1 root     root            16 Aug 10  1970 tz_b -> /dev/block/sde35
lrwxrwxrwx    1 root     root            16 Aug 10  1970 userdata -> /dev/block/sda22
lrwxrwxrwx    1 root     root            15 Aug 10  1970 vbmeta -> /dev/block/sde8
lrwxrwxrwx    1 root     root            16 Aug 10  1970 vendor -> /dev/block/sde47
lrwxrwxrwx    1 root     root            15 Aug 10  1970 xbl_a -> /dev/block/sdb2
lrwxrwxrwx    1 root     root            15 Aug 10  1970 xbl_b -> /dev/block/sdc2
lrwxrwxrwx    1 root     root            15 Aug 10  1970 xbl_config_a -> /dev/block/sdb1
lrwxrwxrwx    1 root     root            15 Aug 10  1970 xbl_config_b -> /dev/block/sdc1

通过这个指令可以看到手机所有分区对应的分区浩。例如

lrwxrwxrwx 1 root root 16 Aug 10 1970 boot -> /dev/block/sde45

boot分区就是在sde45序号里

备份分区

那么知道了分区对应的分区号。如何提取这个boot分区呢

指令;dd if=/dev/block/sde45 of=/sdcard/boot.img

然后打开手机存储就有这个分区

按此方法。可以提取出当前机型所有的分区。在这个界面。例如我们怎么简单方便备份手机最重要的基带分区呢。在usf字库芯片的机型里,基带辅助分区基本全部都在sdf分区里。查看分区xml就可以很清楚的看到

<?xml version="1.0" ?>
<data>
  <!--NOTE: This is an ** Autogenerated file **-->
  <!--NOTE: Sector size is 4096bytes-->
  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="fsc" num_partition_sectors="64" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="256.0" sparse="false" start_byte_hex="0x6000" start_sector="6"/>
  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="bk51" num_partition_sectors="186" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="744.0" sparse="false" start_byte_hex="0x46000" start_sector="70"/>
  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="bk52" num_partition_sectors="256" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="1024.0" sparse="false" start_byte_hex="0x100000" start_sector="256"/>
  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="imagefv.elf" label="ImageFv" num_partition_sectors="512" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="2048.0" sparse="false" start_byte_hex="0x200000" start_sector="512"/>
  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="bk53" num_partition_sectors="1024" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="4096.0" sparse="false" start_byte_hex="0x400000" start_sector="1024"/>
  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="modemst1" num_partition_sectors="2048" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="8192.0" sparse="false" start_byte_hex="0x800000" start_sector="2048"/>
  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="modemst2" num_partition_sectors="2048" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="8192.0" sparse="false" start_byte_hex="0x1000000" start_sector="4096"/>
  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="last_parti" num_partition_sectors="0" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="0" sparse="false" start_byte_hex="0x1800000" start_sector="6144"/>
  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="gpt_main5.bin" label="PrimaryGPT" num_partition_sectors="6" partofsingleimage="true" physical_partition_number="5" readbackverify="false" size_in_KB="24.0" sparse="false" start_byte_hex="0x0" start_sector="0"/>
  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="gpt_backup5.bin" label="BackupGPT" num_partition_sectors="5" partofsingleimage="true" physical_partition_number="5" readbackverify="false" size_in_KB="20.0" sparse="false" start_byte_hex="(4096*NUM_DISK_SECTORS)-20480." start_sector="NUM_DISK_SECTORS-5."/>
</data>

如果单一的进行备份比较麻烦。我们可以把这个sdf分区全部备份下来。指令:

dd if=/dev/block/sdf of=/sdcard/sdf.bin

按此方法你也可以备份所有的总分区 sda sdb sdc sdd sde ,

恢复分区

怎么备份的就可以怎么恢复。无非把指令调换了下。例如刚才备份的boot分区和sdf分区

dd if=/sdcard/boot.img of=/dev/block/sde45

dd if=/sdcard/sdf.bin of=/dev/block/sdf

dd if与of指令含义

dd命令是一个特殊的命令,它使用底层比特复制的方式从源头将数据复制并转换至一个指定的目的地。在Android破解中,在数据和结果必须确切时,dd命令通常被用于将一个映像文件写入内存或文件,从而使其可以在诸如操作系统引导文件等重要过程中被找到和使用。

dd命令使用如下语法:

dd if=<源文件> of=<目标文件>

if(输入文件)参数告诉命令在哪里找源文件。

of(输出文件)告诉命令将目标文件写到哪里。

在使用这两个参数时应特别小心:将if和of这两个参数顺序颠倒其结果将会是毁灭性的。

更多提取方法

例如使用cat指令也可以提取

cat /dev/block/sde45 > /sdcard/boot2.img

可能遇到的问题

这边提到一个问题,有时候提取后当时查看提取到的分区大小为0.不要着急。这个是没有同步的原因。重新联机下twrp即可显示实际分区大小。有时候需要重启twrp。

查看分区大小

通过cat /proc/partitions可以查看分区大小。例如我们刚才备份的boot分区

当然以上描述的步骤只是纯手动进行备份分区。还可以借助第三方成品工具进行备份和回复。我前面很多博文有过解析。例如在开机界面使用工具箱备份或者9008端口和mtk的BROM模式里进行备份分区。

感兴趣的可以参考:玩机搞机---安卓机型mtk和高通芯片查看分区 导出分区 备份分区的一些工具分析

相关推荐
数据猎手小k15 分钟前
AndroidLab:一个系统化的Android代理框架,包含操作环境和可复现的基准测试,支持大型语言模型和多模态模型。
android·人工智能·机器学习·语言模型
你的小101 小时前
JavaWeb项目-----博客系统
android
风和先行1 小时前
adb 命令查看设备存储占用情况
android·adb
AaVictory.2 小时前
Android 开发 Java中 list实现 按照时间格式 yyyy-MM-dd HH:mm 顺序
android·java·list
似霰3 小时前
安卓智能指针sp、wp、RefBase浅析
android·c++·binder
大风起兮云飞扬丶3 小时前
Android——网络请求
android
干一行,爱一行3 小时前
android camera data -> surface 显示
android
断墨先生3 小时前
uniapp—android原生插件开发(3Android真机调试)
android·uni-app
无极程序员5 小时前
PHP常量
android·ide·android studio
萌面小侠Plus6 小时前
Android笔记(三十三):封装设备性能级别判断工具——低端机还是高端机
android·性能优化·kotlin·工具类·低端机