[GUIDA] - Le Rom Fastboot e il backup delle partizioni

frrrizzz

Utente registrato
Registrato
10 Gennaio 2016
Messaggi
18
Punteggio reazioni
6
Punti
3
Premessa

Non c'è niente di pericoloso nelle procedure descritte SE SAPETE COSA STATE FACENDO.

Le schermate di esempio si basano su un MI4c 32GB, ma penso che il discorso sia abbastanza generico da essere valido per tutti i terminali.

questa guida prende lo spunto da due thread:

- El Grande Partition Table Reference,
che si propone di catalogare le varie tabelle di partizione dei dispositivi android
http://forum.xda-developers.com/showthread.php?t=1959445

- Backup/Restore Partitions through ADB
http://en.miui.com/thread-31550-1-1.html


PARTE PRIMA

Analisi di una Rom Fastboot

All'interno della cartella principale che prende il nome dal modello del telefono e dalla versione di rom(nel mio caso libra_images_6.1.21_20160107.0000.12_5.1_cn), troviamo la directory images, dei files batch e un file di testo misc.txt che contiene le informazioni della rom:

misc.txt:
device=libra
build_number=6.1.21
userdata_version=20160107.0000.12

il file batch, ad es. flashall.bat:

fastboot %* getvar product 2>&1 | findstr /r /c:"^product: *MSM8992$" || echo Missmatching image and device
fastboot %* getvar product 2>&1 | findstr /r /c:"^product: *MSM8992$" || exit /B 1
fastboot %* flash pmic %~dp0images\pmic.mbn
fastboot %* flash pmicbak %~dp0images\pmic.mbn
fastboot %* flash hyp %~dp0images\hyp.mbn
fastboot %* flash hypbak %~dp0images\hyp.mbn
fastboot %* flash tz %~dp0images\tz.mbn
fastboot %* flash tzbak %~dp0images\tz.mbn
fastboot %* flash sbl1 %~dp0images\sbl1.mbn
fastboot %* flash sbl1bak %~dp0images\sbl1.mbn
fastboot %* flash sdi %~dp0images\sdi.mbn
fastboot %* flash rpm %~dp0images\rpm.mbn
fastboot %* flash rpmbak %~dp0images\rpm.mbn
fastboot %* flash aboot %~dp0images\emmc_appsboot.mbn
fastboot %* flash abootbak %~dp0images\emmc_appsboot.mbn
fastboot %* erase boot
fastboot %* erase sec
fastboot %* flash misc %~dp0images\misc.img
fastboot %* flash modem %~dp0images\NON-HLOS.bin
fastboot %* flash cache %~dp0images\cache.img
fastboot %* flash userdata %~dp0images\userdata.img
fastboot %* flash system %~dp0images\system.img
fastboot %* flash recovery %~dp0images\recovery.img
fastboot %* flash boot %~dp0images\boot.img
fastboot %* flash bluetooth %~dp0images\BTFM.bin
fastboot %* flash logo %~dp0images\logo.img
fastboot %* flash bk2 %~dp0images\bk2.img
fastboot %* flash cust %~dp0images\cust.img

fastboot %* reboot

Le prime due righe sono di controllo; se il telefono connesso non restituisce come variabile di prodotto "MSM8992", nel caso di un Mi4c, il processo si ferma.
le righe seguenti, escluse le due di wipe (erase), sono ognuna di flash di una partizione col file corrispondente della cartella images.
Esclusi aboot e modem, i nomi sono identici.
L'ultimo comando, come è evidente, esegue un reboot

Il file batch flash_all_except_data_storage.bat non ha la riga di flash userdata, mentre flash_all_lock.bat è presente solo nei nuovi telefoni ed esegue un oem lock.

La directory images

Oltre ai files di flash, contiene rawprogram0.xml che è la struttura dati:
Potete visualizzarlo tranquillamente come testo, per ogni riga, fra le altre cose, c'è il nome del file (filename), il nome della partizione (label), la dimensione in settori, in KB, il byte di partenza (esadecimale) e il settore di partenza.
La penultima riga è dedicata alla GPT, la tabella delle partizioni (da settore 0 al 33)
l'ultima riga alla GPT di backup, che è collocata in fondo, dall'ultimo settore indietro.


PARTE SECONDA

Struttura delle partizioni

Prerequisiti

  • Diritti di root sul dispositivo
  • Debug USB attivato.
  • Minimal ADB and Fastboot kit(basta cercare nel forum per il link)
  • busybox


Colleghiamo il telefono al pc
Apriamo una finestra di terminale con i diritti di amministratore e ci spostiamo nella cartella dove abbiamo installato adb e fastboot
Verifichiamo la connessione

adb devices

Se la connessione è riuscita, adb restituisce il codice del device connesso

0a adb devices.jpg

lanciamo una shell ADB

adb shell

acquisiamo i diritti di root

su

listiamo le partizioni del telefono

cat /proc/partitions

1 CatProcPart.jpg

qui vediamo l'elenco delle partizioni, ordinate per posizione, e le dimensioni di ciascuna. Osservate le dimensioni, mmcblk0 è l'insieme di tutte.

per avere anche il nome delle partizioni dobbiamo cercare in /dev/block/platform/ una sottocartella di nome "by-name"

find /dev/block/platform/ -type d -name "by-name"

che a me (a voi sarà diverso) torna questo percorso:

/dev/block/platform/f9824900.sdhci/by-name

quindi ecco il listato delle partizioni per nome:

ls -al /dev/block/platform/f9824900.sdhci/by-name

2b blockbyname.jpg

e adesso abbiamo la correlazione fra il nome e il numero di partizione.

Informazioni più dettagliate potevamo averle usando parted, se proprio volete, basta cercare e un link da cui scaricare, per es. su xdadevelopers lo trovate, ma attenzione, è uno strumento pericoloso, se non sapete come usarlo, rischiate di creare un soprammobile!

Questa è la tabella riassuntiva ottenuta con parted, integrata con le altre notizie raccolte:

3 Tabella parted.jpg


PARTE TERZA

Backup delle partizioni


nota

Non ho provato a fare un ripristino (per fortuna non mi si è presentata l'occasione). In rete non ho trovato conferme, nè smentite. Un Nandroid backup l'ho fatto, certo, ma penso che salvare anche le partizioni del mio telefono una ad una non sia dannoso. Quando e se mi troverò con un telefono brickato, avrò a disposizione anche questa chance.

per prima cosa spostiamoci nella memoria esterna (nel mio caso sdcard0)

cd /storage/sdcard0

creiamo una directory di lavoro

mkdir Tmp

e entriamoci

cd Tmp

Ora eseguiamo la copia delle partizioni, naturalmente escludendo userdata, sia per le dimensioni, sia perchè ci sono sistemi più efficienti per il backup dei dati utente.
Se abbiamo abbastanza spazio facciamo tutto in una volta, altrimenti a rate!

Una partizione alla volta eseguiamo la copia col comando "dd", rispettando la correlazione fra il numero di blocco e il nome e l'estensione del file usato da Miflash.

Per es. il backup della partizione 1 sarà:

dd if=/dev/block/mmcblk0p1 of=sbl1.mbn

Ma quello della 14:

dd if=/dev/block/mmcblk0p14 of=BTFM.bin

E quello della 36

dd if=/dev/block/mmcblk0p36 of=NON-HLOS.bin​

Già che ci siamo salviamo anche la GPT, la tabella delle partizioni.
quella principale va dal settore 0 al 33 del blocco 0, quindi è lunga 34 settori da 512 bytes ciascuno.

dd if=/dev/block/mmcblk0 of=gpt_main0.bin bs=512 count=34

Terminato il backup, usciamo dalla shell con un doppio exit

exit
exit

e copiamo i nostri files sul pc (li ritroviamo nella cartella da dove siamo partiti)

adb pull /storage/sdcard0/Tmp/

Per finire stoppiamo il server adb

adb kill-server

La cartella Tmp e il suo contenuto la possiamo cancellare col files explorer.

Nota: Se non abbiamo abbastanza spazio sul telefono, possiamo eseguire il backup su una key usb in OTG. In questo caso, però, tutti i comandi di backup li doppiamo eseguire sul telefono stesso, utilizzando una app tipo "emulatore terminale".
In questo caso il percorso della directory Tmp sarà

/storage/usbotg/Tmp


PARTE QUARTA

Diamo un'occhiata a quanto abbiamo creato


strumenti necessari (ambedue freeware):

- Active@ Disk Editor link

- Android ICS JB EXT4 imagefile unpacker link

per prima cosa, col Disk Editor, diamo un'occhiata alla gpt_main0.bin che abbiamo salvato:

Lanciamo Disk Editor (Mi raccomando, non cambiate le impostazioni, lasciatelo in sola lettura!)
e nella finestra di dialogo selezioniamo l'opzione "Open File",
carichiamo il nostro file gpt_main0.bin e si apre la finestra principale dell'Editor.

A questo punto, per avere dei dati coerenti, dobbiamo settare un template per una Guid Partition Table e offset = 1

5 disk ed templates.jpg

ed ecco che i dati diventano coerenti

6 disk_ed_part.jpg

Osservate, ci sono tutte le nostre partizioni!
Facendo un confronto con la GPT della rom fastboot, possiamo osservare che sono sostanzialmente uguali, a parte i links della userdata. (le Unique partition GUID sono proprio uniche..)

Lanciamo ora ext4unpacker e apriamo il nostro system.img (o un altro ext4)
E voila!

7 ext4unpacker.jpg

possiamo leggere files (come testo o hex) o addirittura estrarli.

Su alcuni telefoni, se l'ext4 non è di tipo sparse, è possibile usare anche Diskinternals Linux Reader, un altro strumento freware molto valido.
 

aries

Super Moderatore
Moderatore
Registrato
8 Luglio 2014
Messaggi
5.281
Punteggio reazioni
1.815
Punti
113
Terminale
Mi9T - Mi6 - Mi5 - Mi4 - Mi2S - Mi Band-1, 2.... - AmazFit Bip- AmazFit GTR
Per offrirmi una birra
Fai una donazione a questo utente
Tu che benefici hai avuto sul tuo terminale? Che rom usi?

Inviato dal mio MI 4W utilizzando Tapatalk
 

76luca

Utente attivo
Registrato
6 Ottobre 2015
Messaggi
79
Punteggio reazioni
13
Punti
8
Età
48
Complimenti per il lavoro. Davvero un'ottima guida con i giusti tecnicismi

Inviato dal mio Mi-4c utilizzando Tapatalk
 

SkiFire13

Utente molto esperto
Registrato
19 Agosto 2014
Messaggi
1.418
Punteggio reazioni
386
Punti
83
Età
54
Terminale
Redmi Note 2 | hermes
Complimenti per la guida, molto dettagliata ;)

L'unica pecca è che non spieghi cosa te ne fai dei backup e di come li puoi ripristinare.
Se a leggere è un utente avanzato nel campo linux e android capisce subito che può salvarle su pc e flasharle tramite fastboot come ripristino estremo invece che flashare una rom da en.miui.com, ma non penso che un utente normale ci arriverebbe.

~ Xiaomi Redmi Note 2 Prime ~
 
  • Like
Reazioni: angelo76

frrrizzz

Utente registrato
Registrato
10 Gennaio 2016
Messaggi
18
Punteggio reazioni
6
Punti
3
Skifire13, hai colto perfettamente il problema. Ho volutamente lasciato nel vago per due motivi:
1) Non suggerisco quello che non ho provato io stesso.
2) A maggior ragione non lo faccio a un utente poco esperto.
Ho fornito i mezzi e le conoscenze che avevo; quando e se avrò provato un ripristino, sarò più preciso.

Grazie
 
  • Like
Reazioni: alan0ford

VILLO1988

Utente attivo
Registrato
13 Aprile 2016
Messaggi
34
Punteggio reazioni
3
Punti
8
Età
35
@frrrizzz: Scusa non ho idea di come si quoti visto l'esser nuovo nel mondo xiaomi..

Stavo esattamente cercando questa guida. Ho notato che alcuni, sebbene casi rari abbiano proprio avuto questa problematica, ovvero di non riuscire ad accedere nemmeno in fastboot.
Siccome, devo flashare ed ho avuto già esperienze in tal senso; ho imparato che backuppare tutto il telefono, ti può salvare..
Oggi, perciò ho stressato il mio nuovo note2 tramite Backup\restore partitions (un app xda che si trova sul Play Store) e che fa esattamente questo..

Mi trovo con ben 16gb di files, ed il primo quesito che ho avuto è se è meglio avere i files in :
-.img
-.tar.
-.tar.gz

Vorrei capire se tramite adb s'ottiene l'identico risultato, oppure se fa un backup diverso.

Grazie per l'aiuto.
 

frrrizzz

Utente registrato
Registrato
10 Gennaio 2016
Messaggi
18
Punteggio reazioni
6
Punti
3
Tramite ADB puoi trasferire file dal PC al Telefono e viceversa coi comandi PUSH e PULL, oppure aprire una finestra di terminale, sul telefono, col comando SHELL (questo presuppone un sistema funzionante).
Un restore di una partizione lo fai con Fastboot. Di solito in caso di ripristino si usa MiFlash. Io ho posto implicitamente la domanda: "ma avendo tutte le partizioni salvate, invece di ripristinare una rom fastboot generica, posso ripristinare le mie partizioni salvate?"
Come ho già scritto nel post, e anche in una risposta precedente, non mi sono ancora trovato nella condizione di provarlo, QUINDI NON SO SE E' POSSIBILE. Intanto l'ho fatto.
Normalmente si fa un backup da recovery custom, TWRP o CWM (non ti salva però tutte le partizioni). Ho fatto anche questo.
Il piano che ho in mente per un ripristino è:
  1. funziona un recovery delle mie partizioni con miflash? Se sì basta, finito
  2. In alternativa con fastboot installo una recovery custom, tipo TWRP
  3. entro in recovery e lancio il restore del backup
  4. se serve ripristino le ulteriori partizioni salvate.

Spero di essere stato abbastanza chiaro...

Ciao
 

VILLO1988

Utente attivo
Registrato
13 Aprile 2016
Messaggi
34
Punteggio reazioni
3
Punti
8
Età
35
Tramite ADB...
Come ho già scritto nel post, e anche in una risposta precedente, non mi sono ancora trovato nella condizione di provarlo, QUINDI NON SO SE E' POSSIBILE. Intanto l'ho fatto.
Normalmente si fa un backup da recovery custom, TWRP o CWM (non ti salva però tutte le partizioni). Ho fatto anche questo.
Te lo chiedevo appunto perché siamo in condizioni similari..

funziona un recovery delle mie partizioni con miflash? Se sì basta, finito

Opzione 1, da testare..

  1. In alternativa con fastboot installo una recovery custom, tipo TWRP
  2. entro in recovery e lancio il restore del backup
  3. se serve ripristino le ulteriori partizioni salvate.

Opzione 2, ma applicabile nel caso in cui si possa accedere direttamente alla recovery.


Opzione 3 "caso raro" tipo questo (non posso accedere al fastboot, ma ho driver vcom e backup. Solitamente s'utilizza la rom stock, in cui sono presenti tutti i files..)

In tal caso dovresti riflashare qualsiasi cosa in ordine:

-Preloader
-lk
-boot
-recovery
-secro
-logo
-tee1
-tee2
-system
-cache
-userdata
-file scatter (ultimo, ma non meno importante).

Per il modo di funzionare del kernel di linux, ogni partizione difatto è un file, perciò estraibile tramite comandi da "adb" e copiabile su "sd" e da conservare con cura. Sui vecchi MTK 32bit si poteva fare tramite mtk droid tools, ma su sistemi 64bit non si può più fare..
 
Ultima modifica:

anto981

Utente registrato
Registrato
23 Giugno 2016
Messaggi
12
Punteggio reazioni
4
Punti
3
Età
42
Località
Italia
Terminale
Mi4c 3/32
io credo che gli utilizzi di un backup fatto cosi sono tanti, il piu semplice telefono ripristinato in tutto e per tutto senza doverti sbattere in ricopia dei file e installazioni twrp, si puo fare il nandroid qualcuno mi dira, ma se hai problemi a installare la twrp o va il cell in bootloop e ripristinando o se per sbaglio cancelli la memoria perdendo tutti i dati? lo colleghi in fastboot e carichi tutto da miflash recuperando i dati sfruttando i file .bat di una rom eu o it apportando le dovute modifiche al file misc per versioni e build number, piu semplice di cosi. ;)
vi faro sapere a breve comunque, spero trovando tempo e coraggio, perche ho intenzione di testare la rom windows 10 e quindi usero questi file immagine per ripristinare il telefono....... speriamo:confused:o_Oo_Oo_O
 

VILLO1988

Utente attivo
Registrato
13 Aprile 2016
Messaggi
34
Punteggio reazioni
3
Punti
8
Età
35
Io ti posso consigliare soltanto flashify che ho visto che permette di fare backup del kernel e backup della recovery

Inviato dal mio Redmi Note 2 utilizzando Tapatalk
 

anto981

Utente registrato
Registrato
23 Giugno 2016
Messaggi
12
Punteggio reazioni
4
Punti
3
Età
42
Località
Italia
Terminale
Mi4c 3/32
sai flashifi ne ho letto ma mai usato, ho sempre preferito le finestre del terminale....
saro un po vecchia scuola hi hi hi
 

VILLO1988

Utente attivo
Registrato
13 Aprile 2016
Messaggi
34
Punteggio reazioni
3
Punti
8
Età
35
sai flashifi ne ho letto ma mai usato, ho sempre preferito le finestre del terminale....
saro un po vecchia scuola hi hi hi

W la vecchia scuola...
Sembra molto comoda, anche coi suoi limiti!! In questi giorni sto agendo su quel fronte, chissà se faccio casini o faccio miracoli!! LoL

Inviato dal mio Redmi Note 2 utilizzando Tapatalk
 
  • Like
Reazioni: thaimax

anto981

Utente registrato
Registrato
23 Giugno 2016
Messaggi
12
Punteggio reazioni
4
Punti
3
Età
42
Località
Italia
Terminale
Mi4c 3/32
sto provando a copiare l'immagine userdata.img dal cellulare ma è una operazione alquanto lunga, vista la dimensione o_O
Per quanto riguarda flashify l'ho scaricato e visto, ma permette solo il flash o il backup di qualcosa di limitato, ottimo strumanto per chi smanetta in giro.. ieri ad esempio con fastboot sono riuscito a fare il backup della cartella efs direttamente da li.... ora ho il mio backup della cartella pronto ad essere flashato nel caso lo perdessi :):):):)
 

ondaflex

Utente assiduo
Registrato
16 Agosto 2015
Messaggi
165
Punteggio reazioni
8
Punti
18
Età
44
Terminale
MI4 LTE 2gb/16gb
Spero di non sbagliare thread...

C'è modo di ripristinare solo il bootloader?

Alla peggio, flashare una rom con miflash, riscrive anche il bootloader?

Perchè ho un problema con mipad 2 che impedisce di sbloccare il bootlader e credo l'unica soluzione sia nel ripristinare il BL.
In pratica succede questo http://imgur.com/a/IbeQH
IbeQH
 
Ultima modifica:

Utenti online

Statistiche del sito

Discussioni
33.428
Messaggi
314.195
Membri
34.093
Ultimo iscritto
marcogk1