web analytics

Compilazione Kernel 3.3.1 su Ubuntu x86 e derivate – Wifi no problem


– Aggiornata al 10/04/2012 – Kernel Patch per problema Wi-Fi Atheros inclusa
 Ho aggiornato il link del sorgente del kernel perché punti ad una versione opportunamente modificata, buon divertimento.

Un saluto a tutti, come promesso eccovi la versione per sistemi a 32 bit della guida già pubblicata.
Successivi approfondimenti ed ulteriori ottimizzazioni saranno presenti in successivi post.
Le differenze tra l’architettura a 32 e a 64 Bit sono minime ma, poiché ho postato le istruzioni da seguire passo passo, era necessario aggiornare la guida con le opportune modifiche. 

Avviate
il “Terminale” e digitate al prompt, nell’ordine così come vi
appaiono, i comandi che via via troverete nel corso della lettura.
Ogni comando è preceduto da una rapida spiegazione.

Installazione librerie, compilatori e tutto il necessario. Ad ogni
comando date “Invio”, inserite la vostra password ed attendete che
il sistema faccia il resto.
sudo
apt-get install fakeroot build-essential crash kexec-tools
makedumpfile kernel-wedge libncurses5 binutils-dev libelf-dev
libdw-dev libnewt-dev libncurses5-dev
sudo
apt-get –no-install-recommends install asciidoc xmlto
sudo
apt-get build-dep linux

Creazione cartella contenente il sorgente del kernel e delle patch
all’interno della nostra Home (al termine di tutte le operazioni essa
conterrà anche il nostro kernel bello e compilato in singoli
pacchetti).
mkdir
~/Kernel_3.3.1
cd
~/Kernel_3.3.1

Download del kernel e delle patch.

wget
-c http://dl.dropbox.com/u/56720744/linux-3.3.1.tar.bz2
Attendete
il termine del download prima il dare il comando successivo (per ogni
singolo comando).
wget
-c
http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.3.1-precise/0001-base-packaging.patch
wget
-c
http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.3.1-precise/0002-debian-changelog.patch
wget
-c
http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.3.1-precise/0003-default-configs.patch

Scompattazione Kernel, creazione collegamento simbolico, accesso alla
cartella.
tar
xjvf linux-3.3.1.tar.bz2
ln
-s linux-3.3.1 linux
cd
linux

Applicazione patch al Kernel
patch
-p1 < ../0001-base-packaging.patch
patch
-p1 < ../0002-debian-changelog.patch
patch
-p1 < ../0003-default-configs.patch

Assegnazione diritti accesso ed esecuzione ai vari scripts
chmod
-Rv +x debian/rules
chmod
-Rv +x debian/scripts/

Creazione nuovo profilo di compilazione per Core i7
cp
debian.master/config/i386/config.flavour.generic
debian.master/config/i386/config.flavour.i7

Pulizia ed aggiornamento dei file di configurazione
fakeroot
debian/rules clean
fakeroot
debian/rules updateconfigs

Modifica del file di configurazione per adattare il Kernel alle
nostre richieste: è un passaggio fondamentale da eseguire con
estrema attenzione. All’esecuzione del comando il terminale farà
apparire una serie di domande, RISPONDETE AFFERMATIVAMENTE SOLO ALLA SEGUENTE RICHIESTA: “Do
you want to edit config: i386/config.flavour.i7? [Y/n]”.

fakeroot
debian/rules editconfigs
Ora
siete entrati nella configurazione del kernel, procedete in questo
modo (per selezionare intendo muoversi su e giù con le frecce del
cursore e poi dare invio):

1 – Selezionare “Processor type
and features”

2 – Selezionare “Processor family
(Generic-x86-64)”

3 – Selezionare “Core 2/newer
Xeon

4 – Scorrete tutte le voci in basso fino a trovare
“Preemption Model …”
(Questa voce determina come la vostra CPU si “dedicherà” alla gestione dei vari compiti/programmi in
esecuzione nel vostro sistema unitamente alla voce “Timer
frequency…”. È possibile privilegiare una più rapida risposta
del sistema a scapito però dei tempi di esecuzione reali dei vari
processi. Consiglio vivamente di lasciare “Desktop”).

5 –
Scorrete tutte le voci in basso fino a trovare “Timer frequency
…”
(Ora se avete un fisso potete selezionare la voce 1000Hz,
un portatile non superate soglia 300Hz. In rete ho trovato infinite
differenti spiegazioni e consigli sull’uso di tale parametro, a meno
che non utilizziate sul vostro sistema delle applicazioni
professionali per la gestione di audio e video, settate tale valore su
300Hz).

6 – Tornate al menù precedente Selezionando la voce
“Exit” presente nella parte bassa dello schermo

7 –
Selezionate “Networking support …”

8 – Selezionate
“Networking options …”

9 – Scorrete tutte le voci in
basso fino a trovare “The IPv6 protocol”, pigiate sulla vostra
tastiera la lettera “M” (in fase di compilazione verrà
creato un modulo del kernel per il protocollo IPv6 che sarà
possibile bannare per impedirne l’uso da parte del sistema in maniera
definitiva).

10 – Tornate al menù precedente Selezionando la
voce “Exit” presente nella parte bassa dello schermo

11 –
Tornate al menù precedente Selezionando la voce “Exit” presente
nella parte bassa dello schermo

12 – Usciamo dal menù sempre
Selezionando la voce “Exit” presente nella parte bassa dello
schermo

13 – Rispondiamo “Yes” alla domanda che ci verrà
posta all’uscita, salveremo le modifiche apportate alle
configurazione base. Rispondete “N” alle successive
domande presenti a schermo. 


Copia delle impostazioni generiche ed impostazione della nostra
configurazione come predefinita all’interno del processo di
compilazione 

cp
debian.master/abi/3.2.0-20.33/i386/generic
debian.master/abi/3.2.0-20.33/i386/i7
cp
debian.master/abi/3.2.0-20.33/i386/generic.modules
debian.master/abi/3.2.0-20.33/i386/i7.modules
sed
-i s/getall i386 generic virtual/getall i386 generic virtual
i7/g debian.master/etc/getabis
sed
-i s/= generic virtual/= generic virtual i7/g
debian.master/rules.d/i386.mk
cp
debian.master/control.d/vars.generic debian.master/control.d/vars.i7
sed
-i s/supported=”Generic”/supported=”Nehalem”/g
debian.master/control.d/vars.i7
sed
-i s/target=”Geared toward x86_64/target=”Geared
toward i7/g debian.master/control.d/vars.i7


Ottimizzazione del kernel attraverso le variabili -mtune e -march, il
compilatore si occuperà di produrre un kernel ottimizzato per
architetture Intel Dual Core / Core i-xx
 
sed
-i s/= gcc/= gcc -march=corei7 -mtune=corei7/g Makefile
sed
-i s/= g++/= g++ -march=corei7 -mtune=corei7/g Makefile
sed
-i s/core2/corei7/g arch/x86/Makefile
sed
-i s/core2/corei7/g arch/x86/Makefile_32.cpu

– Scrittura di tutte le modifiche sul disco

sync
– Pulizia prima dell’inizio della compilazione vera e propria
 
fakeroot
debian/rules clean
– Compilazione delle dipendenze, sorgente e header
skipabi=true
skipmodule=true fakeroot debian/rules binary-indep
– Avvio del processo di compilazione del kernel
time
skipabi=true skipmodule=true no_dumpfile=yes fakeroot debian/rules
binary-i7
– Pulizia di
quello che non serve più e, infine, diamo il comando per
l’installazione del nuovo kernel. 
cd
..
rm
linux

rm
-rf linux-3.3.1

sudo dpkg -i
linux-image-3.3.1-030301-i7_3.3.1-030301.201204021435_i386.deb
linux-headers-3.3.1-030301-i7_3.3.1-030301.201204021435_i386.deb
linux-headers-3.3.1-030301_3.3.1-030301.201204021435_all.deb

Riavviamo
per utilizzare il nuovo Kernel.

Ho verificato la guida su di una macchina virtuale e non ho riscontrato problematiche, attendo i vostri feedback. A presto.