I telefoni e i tablet Android sono generalmente molto più aperti rispetto ai loro omologhi che eseguono sistemi operativi come iOS, Tizen o Windows 10 Mobile. Se non ti piace il firmware che il produttore del dispositivo ha installato sul tuo dispositivo Android, sei libero di sostituirlo con il tuo firmware personalizzato. CyanogenMod, Paranoid Android e Pure Nexus Project sono esempi di firmware personalizzati che godono di molta popolarità tra gli utenti Android.
Il firmware personalizzato è anche l'unico modo per installare le versioni più recenti di Android sui dispositivi che non sono più supportati dai loro produttori. A meno che tu non possieda un dispositivo appartenente alla serie Nexus o Android One, sono sicuro che lo sapevi già.
In questo articolo, ti aiuto a capire che cos'è il firmware Android e come lo utilizza un dispositivo Android. Vi presento anche gli strumenti che è possibile utilizzare per sostituire il firmware di un dispositivo.
La sostituzione del firmware è un'operazione rischiosa che può potenzialmente rendere il dispositivo inutilizzabile. Nella maggior parte dei casi annulla anche la garanzia del dispositivo. Assicurati di avere a portata di mano un backup dei tuoi dati e una copia dell'immagine di fabbrica del tuo dispositivo prima di andare avanti e sperimentare con il firmware personalizzato lampeggiante.
Originariamente, il firmware era un termine usato per riferirsi a piccoli programmi mission-critical installati nella memoria di sola lettura, o ROM, di un dispositivo elettronico. La modifica del firmware era impossibile o richiedeva un'attrezzatura speciale che era solitamente fuori dalla portata dei normali utenti finali.
Il firmware Android, tuttavia, è molto diverso. Comprende l'intero sistema operativo Android ed è memorizzato in una forma scrivibile di memoria chiamata memoria flash NAND, lo stesso tipo di memoria utilizzato nei dispositivi di memorizzazione, come chiavette USB e schede SD. La parola firmware è usato solo perché i produttori di dispositivi non si sono preoccupati di inventare una nuova parola per questo.
Spesso viene anche indicato il firmware di Android ROM Android perché, per impostazione predefinita, non è possibile per gli utenti scrivere direttamente su di esso.
Il firmware installato su un dispositivo Android dal produttore contiene una build del sistema operativo Android e due ulteriori programmi closed source che sono solitamente insostituibili, un boot loader e firmware radio.
Un bootloader Android è un piccolo pezzo di codice proprietario che è responsabile per l'avvio del sistema operativo Android quando viene acceso un dispositivo Android. Tuttavia, il bootloader esegue quasi sempre un altro compito. Controlla se il sistema operativo che sta avviando è autentico.
Come decide cosa è autentico? Controlla se la partizione di avvio è stata firmata usando un unico Chiave OEM, che è l'abbreviazione di Produttore di apparecchiature originali chiave. La chiave OEM, ovviamente, appartiene al produttore del dispositivo, è privata e non è possibile sapere di cosa si tratta.
A causa del controllo di autenticità, non è possibile installare direttamente una ROM personalizzata su un dispositivo Android. Per fortuna, in questi giorni, la maggior parte dei produttori di dispositivi consente agli utenti di disabilitare il controllo. In gergo Android, consentono agli utenti di sbloccare il bootloader.
La procedura esatta che devi seguire per sbloccare il bootloader dipende dal tuo dispositivo. Alcuni produttori, come Sony e HTC, si aspettano di fornire un token di sblocco segreto. Altri si aspettano solo che tu esegua un set fisso di comandi usando un terminale.
Di solito, uno strumento chiamato fastboot, che fa parte dell'SDK di Android, viene utilizzato per eseguire i comandi di sblocco. Ad esempio, se possiedi un dispositivo Nexus, puoi sbloccare il suo bootloader eseguendo il seguente comando:
sblocco lampeggiante veloce
Si impara di più fastboot più avanti in questo articolo. Nota che, se possiedi un dispositivo che ha un bootloader che non può essere sbloccato, non c'è un modo semplice per modificare o sostituire il suo firmware.
Potrebbe essere una sorpresa per te, ma il tuo smartphone Android esegue effettivamente un altro sistema operativo su un processore indipendente chiamato a processore in banda base. Firmware radio si riferisce al sistema operativo che gira sul processore in banda base.
Di solito, è un RTOS, che abbrevia per sistema operativo in tempo reale, ed è responsabile della gestione delle capacità radio cellulari del dispositivo. In altre parole, è ciò che consente al dispositivo di effettuare chiamate e connettersi a Internet utilizzando tecnologie wireless come 2G, 3G e 4G LTE.
RTOS è un pezzo di codice proprietario e produttori di processori in banda base popolari, come Qualcomm, MediaTek e Spreadtrum, assicurano che il suo funzionamento interno rimanga un segreto. Il sistema operativo Android di solito comunica con RTOS utilizzando socket e callback.
In genere, non è una buona idea sostituire il firmware della radio del dispositivo.
La build Android è l'unica parte del firmware creata dal codice open source. Di conseguenza, questa è l'unica parte che è possibile modificare ed estendere. Quando senti gli appassionati di Android dire "Ho fatto lampeggiare una nuova ROM sul mio dispositivo", puoi star certo che stanno parlando di una nuova build Android.
Generalmente una build Android è condivisa sotto forma di un file ZIP che può essere utilizzato da fastboot. Ha il seguente contenuto:
update.zip | - android-info.txt | - boot.img | - recovery.img | - system.img '- userdata.img
Android-info.txt è un file di testo che specifica i prerequisiti della compilazione. Ad esempio, potrebbe specificare i numeri di versione del bootloader e il firmware radio di cui ha bisogno la compilazione. Ecco un esempio Android-info.txt file:
require board = herring richiede version-bootloader = I9020XXJK1 richiede version-baseband = I9020XXKD1
boot.img è un file binario che contiene sia un kernel Linux che un ramdisk sotto forma di un archivio GZIP. Il kernel è un file eseguibile di avvio zImage che può essere utilizzato dal bootloader.
Il ramdisk, d'altra parte, è un filesystem di sola lettura che viene montato dal kernel durante il processo di avvio. Contiene il ben noto dentro processo, il primo processo avviato da qualsiasi sistema operativo basato su Linux. Contiene anche vari demoni come adbd e healthd, che sono iniziati dal dentro processi. Ecco cosa è l'albero delle directory del ramdisk sembra:
ramdisk / | - caricatore -> / sbin / healthd | - data | - default.prop | - dev | - file_contexts | - fstab.grouper | - init | - init.environ.rc | - - init.grouper.rc | - init.grouper.usb.rc | - init.rc | - init.recovery.grouper.rc | - init.trace.rc | - init.usb.rc | - - init.zygote32.rc | - proc | - property_contexts | - sbin | | - adbd | | - healthd | | - ueventd -> ... / init | '- watchdogd -> ... / init | - seapp_contexts | - selinux_version | - sepolicy | - service_contexts | - sys | - system | - ueventd.grouper.rc' - ueventd.rc
system.img è l'immagine della partizione che verrà montata sul vuoto sistema directory che puoi vedere nell'albero sopra. Contiene i file binari necessari per l'esecuzione del sistema operativo Android. Include app di sistema, caratteri, file JAR di framework, librerie, codec multimediali e altro. Ovviamente, questo è il file che interessa maggiormente agli utenti Android quando eseguono il flashing di una nuova ROM.
L'immagine del sistema è anche il file che fa sì che la maggior parte degli utenti Android si interessi al firmware personalizzato lampeggiante. I file di immagini di sistema forniti dai produttori di dispositivi sono spesso pieni di app e personalizzazioni non necessarie, chiamate informaticamente bloatware. L'unico modo per rimuovere il bloatware è quello di sostituire l'immagine di sistema del produttore con un'immagine di sistema più desiderabile.
userdata.img è un'immagine di partizione che verrà montata sul vuoto dati directory che puoi vedere nell'albero della directory ramdisk. Quando si scarica una ROM personalizzata, questa immagine di solito è vuota e viene utilizzata per ripristinare il contenuto della dati elenco.
recovery.img è molto simile a boot.img. Ha un file del kernel eseguibile all'avvio che può essere utilizzato dal bootloader e un ramdisk. Di conseguenza, anche l'immagine di ripristino può essere utilizzata per avviare un dispositivo Android. Quando viene utilizzato, invece di Android, viene avviato un sistema operativo molto limitato che consente all'utente di eseguire operazioni amministrative, come il ripristino dei dati utente del dispositivo, l'installazione di nuovo firmware e la creazione di backup.
La procedura da seguire per eseguire l'avvio utilizzando l'immagine di ripristino è specifica del dispositivo. Di solito, implica l'accesso alla modalità bootloader, anche chiamata modalità fastboot, premendo una combinazione di tasti hardware presenti sul dispositivo, e quindi selezionando il Recupero opzione. Ad esempio, su un dispositivo Nexus è necessario premere e tenere premuto il pulsante di accensione in combinazione con il pulsante del volume giù.
In alternativa, puoi usare adb, uno strumento incluso in Android SDK, per accedere direttamente alla modalità di ripristino.
adb reboot recovery
Il modo più semplice per eseguire il flashing del nuovo firmware sul dispositivo è utilizzare fastboot strumento. fastboot segue il protocollo fastboot per comunicare con un dispositivo Android. Tuttavia, può farlo solo quando il dispositivo è stato avviato in modalità fastboot. Il modo più rapido per accedere alla modalità di avvio rapido è utilizzando adb:
adb reboot il bootloader
Per eseguire il flashing di una ROM personalizzata disponibile sotto forma di file ZIP contenente tutti i file immagine menzionati nella sezione precedente, è possibile utilizzare il aggiornamento rapido
comando. Ad esempio, ecco come si lampeggerà una ROM presente in un file chiamato update.zip:
fastboot update update.zip
Se vuoi far lampeggiare solo un'immagine specifica, puoi farlo usando il flash fastboot
comando. Ad esempio, ecco come si farebbe a lampeggiare solo l'immagine del sistema:
sistema flash fastboot system.img
Allo stesso modo, se si desidera sostituire solo l'immagine di avvio, si utilizzerà il seguente comando:
fastboot flash boot boot.img
È sempre una buona idea verificare se un'immagine di avvio o di ripristino funziona prima di lampeggiare effettivamente sul dispositivo. Per fare ciò, puoi usare il avvio rapido
comando. Ad esempio, ecco come verificherai se è stata richiamata un'immagine di ripristino personalizzata twrp.img è compatibile con il tuo dispositivo:
avvio rapido boot twrp.img
Nota che nessuno dei fastboot i comandi che ho menzionato in questa sezione funzioneranno se il bootloader del tuo dispositivo non è stato sbloccato.
.