tosiek

Backup dowolnej partycji Qualcomm i nie tylko (IMEI, BT MAC, WiFi MAC)

Recommended Posts

Opis sposobu na zrobienie backupu dowolnej partycji. Można zrobić też zrzut całej pamięci telefonu.

Po co?

Kopia zapasowa pamięci zawierającej wszelkie informacje potrzebne dla działania modułów radiowych (GSM, WiFi, BT etc.) umożliwi nam naprawienie zepsutego telefonu (np. po wgraniu złego softu lub po innych modyfikacjach typu flashowanie niskopoziomowe - ratowanie)

Na MTK wystarczy zrobić backup nvram z procesorami Qualconm już tych partycji np. z IMEI jest wqięcej.

Można również zrobić kopię systemu a później przywrócić poprzez fastboot. Przydatne do ratowania systemu.

 

MTK a Qualcomm

Dla procesorów MTK mamy narzędzie o nazwie MTK Droid Tools (MTK Droid Root & Tools v2.5.3):

http://forum.xda-developers.com/showthread.php?t=2160490

Nic jednak nie stoi na przeszkodzie żeby zrobić backup partycji NVRAM na MTK sposobem z tego tematu.

 

MTK przechowuje IMEI w pamięci NVRAM.

Qualcomm najprawdopodobniej na kilku partycjach: MODEMST1, MODEMST2 oraz FSC

Potrzebne narzędzia:

Lista partycji - prosty sposób
  • Włącz w telefonie tryb debugowania USB
  • Podłącz do komputera i zainstaluj sterowniki ADB
  • Zainstaluj pakiet minimal ADB
  • Przejdź w konsoli CMD do ścieżki gdzie znajduje się program adb.exe np.:

    cd /d "C:\Program Files (x86)\Minimal ADB and Fastboot"

  • Wykonaj poniższe polecenia:

    adb devices
    adb shell
    ---
    w powłoce telefonu
    ---
    su
    mount
    
  • Odczytujemy linijkę dla partycji /system:

     /dev/block/bootdevice/by-name/system /system ext4 rw,seclabel,relatime,discard,data=ordered 0 0

    Interesuje nas ciąg do by-name

  • Wykonaj polecenie zmieniajac odpowiednio ciąg /dev/block/bootdevice/by-name:

    ls -la /dev/block/bootdevice/by-name

    jeśli chcemy zapisać to w pliku na teleonie:

    ls -la /dev/block/bootdevice/by-name >> /sdcard/ls.txt

    I odczytaj plik ls.txt w telefonie.

    Lub można od razu zapisać na komputerze poleceniem (wychodzimy z shella telefonu CTR+C lub CTRL+D):

    adb shell ls -la /dev/block/bootdevice/by-name >> ls.txt

  • Odczytaj ścieżkę partycji:

    lrwxrwxrwx root     root              1970-01-06 03:34 system -> /dev/block/mmcblk0p26

    np. dla system mamy symlinka do /dev/block/mmcblk0p26. Więc jeśli chcemy zrobić kopię partycji system to robimy kopię /dev/block/mmcblk0p26.

Tworzenie kopii zapasowej

Pokażę na przykładzie listy wyżej. Charakterystyczny rozmiar 1573kB.

  • Odczytujemy numer partycji jeśli korzystamy z parted lub innych progamów:

    12      7357kB  8930kB  1573kB               modemst1

    13      8930kB  10.5MB  1573kB               modemst2

    23      201MB   203MB   1573kB               fsg

  • Lub odczytujemy ścieżkę podobną do z polecenia ls:

    /dev/block/mmcblk0p26

  • UWAGA: błąd w poleceniu dd może mieć nieodwracalne skutki!

    "if" (ang. input file - plik wejściowy) - czyli nasza partycja

    "of" (ang. output file - plik wyjściowy) - kopia na karcie pamięci

  • Jeśli partycja miała numer 12 to robimy kopię mmcblk0p12 (nazwa: modemst1) do pamięci wewnętrznej.

    Tak samo postępujemy z kolejnymi:

    dd if=/dev/block/mmcblk0p12 of=/sdcard/mmcblk0p12_modemst1
    dd if=/dev/block/mmcblk0p13 of=/sdcard/mmcblk0p13_modemst2
    dd if=/dev/block/mmcblk0p23 of=/sdcard/mmcblk0p23_fsg
    
  • Gotowe. Możesz teraz przenieść te 3 pliki z pamięci telefonu w bezpieczne miejsce.

Backup tablicy partycji

Wyżej mamy opis zrobienia kopii zawartości partycji. Tutaj postaram się umieścić opis jak zrobić kopię tablicy partycji, żeby można ją było odtworzyć.

Pierwszy sposób: ręczny odczyt sektorów przez dd:

http://forum.xda-developers.com/showpost.php?p=33359023&postcount=5

Drugi sposób to kopia za pomocą gdisk na andorida: http://www.mediafire.com/download/2kc5jnmj5dp74y5/gptfdisk.zip

Problemy

Błędy Permission denied będą sie wyświetlać jeśli:

  • nie wykonujemy poleceń jako root
  • nie zamontowaliśmy partycji systemowej do zapisu (adb remount lub adb shell "su" "" "mount -o remount,rw /system")
  • nie mamy zrootowanego telefonu
  • błąd adb push

    adb push parted /system/bin/parted
    
    Można to ominąć robiąc wszystko jako root. Można wgrać ręcznie plik parted na pamięć telefonu, zamontować systemową partycję do zapisu i nadać chmod.

    adb push parted /sdcard/parted
    (w razie błędu wgraj ręcznie plik parted na pamięć telefonu)
    
    adb shell
    --
    w shellu telefonu
    --
    su
    mount -o remount,rw /system
    cp /sdcard/parted /system/bin
    chmod 0755 /system/bin/parted
    
Opis partycji

Źródło opisów: http://forum.xda-developers.com/showthread.php?t=1959445

  • GPT - GUID Partition Table
  • sbl1 - secondary bootloader, sbl1bak - kopia sbl1
  • aboot - AP Bootloader, abootbak - kopia aboot
  • rpm - Resource and Power Manager, rpmbak - kopia rpm
  • tz- trust zone, tzbak - kopia tz
  • hyp - ??????????????
  • pad
  • modemst1 - IMGEFS1 (NV Data)
  • modemst2 -   IMGEFS2 (NV Data)
  • misc

    This partition contains miscellaneous system settings in form of on/off switches. These settings may include CID (Carrier or Region ID), USB configuration and certain hardware settings etc. This is an important partition and if it is corrupt or missing, several of the device’s features will will not function normally.

  • fsc???????????????
  • SSD - Secure Software Download
  • splash - ?????????
  • keystore ????????
  • config ??????????
  • oem ??????????
  • DDR ??????
  • modem - CP binary
  • FSG - Golden Copy
  • sec ????????
  • boot - Kernel
  • system - Android /system
  • persist - Persist

    Info: http://forum.xda-developers.com/google-nexus-5/general/guide-to-fix-persist-partition-t2821576

    Persist is partition mounted at /persist. It has ext4 file system. DRM releated files, sensor reg file (sns.reg), wifi and bluetooth mac addresses are stored there.

    If you experience the following issues:

    • Can't access to internal storage.
    • No signal even after formating cache and fastboot flash cache.img
    • IMEI number is lost even after formating cache and fastboot flash cache.img
    • You get "e: cannot mount /persist" in recovery
    then your persist partition have to be fixed

  • cache - Cache. Może zawierać skrypty uruchamiane przy pierwszym włączeniu telefonu
  • recovery -

    The recovery partition can be considered as an alternative boot partition that lets you boot the device into a recovery console for performing advanced recovery and maintenance operations on it. To learn more about this partition and its contents, see the ‘About Android Recovery’ section of our guide to ClockworkMod recovery.

  • userdata lub data- Najczęściej opisana jako pamięć telefonu.

    Also called userdata, the data partition contains the user’s data – this is where your contacts, messages, settings and apps that you have installed go. Wiping this partition essentially performs a factory reset on your device, restoring it to the way it was when you first booted it, or the way it was after the last official or custom ROM installation. When you perform a wipe data/factory reset from recovery, it is this partition that you are wiping.

  • Na przykładzie Xiaomi RedMi Note LTE Dual SIM

    Lista plików znajdujących się w obrazach FastBoot od xiaomi:(czyli tych do postawienia systemu)

    fastboot %* flash tz %~dp0images\tz.mbn || @echo "Flash tz error" && exit /B 1
    fastboot %* flash sbl1 %~dp0images\sbl1.mbn || @echo "Flash sbl1 error" && exit /B 1
    fastboot %* flash rpm %~dp0images\rpm.mbn || @echo "Flash rpm error" && exit /B 1
    fastboot %* flash aboot %~dp0images\emmc_appsboot.mbn || @echo "Flash emmc_appsboot error" && exit /B 1
    fastboot %* flash hyp %~dp0images\hyp.mbn || @echo "Flash hyp error" && exit /B 1
    fastboot %* flash tzbak %~dp0images\tz.mbn || @echo "Flash tzbak error" && exit /B 1
    fastboot %* flash sbl1bak %~dp0images\sbl1.mbn || @echo "Flash sbl1bak error" && exit /B 1
    fastboot %* flash rpmbak %~dp0images\rpm.mbn || @echo "Flash uboot rpmbak" && exit /B 1
    fastboot %* flash abootbak %~dp0images\emmc_appsboot.mbn || @echo "Flash abootbak error" && exit /B 1
    fastboot %* flash hypbak %~dp0images\hyp.mbn || @echo "Flash hypbak error" && exit /B 1
    fastboot %* flash modem %~dp0images\NON-HLOS.bin || @echo "Flash modem error" && exit /B 1
    fastboot %* flash system %~dp0images\system.img || @echo "Flash system error" && exit /B 1
    fastboot %* flash cache %~dp0images\cache.img || @echo "Flash cache error" && exit /B 1
    fastboot %* flash userdata %~dp0images\userdata.img || @echo "Flash userdata error" && exit /B 1
    fastboot %* flash recovery %~dp0images\recovery.img || @echo "Flash recovery error" && exit /B 1
    fastboot %* flash boot %~dp0images\boot.img || @echo "Flash boot error" && exit /B 1
    fastboot %* flash sec %~dp0images\sec.dat || @echo "Flash sec error" && exit /B 1
    fastboot %* flash splash %~dp0images\splash.img || @echo "Flash splash error" && exit /B 1
    
    Lista partycji, których warto zrobić backup, których nie ma a obrazach fastboot

    przykład Xiaomi RedMi Note LTE Dual SIM

    11      6309kB  7357kB  1049kB               pad
    12      7357kB  8930kB  1573kB               modemst1
    13      8930kB  10.5MB  1573kB               modemst2
    14      10.5MB  11.6MB  1049kB               misc
    15      11.6MB  11.6MB  1024B                fsc
    16      11.6MB  11.6MB  8192B                ssd
    18      22.0MB  22.6MB  524kB                keystore
    20      22.6MB  89.7MB  67.1MB               oem
    21      134MB   134MB   32.8kB               DDR
    23      201MB   203MB   1573kB               fsg
    27      1847MB  1881MB  33.6MB  ext4         persist
    
Źródła podstawowych opisów:

http://www.addictivetips.com/mobile/android-partitions-explained-boot-system-recovery-data-cache-misc/

Dopóki nie znajdę jakiegoś schematu to niestety nie uzupełnię opisów.

 

Źródła:

Lista partycji - sposób zaawansowany

Zanim zaczniemy tworzyć obrazy partycji musimy dowiedzieć się które urządzenie blokowe to te właściwe.

  • Włącz w telefonie tryb debugowania USB
  • Podłącz do komputera i zainstaluj sterowniki ADB
  • Zainstaluj pakiet minimal ADB
  • Przejdź w konsoli CMD do ścieżki gdzie znajduje się program adb.exe np.:

    cd /d "C:\Program Files (x86)\Minimal ADB and Fastboot"
  • Wypakuj plik parted do folderu z adb.exe.
  • Wykonaj po kolei poniższe polecenia:

    adb devices
    adb root
    adb remount
    adb push parted /system/bin/parted
    adb shell cat /proc/partitions >> partitions.txt
    adb shell mount >> mount.txt
    adb shell
    -------------
    teraz pracujemy w konsoli telefonu
    -------------
    su
    chmod 0755 /system/bin/parted
    parted /dev/block/mmcblk0
    print
    exit
    CTRL+C
    CTR+D
    
  • Powinna wyświetlić nam się lista partycji z etykietami (przyjaznymi nazwami):

    [email protected]:/ # parted /dev/block/mmcblk0

    parted /dev/block/mmcblk0

    GNU Parted 1.8.8.1.179-aef3

    Using /dev/block/mmcblk0

    Welcome to GNU Parted! Type 'help' to view a list of commands.

    (parted) print

    print

    Model: MMC QN1SMB (sd/mmc)

    Disk /dev/block/mmcblk0: 7818MB

    Sector size (logical/physical): 512B/512B

    Partition Table: gpt

    Number Start End Size File system Name Flags

    1 17.4kB 542kB 524kB sbl1

    2 542kB 1066kB 524kB sbl1bak

    3 1066kB 2115kB 1049kB aboot

    4 2115kB 3163kB 1049kB abootbak

    5 3163kB 3687kB 524kB rpm

    6 3687kB 4212kB 524kB rpmbak

    7 4212kB 4736kB 524kB tz

    8 4736kB 5260kB 524kB tzbak

    9 5260kB 5785kB 524kB hyp

    10 5785kB 6309kB 524kB hypbak

    11 6309kB 7357kB 1049kB pad

    12 7357kB 8930kB 1573kB modemst1

    13 8930kB 10.5MB 1573kB modemst2

    14 10.5MB 11.6MB 1049kB misc

    15 11.6MB 11.6MB 1024B fsc

    16 11.6MB 11.6MB 8192B ssd

    17 11.6MB 22.0MB 10.5MB splash

    18 22.0MB 22.6MB 524kB keystore

    19 22.6MB 22.6MB 32.8kB config

    20 22.6MB 89.7MB 67.1MB oem

    21 134MB 134MB 32.8kB DDR

    22 134MB 201MB 67.1MB fat16 modem

    23 201MB 203MB 1573kB fsg

    24 203MB 203MB 16.4kB sec

    25 203MB 237MB 33.6MB boot

    26 237MB 1847MB 1611MB ext4 system

    27 1847MB 1881MB 33.6MB ext4 persist

    28 1881MB 2283MB 403MB ext4 cache

    29 2283MB 2317MB 33.6MB recovery

    30 2317MB 7818MB 5501MB ext4 userdata

  • Zapisujemy sobie numery interesujących nas partycji z pierwszej kolumny. (modemst1, modemst2, fsg). Będą różne dla różnych modeli.
  • W plikach partitions.txt i mount.txt mamy informacje o dokładnych pozycjach poszczególnych partycji (sektor początkowy i końcowy) oraz o zamontowanych partycjach.
Edited by tosiek

Share this post


Link to post
Share on other sites

Przykładowy kod backupu wszystkich dodatkowych partycji dla Redmi Note 4G Dual-SIM
Xiaomi Note LTE 4G HM NOTE 1S CU, Adnroid 4.4.4 KTU84P, MIUI 5.7.2 (rozwojowa), Miui Polska gucci

adb shell
su
dd if=/dev/block/mmcblk0p11 of=/sdcard/mmcblk0p11_pad
dd if=/dev/block/mmcblk0p12 of=/sdcard/mmcblk0p12_modemst1
dd if=/dev/block/mmcblk0p13 of=/sdcard/mmcblk0p13_modemst2
dd if=/dev/block/mmcblk0p14 of=/sdcard/mmcblk0p14_misc
dd if=/dev/block/mmcblk0p15 of=/sdcard/mmcblk0p15_fsc
dd if=/dev/block/mmcblk0p16 of=/sdcard/mmcblk0p16_ssd
dd if=/dev/block/mmcblk0p18 of=/sdcard/mmcblk0p18_keystore
dd if=/dev/block/mmcblk0p20 of=/sdcard/mmcblk0p20_oem
dd if=/dev/block/mmcblk0p21 of=/sdcard/mmcblk0p21_DDR
dd if=/dev/block/mmcblk0p23 of=/sdcard/mmcblk0p23_fsg
dd if=/dev/block/mmcblk0p27 of=/sdcard/mmcblk0p27_persist
exit

Reszta obrazów znajduje się w plikach do flashowania przez fastboot: http://en.miui.com/a-234.html

Kopie będą na pamięci telefonu. Ścieżka do zewnętrznej karty to /mnt/sdcard .Brakuje jedynie kopii tablicy partycji.

 

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.