[GUIDA] Setup ambiente di sviluppo Rom su Linux Ubuntu
Introduzione
Lo scopo di questa guida è, come dice il titolo del thread, quello di creare un ambiente di sviluppo perfetto per iniziare a scaricare, compilare e buildare le vostre ROM preferite. L'argomento non è quasi mai trattato nella sua interezza poiché le guide tendono a disperdere l'utente verso altre già compilate da altri (ma che spesso risultano imprecise) e spesso risultano non aggiornate.
Se siete ai primissimi passi con la compilazione android, questo thread è il posto giusto per iniziare.
Ovviamente non tratterò l'argomento device tree perché è troppo complesso e dispersivo ed è praticamente impossibile sapere il giusto device tree per ogni device esistente al mondo. Esiste comunque una rapida soluzione e consiste nello spulciare il github di una ROM già compilata per il vosto device, recarvi su vendor/[nome della rom] e guardare il file [nome della rom].dipendencies. Lì solitamente sono elencate le vostre dipendenze.
Come sapete Android monta una versione modificata del kernel Linux, per cui il processo di building delle relative ROM avverrà im ambiente Linux. Apprestiamoci ad imparare un po' di terminologia di base.
Terminologia di base
In qualsiasi guida, anche quelle che sono solito scrivere io, troverete un warning che vi dice che non vi sarà spiegata la terminologia di base di Linux, perché si suppone che per compiere un passo tanto grande ed impegnativo quale il processo di building, voi sappiate già queste cose.
Non è questo il caso comunque. Questa guida vi viene in soccorso proprio in questo. Vediamo alcuni termini prettamente Linuxiani.
Root
- ormai se siete dei modders, siete avvezzi con questo termine che può avere due significati: il root può essere di una cartella, ossia la cartella principale (in Linux indicata col simbolo /) o il particolare utente con i privilegi di amministratore (discorso che si traduce, nel mondo di Android, con la parola SuperSU o SuperUser).
Terminale
- lo strumento che fa la differenza. È una finestra dove immettere dei comandi in maniera testuale, in modo da interagire con la macchina. Su Ubuntu lo si apre con la combinazione di tasti ctrl+alt+t.
sudo
- comando, invocato dal terminale, per guadagnare l'accesso come root. Segue una richiesta di immissione password (che avrete scelto voi durante l'installazione di Linux).
DE, Desktop Enviroment
- tutto quello che vediamo nello schermo. Un sistema operativo può essere gestito testualmente, ma per venire incontro all'utente, si da un'interfaccia grafica a tutto. Il DE è appunto l'ambiente grafico di un sistema operativo, composto da barre laterali, dock etc etc.
Nautilus, Thunar, Dolphin
- sono tutti dei gestori file (o file manager, un po' come quelli android) coi quali ci interfacciamo graficamente ai file ed alle cartelle. Sono, rispettivamente, di Ubuntu (o comunque del DE Unity), del DE XFCE e del DE Dolphin.
gksu
- comando che apre come root un'applicazione.
repo
- può essere inteso come abbreviazione di repository, ma anche come un programma (scritto in python) che sincronizza i tuoi sorgenti con quelli online.
git
- un sistema per tenere online il codice sorgente.
Branch
- versione di un codice sorgente, solitamente correlato alla versione di android
cm-10.2, jb-mr2, kitkat-4.4
- sono un sistema di denominazione dei branch, rispettivamente di CyanogenMod, AOKP e Slim.
Gerrit
- un sistema di revisione del codice online che usa gli standard git.
Commit
- una patch, o comunque una modifica, non ancora implementata
Build
- può indicare il processo di buildare, ossia costruire, ma anche una milestone di una ROM (build 1.2, build 5.0 etc)
Cherry-pick
- integrare nel codice sorgente dei commit.
Clone
- l'azione di clonare dei repository sulla tua macchina.
Manifest
- un documento che contiene un elenco dei progetti (project) appartenenti alla ROM da scaricare.
Download ed installazione di una distro linux
Lavoriamo in ambiente Linux, per cui dobbiamo procurarci una distro. Nel pc che uso normalmente monto Linux Mint (basato su Ubuntu, ma con diverse modifiche del team), mentre il pc che uso per buildare, monta su Ubuntu classico (la 13.10).
Nella guida spiegherò l'installazione di Ubuntu classico, ma potete utilizzare anche altre distro (Debian, Fedora, Arch, Gentoo, ma se state usando queste, non avete neanche motivo di leggere la guida).
- scaricate la .iso di Ubuntu dal sito ufficiale Ubuntu-it.org, ma scaricate la versione a 64 bit! La maggior parte dei processi di build, compresi quelli del kernel, vi richiederanno questa architettura. E comunque, se vi aspettate di terminare la compilazione in un lasso di tempo decente (meno di 3 ore), vi conviene avere almeno una macchina dual core con architettura 64 bit.
- scaricate unetbootin dalla loro pagina di sourceforge unetbootin.sourceforge.net. Questo programma vi servirà a creare la pen drive avviabile. Volendo, potete masterizzare l'iso su DVD, per cui, se avete intenzione di utilizzare questo metodo, potete saltare questo punto.
- una volta scaricato unetbootin, installatelo e, se la vostra distro si è scaricata, collegate la pen drive vuota (formattata in FAT32) e avviate unetbootin. Selezionate l'iso scaricata ed il dispositivo di montaggio dell'ISO (vedi immagini sotto spoiler) ed avviate (le immagini sono prese dalla mia guida per installare android x86 su pc, cambiano i file, ma il processo è identico.
Una volta che la pen drive è pronta (ci vorranno 2-5 minuti a seconda della potenza del vostro pc), riavviate e selezionate dal menu di boot la vostra pen drive. Si avvierà una finestra blu che vi chiederà se volete provare o installare Ubuntu. Selezionate l'installazione, che vi porterà ad una procedura guidata estremamente semplice. Arrivati ad un certo punto, vi chiederà se volete installare Ubuntu da solo sul pc, o se volete affiancarlo a Windows/Mac OS, qui sta a voi decidere, l'importante è che riserviate ad Ubuntu almeno 150gb (vedremo dopo perché).
Procedete con l'installazione assegnando come file system ext4 (è già disponibile il nuovo btfrs, ma non è ancora stabile). Decidete anche il vostro nome utente e la vostra password (consiglio di usare una parola abbastanza corta poiché dovrete inserire spesso la password nel terminale).
Nel giro di una ventina di minuti o poco più (sempre a seconda del vostro pc) avrete Ubuntu installato sulla vostra macchina.
Appena entrati su Ubuntu, corriamo subito ad aggiornare i pacchetti esistenti aprendo il terminale (ctrl+alt+t) e immettendo i seguenti comandi:
codice:
sudo apt-get update
sudo apt-get dist-upgrade
Giusto il tempo di scaricare gli aggiornamenti (in genere mai più di 300mb), di installarli ed il sistema è pronto. Per sicurezza riavviate.
Installazione pacchetti essenziali
In questo momento avete un sistema operativo basilare, aggiornato e funzionale, ma non ancora pronto ad ospitare il processo di building. Ci servono alcuni pacchetti e li installiamo sempre da terminale. Potete copipastare i comandi che vi do, onde evitare errori.
Installiamo i codec e le librerie multimediali:
codice:
sudo apt-get install ubuntu-restricted-extras
codice:
sudo wget --output-document=/etc/apt/sources.list.d/medibuntu.list http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list && sudo apt-get --quiet update && sudo apt-get --yes --quiet --allow-unauthenticated install medibuntu-keyring && sudo apt-get --quiet update
codice:
sudo apt-get install libdvdcss2
Installiamo il tool per aprire una finestra di terminale in una cartella con un click:
codice:
sudo apt-get install nautilus-open-terminal
Ci servirà per risparmiare tempo, invece di recarci col comando cd.
[PROSEGUO AL POST #2]