Γιατί το OTA update μου βγάζει σφάλμα κατά την εγκατάσταση και πώς μπορώ να το διορθώσω χωρίς να χάσω τα δεδομένα μου;


Τώρα που η Google μας φέρνει ένα update ασφαλείας κάθε μήνα, βρήκαμε την ευκαιρία να παίξουμε λίγο μαζί τους για να δούμε τι τα επηρεάζει και πολλές φορές βγάζουν σφάλμα και δεν εγκαθίστανται στη συσκευή μας. Το πρόβλημα φυσικά εμφανίζεται σε όσους "πειράζουν" τη συσκευή τους, αλλά το έχουμε δει και σε πολλά κινέζικα που έρχονται με root από το κουτί τους. Θα δούμε λοιπόν πώς μπορούμε να εγκαταστήσουμε ένα OTA update, χωρίς να φλασάρουμε ολόκληρη τη ROM και κατ' επέκταση να χάσουμε τα δεδομένα μας.

Η εξήγηση

Σε αντίθεση με το παρελθόν όπου οι αναβαθμίσεις περιείχαν ολόκληρη τη ROM και διέγραφαν και ξαναέγραφαν το system partition, οι εταιρίες και οι δημιουργοί custom ROM έχουν περάσει πλέον στο στάδιο του "incremental update". Αυτό το είδος του update περιέχει μέσα στο πακέτο που κατεβάζουμε, μόνο τις αλλαγές που χρειάζονται για να πάμε στη νέα έκδοση και έτσι γλιτώνουμε το κατέβασμα τεράστιων πακέτων, τα οποία θα περιείχαν στην ουσία τα ίδια αρχεία που έχουμε στη συσκευή μας. Για παράδειγμα το update που ήρθε χθες στο Nexus 6 ήταν μόνο 4MB, ενώ με την παλιά μέθοδο θα έπρεπε να κατεβάσουμε 1GB!

Το κακό (και παράλληλα καλό) με το incremental update είναι ότι ελέγχει αν είναι εντάξει το system partition της συσκευής και αυτό σημαίνει να είναι στην ακριβώς προγενέστερη έκδοση και να μην περιέχει ξένα αρχεία. Ο έλεγχος αυτός είναι καλός γιατί μας γλιτώνει από σίγουρο bootloop πριν καν φλασάρουμε τη συσκευή μας και παράλληλα κακός γιατί όσοι έχουν κάνει root, δεν μπορούν να το εγκαταστήσουν, γιατί ως γνωστόν το root αποθηκεύει τουλάχιστον το su binary στο system.

Ένα δεύτερο πρόβλημα με τα επίσημα update είναι ότι χρειάζονται και την επίσημη recovery για να εγκατασταθούν, αλλά η αλλαγή recovery για κάποιον που απλά θέλει να εγκαταστήσει το SuperSU μπορεί να αποφευχθεί τρέχοντας από τον υπολογιστή την custom recovery με την εντολή:

fastboot boot recovery.img

και όχι εγκαθιστώντας την με την εντολή:

fastboot flash recovery recovery.img

Η λύση

Μία λύση στο πρόβλημά μας είναι να επαναφέρουμε τη συσκευή μας σε εργοστασιακή ROM και στη συνέχεια να εγκαταστήσουμε το update μέσα από αυτή. Για αυτή την περίπτωση μπορούμε να χρησιμοποιήσουμε αυτόματα εργαλεία όπως το Odin, το SP Flashtool και το Xperia Flashtool, τα οποία όμως διαγράφουν τα πάντα στη συσκευή μας και αυτό είναι κάτι που δεν το θέλουμε με τίποτα, γιατί το backup και η επαναφορά δεδομένων είναι απλά βαρετά. Θα χρησιμοποιήσουμε λοιπόν το πιο generic εργαλείο που υπάρχει στο Android, το οποίο δεν είναι άλλο από το Fastboot που λειτουργεί σχεδόν σε όλες τις συσκευές Android.

Αυτό λοιπόν που πρέπει να κάνουμε με το fastboot είναι να εγκαταστήσουμε μόνο το επίσημο "system.img" και ίσως το "recovery.img" αν το έχουμε αλλάξει και να μην πειράξουμε τα υπόλοιπα partition, αφενός γιατί δε χρειάζεται και αφετέρου γιατί κάποια από αυτά περιέχουν τα δεδομένα μας και δε θέλουμε να τα διαγράψουμε. Το "system.img" που θα επιλέξουμε, πρέπει να είναι ακριβώς αυτό που φοράει η συσκευή μας αυτή τη στιγμή και αυτό γιατί το OTA update που έχουμε στη διάθεσή μας μπορεί να "κουμπώσει" μόνο σε αυτήν. Για αυτό το λόγο πρέπει να πάμε "Ρυθμίσεις > Σχετικά με το τηλέφωνο" και να σημειώσουμε τον "Αριθμό έκδοσης".


Με αυτό τον αριθμό στη συνέχεια ψάχνουμε στο Google να βρούμε και να κατεβάσουμε στον υπολογιστή μας το επίσημο πακέτο αυτής της έκδοσης για τη συσκευή μας. Αν έχετε Nexus συσκευή, η Google τα έχει όλα τακτοποιημένα στην επίσημη σελίδα τους. Προσοχή! Δε θέλουμε το OTA update αυτής της έκδοσης, αλλά ολόκληρη τη ROM.


Αποσυμπιέζουμε το αρχείο που θα βρούμε (χρησιμοποιήστε το 7zip που τα κάνει όλα και συμφέρει) και αν μέσα σε αυτό υπάρχουν και άλλα συμπιεσμένα, τα αποσυμπιέζουμε και αυτά. Σε έναν από τους φακέλους λοιπόν θα βρούμε τα πολύ core αρχεία τα οποία αποτελούνται από:

  • το boot.img
  • το cache.img
  • το recovery.img
  • το system.img
  • το userdata.img


Το κάθε ένα από αυτά απευθύνεται και στο ανάλογο partition της συσκευής μας και τα ξεχωρίζουμε από την παρόμοια ονομασία τους. Για να εγκαταστήσουμε λοιπόν το "system.img" στη συσκευή μας, εγκαθιστούμε στον υπολογιστή μας το Minimal ADB & Fastboot, το τρέχουμε και τοποθετούμε το "system.img" στο φάκελό του. Στη συνέχεια για να βάλουμε τη συσκευή μας σε fastboot mode, δίνουμε την εντολή:

adb reboot bootloader

για να εγκαταστήσουμε το "system.img" δίνουμε την εντολή:

fastboot flash system system.img

και για να κάνουμε επανεκκίνηση στη συσκευή δίνουμε την εντολή:

fastboot reboot


Μόλις η συσκευή μας boot-άρει, ελέγχουμε για την αναβάθμιση πηγαίνοντας "Ρυθμίσεις > Σχετικά με το τηλέφωνο > Ενημερώσεις συστήματος" (μπορεί να μην εμφανιστεί άμεσα) και την εγκαθιστούμε κανονικά. Φυσικά αν κάνουμε τα παραπάνω έχουμε χάσει το root το οποίο πρέπει να ξαναγίνει.


Δείτε επίσης...

Φεύγω από την Google (μέρος 15) | ''Ξηλώνουμε'' τα Google apps από το Android

Android | Γιατί δε θα αγόραζα ποτέ smartphone της OnePlus

Ιδιωτικό απόρρητο | Το αφελές επιχείρημα του ''Δεν έχω τίποτα να κρύψω''

Docker (μέρος 7) | Στήνουμε έναν reverse proxy για τα container μας με το Traefik

Μάθε παιδί μου Linux (μέρος 11) | Δίσκοι, κατατμήσεις και σύστημα αρχείων (filesystem)

Ubuntu Touch 2020 review | Μια πραγματική mobile GNU/Linux διανομή έτοιμη για καθημερινή χρήση

Android | Περιόρισε την παρακολούθηση των εφαρμογών και κόψε τις διαφημίσεις με το TrackerControl

Απόρρητο | ''Μπερδεύουμε'' τον αλγόριθμο Google και Facebook με ψεύτικες πληροφορίες

Docker (μέρος 1) | Τι είναι και πώς το εγκαθιστούμε στον υπολογιστή μας;

Android | Βάλε στην ''απομόνωση'' τις εφαρμογές που δεν εμπιστεύεσαι με το Shelter