Salve a tutti, sono riuscito a compilare con la toolchain linaro 4.7.4 sia il kernel 3.0.72 che l'intera rom dai sorgenti Google Aosp del Samsung Galaxy Nexus.
Kernel + ramdisk:
Kernel updated to: 3.0.72 (compiled with Linaro GCC 4.7.4-2013.06.26)
Compressed zImage – LZO
Disabled ro.adb.secure
Available I/O Schedulers: Deadline – CFQ – No-op
Available CPUFreq govenor: performance – powersave – userspace – ondemand – interactive – conservative – hotplug
Enabled CIFS support
Enabled NFS support
Enabled TUN support
Fix shell adb in standard GNU/Linux
Enabled Local Version
Enabled /proc/config.gz
Enabled extract config zImage
System:
AOSP Jelly Bean 4.3 build JWR66V (compiled with Linaro GCC 4.7.4-2013.06.26)
Installato busybox
La rom non ha il root, mancano anche le google apps, se volete potete installarle tramite la recovery clockworkmod, in basso i link dei download.
Guida per l'installazione:
Installate la recovery Clockworkmod
Scaricate la rom e copiate lo zip nella sdcard
Reboot in recovery, fate wipe data/factory restore e flashate.
Download
- Galaxy-Nexus-4.3-linaro-odexed
- Galaxy-Nexus-4.3-linaro-deodexed
- Root SuperUser 1.51
- Gapps-jb-4.3
Galaxy Nexus 4.3 compilato con toolchain linaro 4.7.4 con cflags -O3
Galaxy_Nexus_4.3_linaro_odexed_02
La rom versione odexata sembra molto fluida e veloce, per aumentare la velocità del luncher, andate in Impostazioni - abilitate Opzioni sviluppatore - selezionate scala animazione finestra, transizione e animatore a 0,5x.
Ringraziamenti
- Google Android Source
- Team Progetto Linaro
- EstebanSannin
Se la mia rom vi piace ringraziatemi con una Donazione
Guida per la compilazione con i sorgenti linaro
Penso che questa guida sarà utile solo a pochi utenti, ma per la felicità di Nemis la pubblico.
- Dovete avere installato ubuntu 10.4 a 64 bit ma la compilazione va anche con ubuntu 13.04 a 64 bit testato da me e la sun java 6
- Scaricate i sorgenti aosp android 4.3, nel sito Android Developers spiega come fare
- Scaricate i sorgenti kernel del Galaxy Nexus:
codice:
git clone https://android.googlesource.com/kernel/omap.git
cd omap
git branch -a (questo comando vi elencherà le varie versioni del kernel)
master
* remotes/origin/android-omap-tuna-3.0-jb-mr2
remotes/origin/HEAD -> origin/master
remotes/origin/android-omap-3.0
remotes/origin/android-omap-panda-3.0
remotes/origin/android-omap-steelhead-3.0-ics-aah
remotes/origin/android-omap-tuna-3.0
remotes/origin/android-omap-tuna-3.0-ics-mr1
remotes/origin/android-omap-tuna-3.0-jb-mr0
remotes/origin/android-omap-tuna-3.0-jb-mr1
remotes/origin/android-omap-tuna-3.0-jb-mr1.1
remotes/origin/android-omap-tuna-3.0-jb-mr2
remotes/origin/android-omap-tuna-3.0-jb-pre1
remotes/origin/android-omap-tuna-3.0-mr0
remotes/origin/android-omap-tuna-3.0-mr0.1
remotes/origin/glass-omap-xrr02
remotes/origin/glass-omap-xrr35
remotes/origin/glass-omap-xrr64b
remotes/origin/glass-omap-xrr88
remotes/origin/linux-omap-3.0
remotes/origin/master
remotes/origin/sph-l700-fh05
git checkout remotes/origin/android-omap-tuna-3.0-jb-mr2 (scegliete l'ultima versione aggiornata del kernel 3.0.72 jelly bean)
git checkout -b remotes/origin/android-omap-tuna-3.0-jb-mr2
- Scaricate la toolchain linaro 4.7-2013.07 (4.7.4) da xda
- Settate le variabili per la compilazione del kernel:
codice:
export ARCH=arm
export CROSS_COMPILE=/home/utente/Scrivania/Galaxy_Nexus/Toolchain-Linaro/arm-linux-gnueabi-linaro_4.7.4/bin/arm-unknown-linux-gnueabi-
make tuna_defconfig (questo comando vi carica il config del gnexus)
make menuconfig (questo comando tramite una interfaccia grafica potete selezionare e caricare i vari moduli nel kernel e modificare la configurazione)
make (inizia la compilazione)
- Per compilare i sorgenti google aosp, dobbiamo scaricare questa toolchain linaro 4.7.4: http://snapshots.linaro.org/android/...ux-x86.tar.bz2
- Estraiamo e la copiamo nella cartella: sorgenti-aosp/prebuilts/gcc/linux-x86/arm/ in questa cartella ci sono le toolchain gcc di google, io per non confondermi con le altre cartelle lo chiamata arm-linaro-4.7 , ora non ci resta che modificare il file TARGET_linux-arm.mk che si trova nella cartella sorgenti-aosp/build/core/combo e andiamo a modificare il nome della cartella sul TARGET_TOOLCHAIN_ROOT,
da cosi:
codice:
# You can set TARGET_TOOLS_PREFIX to get gcc from somewhere else
ifeq ($(strip $(TARGET_TOOLS_PREFIX)),)
TARGET_TOOLCHAIN_ROOT := prebuilts/gcc/$(HOST_PREBUILT_TAG)/arm/arm-linux-androideabi-$(TARGET_GCC_VERSION)
TARGET_TOOLS_PREFIX := $(TARGET_TOOLCHAIN_ROOT)/bin/arm-linux-androideabi-
endif
a cosi:
codice:
# You can set TARGET_TOOLS_PREFIX to get gcc from somewhere else
ifeq ($(strip $(TARGET_TOOLS_PREFIX)),)
TARGET_TOOLCHAIN_ROOT := prebuilts/gcc/$(HOST_PREBUILT_TAG)/arm/arm-linaro-$(TARGET_GCC_VERSION)
TARGET_TOOLS_PREFIX := $(TARGET_TOOLCHAIN_ROOT)/bin/arm-linux-androideabi-
endif
Fatto questo potete iniziare a compilare seguendo le guide del sito android source
Comando per compilare la rom aosp odexed:
codice:
make DISABLE_DEXPREOPT=false WITH_DEXPREOPT=true
Ah dimenticavo prima che finisce la compilazione dovete copiare nella system che si crea nella cartella out le blob proprietary del Galaxy Nexus che potete prendere dalla vostra rom stock 4.3, se no la rom non si avvia.
News:
Ho ricompilando la rom con le cflags a -O3, per impostarlo nei sorgenti ho modificato il file TARGET_linux-arm.mk da cosi:
codice:
TARGET_arm_CFLAGS := -O2 \
-fomit-frame-pointer \
-fstrict-aliasing \
-funswitch-loops
# Modules can choose to compile some source as thumb.
TARGET_thumb_CFLAGS := -mthumb \
-Os \
-fomit-frame-pointer \
-fno-strict-aliasing
a cosi:
codice:
TARGET_arm_CFLAGS := -O3 \
-fomit-frame-pointer \
-fstrict-aliasing \
-funswitch-loops
# Modules can choose to compile some source as thumb.
TARGET_thumb_CFLAGS := -mthumb \
-O3 \
-fomit-frame-pointer \
-fno-strict-aliasing
Avevo prima provato a compilare la rom esportando solo le variabili:
codice:
export CFLAGS="-O3 -pipe"
export CXXFLAGS="-O3 -pipe"
prima di dare il comando make, ma non ero sicuro che cosi compilava con i cflags a -O3, la compilazione si è conclusa senza errori ma non ho provato la rom.
La compilazione con la modifica al file TARGET_linux-arm.mk è finita senza errori, la system.img che mi ha creato è di 259,1 Mb, invece la system.img con l'esportazione dei cflags è di 250 Mb, la stessa dimensione della system.img che avevo compilato senza i cflags -O3, quindi penso che con la modifica al file sono riuscito a compilare con i cflags -O3, non mi resta che provare la rom e fare dei test di benchmark per vedere se la rom è stata ottimizzata ed è più fluida e veloce.
Ho fatto dei test di benchmark con Antutu sulla rom compilata con i cflags -O3, con freq a 1200 e governor performance ha fatto 7830 di punteggio, più alto rispetto alla rom compilata senza cflags -O3 e della rom stock.