Come ben sappiamo quelli che noi chiamiamo Rom sono una popolazione nomade originaria dell’India del nord che a partire dal 1500 ac gironzola per il mondo…
…No, non parlerò dei Rom (perchè lo so che voi italiani siete razzisti e li odiate) ma di ROM, acronimo di Read Only Memory ossia quei bei file zip che gli androidiani utilizzano per brickare i propri device.
Ne scrivo con cognizione di causa perchè dal lontano 2008 mi diletto con la pratica del modding. Ecco il mio curriculum:
- 2008/09 – Rom per HTC Diamond – XOR Morna con Windows Mobile 6.1
- 2011/13 – Rom e kernel per LG Optimus 2x – DjangoManouche + KingOfBirds kernel
Inaspettatamente ho avuto un gran successo (tant’è che il thread per Optimus 2x che ho appena linkato l’ho ricreato dopo che avevo cancellato l’originale perchè non ci si capiva più nulla, erano circa 900 pagine) e mi sono ritrovato con blog russi, spagnoli, tedeschi, ecc. che mi chiedevano di supportare i loro utenti. Ciò mi ha fatto molto piacere ma ad un certo punto è diventato troppo impegnativo quindi ho deciso di smettere (per un po’) e passare al favoloso mondo Nexus (supportato dal top del top dei developer).
Ma bando alle ciance e concentriamoci sul modding!
Oggi iniziamo dalla base, ossia la definizione di ROM: La ROM (Read Only Memory) è un file installabile sui nostri device contenente il sistema operativo, GUI e applicazioni.
Nel mondo Android, generalmente, una ROM può essere di due tipi:
- File Zip contenente il file .img del kernel e ramdisk + tutte le cartelle per la partizione /system e quella /data (ossia file di sistema e eventuali applicazioni)
- File Zip contenente il file .img del kernel e ramdisk + files .img della partizione /system e /data
Ovviamente il primo tipo è più semplice da modificare perchè i file sono disponibili nel nostro file zip e quindi facilmente estraibili e decompilabili. Il secondo tipo invece necessita di un passaggio in più, ossia l’estrazione dei file .img, operazione facilmente eseguibile con la dsixda’s Android Kitchen che impareremo a conoscere nelle prossime puntate.
Andiamo a vedere leggermente più nel dettaglio i termini utilizzati finora:
- Kernel: Il Kernel di Android è basato su Linux. Possiamo considerare il kernel come una sorta di interfaccia tra i meandri più reconditi del sistema e tutto l’hardware (compresa la scocca in policarbonato) del nostro device. Quel Nocciolo che decide come le cose devono avvenire e con quali specifiche. Esempi: Gestione della memoria (LowMemoryKiller), Led di notifica, Driver della CPU, GPU, Bluetooth, Wifi, ecc… il 99% dei problemi dei device è dovuto alla mancanza di ottimizzazione del codice facente parte del kernel. Il 99% delle case produttrici inoltre, non rilascia il codice sorgente dei driver, costringendo di fatto gli sviluppatori a sfide epiche e coding spietato 🙂
- Partizioni: Anche in questo caso, in maniera simile ai sistemi operativi derivanti da UNIX, Android contiene diverse partizioni, ognuna delle quali formattata ad hoc e contenente dati specifici. Vediamole:
- /boot: è quella che contiene i dati per far avviare il dispositivo, ossia il kernel (zImage) e il RamDisk. come potrete intuire dal nome, senza i dati di questa partizione il vostro device è INUTILE.
- /system: è quella che contiene il resto del sistema operativo, tranne il kernel e il ramdisk. Contiene quindi i binari per eseguire i processi, le librerie di sistema, il framework, la GUI e le applicazioni di sistema (i vari servizi google, le app quali telefono, sms ecc..). Come per la partizione precedente, senza i suoi dati il vostro device è un HTC (questa è per Carl)
- /recovery: possiamo considerarla come una partizione boot di emergenza per le operazioni di manutenzione e aggiornamento. Installandone una modificata possiamo avere accesso al mondo del modding (vi dicono nulla TWRP o ClockWorkod recovery?)
- /data: è la partizione contenente i dati dell’utente e le applicazioni installate dal Playstore. Formattandola perdiamo i nostri dati ma il sistema resta funzionante (ho appena spiegato il famoso wipe dei dati, che insieme al wipe della partizione di sistema effettua il factory reset :))
- /cache: è la partizione contente dati temporanei per l’ottimizzazione del sistema. molto spesso fare il wipe di questa partizione aiuta a risolvere piccoli problemi derivanti da aggiornamenti di app o rallentamenti dovuti da frammentazione dei dati stessi (nella mia rom li eliminavo ogni notte alle 3 con un cron job).
- /misc: contiene dati specifici di un device o di una zona geografica.
- /sdcard: contiene i dati memorizzati nella scheda di memoria interna del nostro device. Spesso viene linkata in questa partizione anche l’accesso alla memoria esterna.
Cliccando qui potrete leggere il secondo articolo Wazotech dove darò le info di base su come si monta una ROM e quali sono le istruzioni di base per fare in modo che il device non vada in bootloop 🙂
Saluti, baci, abbracci a tutti.
Carburano.
Commenta utilizzando Google+