COMPILAZIONE KERNEL DA SORGENTI AOSP(GOOGLE):
- By Anto999 & Crotan -
COSA SERVE:
-Ubuntu OS(per i kernel il migliore è 12.04 LTS)
-Un pc con almeno 2GB di RAM
-Almeno 20 GB di harddisk libero
-Scaricamento Jdk:
codice:
sudo apt-get install openjdk-6-jdk
-Scaricare le librerie compilazione:
codice:
$ sudo apt-get update
$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 git
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
-Sarebbe necessario un riavvio adesso per far funzionare al meglio l'ambiente....
-Creazione cartelle/scaricamento sorgenti google dove posizionare il tutto:
codice:
-Aprite il terminale
-mkdir android
- mkdir toolchains
- cd toolchains
- mkdir linaro
- cd ..
- cd ..
- cd android
- git clone https://android.googlesource.com/kernel/omap.git -b android-omap-tuna-3.0-jb-mr1.1 maguro
-Scaricamento toolchain
codice:
-Scaricate questo:
https://releases.linaro.org/13.03/components/android/toolchain/4.7/android-toolchain-eabi-linaro-4.7-2013.03-2-2013-03-17_20-47-57-linux-x86.tar.bz2
-aprite il file ed estraete tutti i file nella cartella linaro creata prima
-entrate nella cartella android/maguro ed aprite il makefile,trovate la stringa CROSS_COMPILE=
Nel mio caso è:
CROSS_COMPILE= /home/antonio/android/toolchains/linaro/bin/arm-eabi-
se avete seguito me vi basterà cambiare antonio nel nome del vostro pc dato ad ubuntu
Adesso è d'obbligo prima della compilazione riavviare il PC...
All'accensione...
-Se volete fare alcune modifiche al kernel cercate su github,poi proseguite con il prossimo step...
Compilazione:
codice:
$ cd android
$ cd maguro
$ export ARCH=arm
$ export SUBARCH=arm
$ export CROSS_COMPILE= /home/antonio/android/toolchains/linaro/bin/arm-eabi-
$ make tuna_defconfig
$ make -j#(numero core del vostro PC+1)
Per ripacchettare il kernel usate questa guida:
-Scaricate questo zip: Kernel tools.zip
-prendete la cartella Androkernel e la copiate nella cartella /out del kernel
-prendete il file buildbootimg.sh e copiatelo nella directory principale del kernel
-prendete la cartella mkboot e la estraete nello stesso posto del file buildbootimg.sh
- dopo la compilazione eseguite il file buildbootimg.sh e troverete alla fine il kernel gia zippato in Out/Androkernel/androkernel.zip
Per l'overclock:
/samsung/arch/arm/mach-s5pv210/cpu-freq.c
Per cambiare il nome del kernel,basta andare in:
/android/maguro/arch/arm/configs/tuna_defconfig
all'interno del file cercate:
CONFIG_LOCALVERSION='e qui lo modificate a vostro piacere'
"ovviamente non esagerate con le parole"
Per aggiungere governor:
A. Aprite "drivers/cpufreq/Kconfig"
B.Aggiungere le seguenti righe nel punto appropriato, tra gli altri governor
codice:
config CPU_FREQ_DEFAULT_GOV_SMARTASS bool "smartass"
select CPU_FREQ_GOV_SMARTASS
select CPU_FREQ_GOV_PERFORMANCE
help
Use the CPUFreq governor 'smartass' as default.
codice:
config CPU_FREQ_GOV_SMARTASS
tristate "'smartass' cpufreq governor"
depends on CPU_FREQ
help
smartass' - a "smart" optimized governor!
If in doubt, say N.
C.Aprite "drivers/cpufreq/Makefile"
D.Aggiungere la seguente riga nel punto appropriato.
codice:
obj-$(CONFIG_CPU_FREQ_GOV_SMARTASS) += cpufreq_smartass.o
E. creare un file chiamato "drivers / cpufreq / cpufreq_smartass.c"
F. Inserire il codice seguente del file.
[C] Smartass Kernel Govenor - Pastebin.com
G. Aprite "include / linux / cpufreq.h"
H. Nella sezione "Default Cpufreq" aggiungete
codice:
#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_SMARTASS)extern struct cpufreq_governor cpufreq_gov_smartass;
#define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_smartass)
adesso il governor è aggiunto...
potete trovare altri governor nel mio github:
https://github.com/antonio8297/Governor-suorce
oppure in quello di qualche altro kernel developer.
Aggiungere gli Scheduler
Gli Scheduler sono situati in kernel_source/block. Seguire le seguenti istruzioni per implementarli nel nostro Kernel:
1) Prendere lo Scheduler ed incollarlo in /block
2) Aprire il file Kconfig.iosched e aggiungere la scelta del Kconfig. Esempio per lo Scheduler SIO:
codice:
config IOSCHED_SIO
tristate "Simple I/O scheduler"
default y
---help---
The Simple I/O scheduler is an extremely simple scheduler,
based on noop and deadline, that relies on deadlines to
ensure fairness. The algorithm does not do any sorting but
basic merging, trying to keep a minimum overhead. It is aimed
mainly for aleatory access devices (eg: flash devices).
3) Impostare la scelta di Default:
codice:
default "sio" if DEFAULT_SIO
4) Salvate il file e spostatevi al Makefile, situato sempre in /block. Qui basterà semplicemente aggiungere questa riga di codice ( per il SIO ):
codice:
obj-$(CONFIG_IOSCHED_SIO) += sio-iosched.o
Salvare nuovamente. FINISH. Sceduler aggiunto
Costruire un modulo
Esistono due metodiche:
A. Digitare make modules
B. Digitare make path/to/your/module.ko
Parte D. (Usateli solo per la costruzione di moduli del kernel.)
A. Questo ricostruisce tutti i moduli
B. Ricostruirà solo il modulo richiesto. Molto utile quando si ha bisogno di ricostruire un modulo WiFi.