7b - BOOT.IMG
Recatevi per prima cosa al percorso lib/modules e cancelliamo solo i moduli come da selezione nello screen sotto
Dovremo rimpiazzarli con quelli appena compilati, vediamo come.
Avviate il terminale e recatevi al percorso android/source/drivers utilizzando terminale.
Digitate il comando
codice:
cd android/source/drivers
Adesso vedrete che Linux è davvero potente: esiste un comando che consente di trovare tutti i files con una determinata estensione e di copiarli in una determinata directory
codice:
find . -name "*.ko" -exec cp {} /home/nome_utente/android/bootimg-tools/out/ramdisk/lib/modules/ \;
Se avete pratica di inglese capirete benissimo cosa avviene: il comando troverà tutti i files con estensione .ko (che sono i moduli) e li copierà nel percorso specificato alla fine della stringa. Da standing ovation.....
Controllate che i file siano stati copiati nella destinazione.
NOTA: L'operazione di sostituzione dei moduli descritta va eseguita SEMPRE, ad ogni ri-compilazione. Preciso che è tuttavia possibile disattivare il versioning durante la compilazione, proprio per evitare un non matching delle magic strings. Ma non è conveniente in quanto sarebbe difficile eseguire un corretto tracking delle varie modifiche eseguite sul codice sorgente dei moduli.
La modifica della ramdisk può dirsi conclusa (per il momento). Il passo successivo è la ri-compressione della ramdisk.
E' necessario ESSERE nel percorso in cui si trovano i files da comprimere; da terminale:
codice:
cd android/bootimg-tools/out/ramdisk
e lanciamo il seguente comando
codice:
find . | cpio -o -H newc | gzip > /home/nome_utente/android/bootimg-tools/ramdisk.cpio.gz
Verrà creato un archivio con estensione .cpio.gz al percorso indicato alla fine della stringa delle dimensioni di circa 1 megabyte.
Rinominate il file da
a
Ora va creata la boot.img unendo assieme il kernel e la ramdisk appena compressa.
Usando il file explorer recatevi in android/source/arch/arm/boot e copiamo il file zImage, che abbiamo ottenuto dalla compilazione dei sorgenti, all'interno della cartella "bootimg-tools", in modo da avere sia il che kernel (zImage) che la ramdisk (initrd.img) nello stesso percorso in cui sono contenuti gli "attrezzi".
Accertiamoci di essere con il terminale all'interno del percorso dove si trovano i files di cui sopra, nell'eventualità spostiamoci con il comando cd
codice:
cd android/bootimg-tools
Lanciamo il comando
codice:
./mkbootimg.Linux.x86_64 --kernel zImage --ramdisk initrd.img -o newboot.img --base 0x10000000
SPIEGAZIONE: Il comando lancerà l'eseguibile "mkbootimg.Linux.x86_64" contenuto nella cartella che assemblerà un --kernel (che in questo caso si chiama "zImage") una --ramdisk (che in questo caso si chiama "initrd.img") creando una "newboot.img". Il nome finale "newboot.img" è stato impostato di proposito con il prefisso "new" per evitare di fare confusione con altri files. Occorrerà rinominarlo semplicemente in "boot.img" successivamente.
!!FONDAMENTALE!! : La parte finale della stringa
codice:
--base 0x10000000
indica un codice che è univoco per il device in questione. E' importantissimo non dimenticarsi di specificarlo e soprattutto di non commettere errori di digitazione se vogliamo che la boot.img funzioni correttamente.
L'ultimo passo è creare un file zip da flashare in recovery.
Se vi serve uno zip come struttura potrete scaricare QUESTO, contiene una cartella meta-inf con tutto quello che serve per creare uno zip flashabile da recovery CWM o simili.
Scaricate dunque lo zip ed estraetelo dove vi pare, l'importante è che vi ricordiate dove si trova.
Create una nuova cartella nel work tree chiamandola ad esempio "zip-recovery"
Adesso copiamo la cartella estratta meta-inf all'interno di "zip-recovery" e copiamo anche il file "newboot.img" creato qualche minuto prima.
Rinominiamo il file in . In sostanza dovremmo ottenere qualcosa di simile a quello mostrato nel seguente screen.
Spostiamoci con il terminale nella cartella mostrata sopra
codice:
cd android/zip-recovery
E lanciamo questo comando
codice:
zip -r pirla-kernel ./
Verrà creato uno zip con il nome indicato nel comando, in questo caso "pirla-kernel" che sarà pronto per essere flashato dalla recovery.
TIP: Per evitare di fare confusione con le varie builds del kernel che partorite di volta in volta, potrete ad esempio sostituire il nome dello zip con la data, l'ora, i minuti e i secondi in cui viene creato lo zip.
Semplicemente con
codice:
`date +"%Y-%m-%d-%H-%M-%S"`
apici compresi, mi raccomando.
Per completezza ecco il comando finale
codice:
zip -r `date +"%Y-%m-%d-%H-%M-%S"` ./
Lo zip creato avrà un nome abbastanza esplicativo e privo di ambiguità.
Abbiamo finito, se tutto è andato bene avrete compilato dalla a alla z il vostro primo kernel.
.....To be continued......