Backup e ripristino

Comandi base da root e strumenti da recovery mode

Dati e configurazioni

I dati dell'utente vengono salvati nella cartella / data / local e più precisamente sono divisi come segue:

  1. applicazioni installate ( cartella webapps ) e relative autorizzazioni ( file permissions.sqlite );

  2. configurazioni di sistema ( cartella config );

  3. dati personali, ad esempio contatti, messaggi di testo, supporti salvati nella memoria interna ( cartella di storage e relative sottocartelle).

È importante conoscere esattamente la posizione dei nostri dati, in modo da non dover scaricare diversi gigabyte di dati che occuperebbero solo memoria sulla scheda SD o sul computer e ottenere l'accesso root tramite le nostre applicazioni è sufficiente per ottenere le autorizzazioni necessarie sulla nostra partizione dati.

Backup

Per ottenere un backup completo di tutti questi dati e configurazioni basta attivare il debug , avviare un accesso root temporaneo e copiare / incollare questo comando:

mkdir local && cd ./local && adb pull /data/local/webapps && adb pull /data/local/permissions.sqlite && adb pull /data/local/storage && adb pull /data/local/config && cd

Tutto verrà salvato in una cartella chiamata " local ", la durata del processo dipenderà dalla dimensione del contenuto che stiamo scaricando.

Ripristino

Da root puoi facilmente inviare tutto usando il comando push:

adb push local /data/

adb reboot

dopo il riavvio tutte le vecchie app, i dati e le configurazioni verranno ripristinati nel posto giusto.

Conosci le partizioni su KaiOS e Android

Lo scopo di questa guida è cercare di orientarti verso la conoscenza delle partizioni Android e KaiOS. Se non in modo approfondito, volevo renderti consapevole di ciò che toccherai se un giorno deciderai di manipolarli facendo lampeggiare il tuo dispositivo. Inizieremo scoprendo prima la loro posizione, il loro nome e infine la loro funzione, prima di procedere con il backup e il flash. Utilizzando il comando ls /dev/block/bootdevice/by-name puoi elencare le partizioni "per nome".

Il comando cat può essere usato per visualizzare file di testo, come / proc / mounts :

cat /proc/mounts

In questo modo abbiamo un elenco di tutte le partizioni con più informazioni, divise in sei colonne:

  1. Il dispositivo che è montato;

  2. Il punto di mount;

  3. Il tipo di file system;

  4. L' opzione munt , può essere di sola lettura (ro) o read-write (rw) ;

  5. Il valore di dump progettato per corrispondere al formato utilizzato in / etc / mtab;

  6. Il valore dell'ordine fsck in / etc / mtab.

Esempio :

rootfs / rootfs ro,seclabel,relatime 0 0

rootfs (dispositivo), / (punto di montaggio), rootfs (tipo di file system), ro (opzione di montaggio), 0 (dump) e 0 (ordine fsck).

Elenco delle partizioni su KaiOS e Android

PARTIZIONI PRINCIPALI

  • boot : questa è la partizione che consente l'avvio del telefono (da cui il nome). Include il kernel e il ramdisk. Senza questa partizione, il dispositivo semplicemente non sarà in grado di avviarsi. L'eliminazione di questa partizione dal ripristino deve essere eseguita solo se assolutamente necessario e una volta eseguita, il dispositivo NON deve essere riavviato prima di installarne una nuova, operazione che può essere eseguita installando una ROM che include una partizione /boot.

  • system : questa partizione contiene sostanzialmente l'intero sistema operativo, tranne il kernel e il ramdisk. Ciò include l'interfaccia utente di KaiOS e tutte le applicazioni di sistema preinstallate sul dispositivo. Se si cancella questa partizione, KaiOS verrà rimosso dal dispositivo senza renderlo non avviabile e sarà comunque possibile mettere il telefono in recovery mode o bootloader per installare una nuova ROM.

  • ripristino : può essere considerato come una partizione di avvio alternativa che consente di avviare il dispositivo in una console di ripristino per eseguire operazioni avanzate di ripristino e manutenzione su di esso. (maggiori dettagli nella pagina sui permessi di root).

  • data : anche chiamato " userdata ", la contiene i dati dell'utente (cioè i tuoi contatti salvati sul telefono, messaggi, impostazioni e app che hai installato). La pulizia di questa partizione esegue essenzialmente un ripristino delle impostazioni di fabbrica sul tuo dispositivo (dall'app Impostazioni o in modalità di ripristino ), ripristinandolo com'era al primo avvio o com'era dopo l'ultima installazione ufficiale o personalizzata della ROM. Quando si esegue un "Wipe data / Factory reset" da Recovery, è questa partizione che si sta cancellando.

  • cache : questa è la partizione in cui KaiOS archivia i dati di accesso frequente e i componenti dell'app. La pulizia della cache non influisce sui dati personali, ma semplicemente elimina i dati esistenti lì, che vengono ricostruiti automaticamente mentre si continua a utilizzare il dispositivo.

  • misc : questa partizione contiene impostazioni di sistema " varie " sotto forma di switch on / off. Queste impostazioni possono includere CID (ID operatore o regione), configurazione USB e alcune impostazioni hardware. Questa è una partizione importante e se è corrotta o mancante, molte delle funzionalità del dispositivo non funzioneranno normalmente.

  • sdcard : questa non è una partizione nella memoria interna del dispositivo, ma piuttosto la scheda SD. In termini di utilizzo, questo è il tuo spazio di archiviazione da utilizzare come meglio credi, per archiviare supporti, documenti, ROM ecc. Su di esso. La pulizia è perfettamente sicura fintanto che si esegue il backup di tutti i dati necessari da esso, sul computer prima. Sebbene diverse app installate dall'utente salvino i loro dati e le impostazioni sulla scheda SD e cancellare questa partizione ti farà perdere tutti quei dati.

PARTIZIONI UNIVOCHE

  • DDR : questa partizione è correlata alla cache di memoria RAM.

  • fsc : invia i lavori di compilazione Scala a un demone di compilation (linux).

  • fsg : contenitore crittografato in formato proprietario.

  • modemst1 e modemst2 : queste partizioni fungono da cache per modem e altre partizioni correlate a dati sensibili. Deve essere cancellato quando si esegue il flashing della partizione modem.

  • pad : ND

ALTRI DUMP

  • aboot : "Application Bootloader" avvia il sistema o il ripristino, abootbak lo ripristina.

  • config : contiene la topologia di replica e altri dati di configurazione.

  • devinfo : informazioni specifiche sui dispositivi a disco in uscita standard.

  • keystore : fornisce operazioni di firma e verifica digitali.

  • modem : contiene i moduli radio necessari senza i quali non puoi connettersi alla rete sul dispositivo.

  • OEM : dove vengono conservate le personalizzazioni OEM.

  • persist : è responsabile di WiFi (indirizzo MAC), Bluetooth, sensori di prossimità del dispositivo e altre cose.

  • rpm : Ranish Partition Manager, rpmbak lo ripristina.

  • sdl1 : BootLoader secondario, avvia boot (quindi il telefono non funzionerà senza), sbl1bak lo ripristina.

  • sec : ND

  • simlock : riguarda la SIM di un operatore

  • splash : contiene la schermata di avvio del dispositivo

  • ssd : unità a stato solido

  • traceability : ND

  • tunning : contiene IMEI e altri dati sensibili

  • tz : database fuso orario, tzbak lo ripristina.

ND: non definito

Ottieni tutti i dump delle tue partizioni

Fortunatamente, ora che abbiamo applicazioni come Wallace e ADBroot possiamo estrarre facilmente tutto semplicemente usando un comando dal PC.

Backup mediante "adb pull"

Utilizzando il comando:

adb pull /dev/block/bootdevice/by-name

verrà salvata una cartella denominata "by-name" contenente tutte le immagini binarie dei nostri dump. In questo modo sappiamo di più sulla natura delle nostre partizioni (immagini, binari, eseguibili o archivi).

Possiamo anche impostare il comando in questo modo, per estrarre solo una delle nostre partizioni:

  • adb pull /dev/block/bootdevice/by-name/PARTITION

Per esempio

  • adb pull /dev/block/bootdevice/by-name/system

  • adb pull /dev/block/bootdevice/by-name/recovery

  • adb pull /dev/block/bootdevice/by-name/userdata

e così via...

  • Usando un comando come questo:

adb pull /dev/block/mmcblk0 mmcblk0.img

verrà scaricato tutto come un file immagine del disco, perché mmcblk0 è il blocco principale ( mmcblk0.img ). Montandolo possiamo capire meglio come viene eseguita la tabella delle partizioni. Da questo comando ho iniziato a pensare di usare " pull " con i soliti percorsi che leggiamo in strumenti come dumpall.zip (una soluzione portatile che funziona senza PC).

Backup utilizzando il comando "dd"

Per creare un'immagine di backup della partizione sulla scheda SD, eseguire semplicemente dalla shell di root:

dd if=/dev/block/bootdevice/by-name/PARTITION of=/sdcard/PARTITION.img bs=2048

Dove PARTITION è il nome della partizione che si desidera salvare. Ad esempio, se vogliamo fare un backup del sistema è sufficiente fare:

dd if=/dev/block/bootdevice/by-name/system of=/sdcard/system.img bs=2048

  • per la partizione dati:

dd if=/dev/block/bootdevice/by-name/userdata of=/sdcard/userdata.img bs=2048

  • per il Recovery Mode è:

dd if=/dev/block/bootdevice/by-name/recovery of=/sdcard/recovery.img bs=2048

  • per il firmware (boot) è:

dd if=/dev/block/bootdevice/by-name/boot of=/sdcard/boot.img bs=2048

e così via. Questo è sicuro e puoi farlo dal normale avvio.

Ripristina usando "dd" (leggi attentamente)

NOTA: Nel caso in cui si desideri sostituire il "ripristino", è possibile farlo dal normale avvio, ma nel caso si desideri sostituire il "sistema", farlo da un ripristino personalizzato !

Ogni altro lampeggiamento delle partizioni è indifferente, ma l'importante è avere la possibilità di accedere ad almeno una modalità di lavoro, da cui possiamo eseguire operazioni con privilegi di root.

L'uso di un ripristino personalizzato è importante per velocizzare le operazioni di backup e ripristino, dove e quando vuoi, quindi prima di leggere i nostri strumenti devi sapere:

  1. come ottenere una copia del recupero;

  2. come effettuare un ripristino personalizzato per il tuo dispositivo (perché possono essere diversi);

  3. come sostituirlo temporaneamente;

  4. soprattutto devi sapere perché è necessario sostituirlo solo temporaneamente!

LEGGI LA PARTE DEDICATA ALLE CUSTOM RECOVERY, NELLA PAGINA DEI PERMESSI DI ROOT

Posiziona sempre il file immagine da far lampeggiare all'interno della scheda SD (negli esempi seguenti sarà sempre nella cartella principale), che è in formato .img o .bin (se hai usato il comando "pull" puoi cambiare l'estensione della discarica necessaria come preferisci).

  • Per eseguire il flashing del nuovo ripristino (ad esempio recovery.img), dalla modalità normale eseguire il comando:

dd if=/sdcard/recovery.img of=/dev/block/bootdevice/by-name/recovery

  • Per eseguire il flashing di una partizione di sistema con un file system.img, dal Recovey Mode eseguire il comando:

dd if=/sdcard/system.img of=/dev/block/bootdevice/by-name/system

NOTA: il flashing di qualsiasi partizione, in particolare "aboot" e "boot" è sempre più sicuro con un ripristino personalizzato. Quindi consiglio vivamente di ripristinare queste partizioni in questo modo.

Per eseguire il flashing di una partizione dati userdata.img dove vuoi:

dd if=/sdcard/userdata.img of=/dev/block/bootdevice/by-name/userdata

Lo stesso vale per altre partizioni, come "modem". Il comando sarà:

dd if=/sdcard/modem.img of=/dev/block/bootdevice/by-name/modem

e così via.

Backup da un ripristino personalizzato utilizzando "dumpall"

È importante eseguire un backup prima di eseguire il rooting / bootstrap / jailbreak del sistema, e dumpall.zip di speeduploop è un potente strumento che scarica tutte le partizioni in una cartella. Lo script interno è il seguente:

dump_all()

{


mkdir -p /sdcard/dumps


for P in $(ls /dev/block/bootdevice/by-name/);

do

echo "-- dumping $P"

busybox dd if=/dev/block/bootdevice/by-name/$P of=/sdcard/dumps/$(basename $P).img

done;

}

Puoi facilmente aprire il pacchetto e studiare gli script interni. Se si preferisce eseguire un test dalla riga di comando, potrebbe essere necessario più tempo, anche arrestando il daemon di avvio principale su KaiOS ( adb shell stop b2g). Lavorando in Recovery mode questa operazione richiede meno tempo.

Sul mio Nokia 8110 4G, ad esempio, con dumpall.zip il tempo totale è di circa 6 minuti, mentre nel mio ultimo test dalla shell del PC ci sono voluti circa 15 minuti (l'impostazione dello script per scaricare tutto direttamente sul computer dovrebbe richiedere meno tempo , ma sicuramente non inferiore a quando lavoriamo in Recovery Mode).

Video in inglese: confronto tra una Custom Recovery e una di default (sostituzione temporanea)

ERRORE NELL'AGGIORNAMENTO? ECCO COME RISOLVERE

Un errore che si verifica spesso quando non si dispone di un dispositivo KaiOS "puro" con partizioni pulite e intatte è l'aggiornamento OTA che restituisce un errore sotto forma di un registro .

Il più delle volte l'errore riguarda una partizione difettosa (come questa nell'immagine, leggendo il log si vede che il problema è /system). Questo perché il pacchetto di aggiornamento rileva l'integrità del sistema e spesso l'errore corrisponde a un rilevamento che non soddisfa le aspettative. Come è scritto sulle licenze interne:

"THIS SOFTWARE IS PROVIDED AS IS", cioè il software è rilasciato com'è.

La modifica del sistema a proprio piacimento interrompe la garanzia, pertanto l'aggiornamento ne interrompe l'azione al fine di non compromettere ulteriormente la stabilità del sistema e danni che potrebbero richiedere un risarcimento all'utente.

Come leggere gli errori (log) durante un aggiornamento mancato

Questo è il motivo per cui è così importante conservare una copia delle partizioni pulite e poiché nella struttura ci sono alcune "partizioni di backup" (che generalmente contengono la parola " bak " nel nome) diventa ancora più difficile rendere il dispositivo conforme con gli standard di integrità dettati dall'aggiornamento OTA.

Ad esempio, se la partizione danneggiata è /aboot e la sostituiamo, potrebbe esserci una differenza nel checksum quando proviamo ad aggiornare di nuovo, perché nel frattempo /abootbak sostituirà di nuovo /aboot con la sua copia rigenerata, proprio come fa /system con /recovery.

I nostri dump puliti, combinati con gli strumenti che ripristinano in modo massiccio le partizioni, sono migliorati dalla nostra capacità di leggere i registri, che sono memorizzati nella cache.

Puoi leggere i log in tre modi:

1) Dalla shell adb, come root, possiamo leggere l'elenco dei log con il seguente comando:

  • ls / cache / recovery

Di solito gli errori sono elencati nel file last_log , puoi leggerlo in questo modo:

  • more /cache/recovery/last_log

2) Dal recovery mode seleziona "view recovery logs";

3) Copia la partizione cache con questo comando:

  • dd if=/dev/block/bootdevice/by-name/cache of=/sdcard/cache.img bs=2048

Ripristina utilizzando "dd" da una Custom Recovery con ADB root attivo

NOTA: nel caso in cui si desideri sostituire il "ripristino" è possibile farlo dal normale avvio, ma nel caso si desideri sostituire il "sistema" farlo da un ripristino personalizzato. Ricorda questa regola!

Ogni altro lampeggiamento delle partizioni è indifferente, ma l'importante è avere la possibilità di accedere ad almeno una modalità di lavoro, da cui possiamo eseguire operazioni con privilegi di root .

Nell'esempio della prima foto abbiamo preso come punto di riferimento un errore relativo alla partizione di sistema. Per eseguire il flashing di una partizione di sistema con un file system.img, dalla modalità Recovey eseguire il comando:

dd if=/sdcard/system.img of=/dev/block/bootdevice/by-name/system

Se la partizione da sostituire è "boot" e il nostro file è boot.img, il comando sarà:

dd if=/sdcard/boot.img of=/dev/block/bootdevice/by-name/boot

Lo stesso vale per altri tipi di partizioni.

4bash.zip per ripristinare tutto in blocco

Avendo un recupero personalizzato disponibile che include le chiavi di test necessarie per eseguire il flashing degli archivi zip, possiamo contare su alcuni script. Innanzitutto lo strumento di PuriShnit.

  • 4bash.zip è un archivio pronto per essere installato dalla modalità di ripristino e segue le indicazioni elencate in un file esterno facilmente personalizzabile, chiamato "bash4zip.sh";

  • bash4zip.sh è un file di testo in cui deve essere compilato uno script da eseguire, quindi puoi anche crearne uno tu stesso, senza scaricare l'esempio, ma 4bash.zip riconosce solo la presenza di un file sul /sdcardpercorso che ha solo questo nome.

Questi due file funzionano insieme. Se si tenta di avviare 4bash.zip senza la presenza dello script sopra in /sdcard, l'installazione si interromperà con un messaggio di errore.

Questo strumento molto utile ti consente di personalizzare uno schema di partizioni multiple lampeggiante sul tuo dispositivo, usando i comandi citati all'inizio di questa guida:

  1. Scarica 4bash.zip e bash4zip.sh di PuriShnit

  2. Compilare lo script bash4zip.sh con il nome corretto del dump (in questo esempio l'ho chiamato FILENAME) e il percorso corretto (PARTITION):

/tmp/busybox dd if=/sdcard/FILENAME of=/dev/block/bootdevice/by-name/PARTITION

Ad esempio, se abbiamo i nostri dump (dopo aver usato dumpall.zip) in /sdcard/dumps e vogliamo ripristinare /system e /userdata dobbiamo compilare lo script in questo modo:

/tmp/busybox dd if=/sdcard/dumps/system.img of=/dev/block/bootdevice/by-name/system

/tmp/busybox dd if=/sdcard/dumps/userdata.img of=/dev/block/bootdevice/by-name/userdata

3. Dal nostro Recovery personalizzato basta selezionare:

  • "Apply update from SD card > 4bash.zip"

NOTA: in caso di errori basta selezionare " Mount /system" prima di eseguire il flashing dello zip. Il tempo di attesa dipende ovviamente dalle dimensioni dei file che si desidera installare.

Questo pacchetto può essere utilizzato non solo per eseguire il flash delle partizioni, ma per fare contemporaneamente tutto ciò che desideri sul tuo dispositivo. Basta compilare lo script bash4zip.sh a vostro piacimento, in base alle vostre esigenze.

Esempio: un kit per utenti 8110

Scarica ed estrai RESTORE-8110.7z sulla tua scheda SD, all'interno troverai i seguenti elementi:

  1. 4bash.zip , che verrà visualizzato in flash dal ripristino;

  2. bash4zip.sh , che ho già compilato per te su un firmware v12;

  3. " new-dump ", ovvero una cartella vuota in cui dovrai inserire i tuoi dump puliti.

Di seguito allego come posizionarli esattamente sulla scheda SD, insieme al file .7z da decomprimere:

NOTA, ho delle raccomandazioni urgenti da formulare prima di utilizzare questo strumento, soprattutto se hai meno esperienza:

  1. Utilizzare dump puliti solo per la versione del firmware (13 con 13, 12 con 12 e così via),

  2. non cambiare bash4zip.sh se non sai esattamente cosa stai facendo

  3. assicurarsi che le partizioni elencate siano presenti nella cartella "new-dump".

Ho compresso tutto in un archivio 7z per evitare che venga eseguito dalla modalità di ripristino, perché so che molti di voi non leggono le istruzioni;)

Video in inglese: leggere i "log", sostituzione recovery, 4bash.zip e ripristino di un Nokia 8110 4G