Заметки / Создание nandroid backup устройства в adb shell

Прежде всего, на устройстве должен быть включен режим отладки и установлены root-права. Подключаемся через USB к компьютеру.

Запускаем adb shell в режиме root, отображаем список смонтированных файловых систем.

$ adb shell
$ su
root@android:/ # cat /proc/mounts    

Наблюдаем следующее:

rootfs / rootfs rw 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600,ptmxmode=000 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0

tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0

/dev/block/nandd /system ext4 rw,nodev,noatime,user_xattr,barrier=0,data=ordered 0 0
/dev/block/nande /data ext4 rw,nosuid,nodev,noatime,user_xattr,barrier=0,journal_checksum,data=ordered,noauto_da_alloc 0 0
/dev/block/nandh /cache ext4 rw,nosuid,nodev,noatime,user_xattr,barrier=0,journal_checksum,data=ordered,noauto_da_alloc 0 0

/dev/block/vold/93:72 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/block/vold/93:72 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
tmpfs /mnt/sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0

Чтобы понять, что нам понадобится, выводим список разделов:

root@android:/ # cat /proc/partitions
major minor #blocks name
93 0 26384 nanda
93 8 16384 nandb
93 16 32768 nandc
93 24 524288 nandd
93 32 1228800 nande
93 40 16384 nandf
93 48 32768 nandg
93 56 262144 nandh
93 64 262144 nandi
93 72 5052656 nandj
179 0 7769088 mmcblk0
179 1 7768064 mmcblk0p1

Информация по разделам:

/dev/block/nanda bootloader (vfat) загрузочный раздел (U-Boot, script.bin, …)
/dev/block/nandb env (u-boot-env) параметры для U-Boot
/dev/block/nandc boot (ANDROID) kernel+initrd
/dev/block/nandd system (ext4) /system
/dev/block/nande data (ext4) /data
/dev/block/nandf misc (special) (???) сервисный раздел bootloader для перехода в recovery
/dev/block/nandg recovery (ANDROID) (???) kernel+initrd режима RECOVERY
/dev/block/nandh cache (ext4) /cache
/dev/block/nandi private (vfat) /mnt/private
/dev/block/nandj sysrecovery (ANDROID) (???) kernel+initrd режима SYSRECOVERY
/dev/block/nandk UDISK (vfat) /mnt/sdcard — раздел используемый в ANDROID как внутренняя карта памяти

Если раздел внешней карты памяти доступен только для чтения, монтируем карту памяти для чтения-записи:

$ mount -o remount,rw /mnt/extsd /mnt/extsd

Делаем резервные копии основных разделов /system /data и /cache. Пишем бэкап на внешнюю карту памяти устройства.

$ dd if=/dev/block/nandd of=/mnt/sdcard/nandd-system.img
$ dd if=/dev/block/nande of=/mnt/sdcard/nande-data.img
$ dd if=/dev/block/nandh of=/mnt/sdcard/nandh-cache.img

Если делаем полный бэкап, то пишем всё остальное:

$ dd if=/dev/block/nanda of=/mnt/extsd/nanda.img
$ dd if=/dev/block/nandb of=/mnt/extsd/nandb.img
$ dd if=/dev/block/nandc of=/mnt/extsd/nandc.img

# nandd и nande уже есть, пропускаем
$ dd if=/dev/block/nandf of=/mnt/extsd/nandf.img
$ dd if=/dev/block/nandg of=/mnt/extsd/nandg.img

# nandh уже есть, пропускаем
$ dd if=/dev/block/nandi of=/mnt/extsd/nandi.img
$ dd if=/dev/block/nandj of=/mnt/extsd/nandj.img

Для дальнейших манипуляций с копией раздела, монтируем образ:

$ mkdir test
$ sudo mount -t ext4 -o loop nandd.img test/

Процесс записи скопированного ранее раздела на устройство:

$ dd if=/mnt/sdcard/nandd-system.img of=/dev/block/nandd
$ dd if=/mnt/sdcard/nande-data.img of=/dev/block/nande
$ dd if=/mnt/sdcard/nandh-cache.img of=/dev/block/nandh

Смотрите также: