Kernel 3.4 x64 Core i3 / i5 / i7 – Guida alla compilazione

74
114

Kernel 3.4 x64 Corei3 / i5 / i7
La tanto attesa versione 3.4 è finalmente tra noi.
Le novità sono davvero tante e alcune veramente particolari, come già anticipato da Roberto.
Una maggiore integrazione con le ultime architetture Intel (Sandy Bridge ed Ivy Bridge) e dei miglioramenti nella gestione dei consumi energetici; oltre all’introduzione di nuovi driver per la gestione di diverse periferiche,
tra le quali le schede video della serie Radeon HD 7000 di AMD e la APU Trinity sono alcune delle novità che dovrebbero far felice più di qualcuno.
Ho pensato di aggiornare la mia precedente guida per la compilazione ed ottimizzazione del kernel su
Ubuntu a 64 bit e derivate, per accontentare quanti di voi vorranno cimentarsi nella compilazione del nuovo kernel.
Ho avuto modo già di illustravi, nei precedenti post, i vantaggi derivanti da una compilazione del kernel con ottimizzazione relativa al tipo di processore.

Non voglio tediarvi ulteriormente…

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 le 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.4

cd ~/Kernel_3.4
– Download del kernel e
delle patch.


wget
-c
http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.4.tar.bz2
– Attendete il termine
del download prima i dare il comando successivo (per ogni singolo
comando).

wget -c
http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.4-precise/0001-base-packaging.patch

wget -c
http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.4-precise/0002-debian-changelog.patch

wget -c
http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.4-precise/0003-default-configs.patch
– Scompattazione
Kernel, creazione collegamento simbolico, accesso alla cartella.


tar xjvf linux-3.4.tar.bz2

ln -s linux-3.4 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/amd64/config.flavour.generic
debian.master/config/amd64/config.flavour.i7

cp tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.8 tools/hv/hv_kvp_daemon.8

– 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, SOLO ALLA SECONDA
RICHIESTA DOVETE RISPONDERE
AFFERMATIVAMENTE.


fakeroot
debian/rules
editconfigs

Rispondete “N” alla prima domanda, “Y” alla seconda.
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,
su di 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
10

Usciamo
dal
menù
sempre
Selezionando
la
voce
“Exit”
presente
nella
parte
bassa
dello
schermo
12
– Rispondiamo
“Yes”
alla
domanda
che
ci
verrà
posta
all’uscita,
salveremo
le
modifiche
apportate
alle
configurazione
base.
Rispondete
“N”
alla
successive
domanda
presenti
a
schermo.

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


cp debian.master/abi/3.2.0-24.37/amd64/generic
debian.master/abi/3.2.0-24.37/amd64/i7

cp
debian.master/abi/3.2.0-24.37/amd64/generic.modules
debian.master/abi/3.2.0-24.37/amd64/i7.modules

sed -i s/getall amd64 generic
virtual/getall amd64 generic virtual i7/g
debian.master/etc/getabis

sed -i s/= generic virtual/= generic
virtual i7/g debian.master/rules.d/amd64.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

Terminata
la
compilazione
saliamo di
un livello
nella
struttura
delle
directory
create,
ripuliamo
quello che
non serve
più e,
infine,
diamo il
comando per
l’installazione
del nuovo
kernel.

cd
..

rm
linux

rm
-rf linux-3.4

sudo dpkg -i linux-image-3.4.0-030400-i7_3.4.0-030400.201205210521_amd64.deb linux-headers-3.4.0-030400-i7_3.4.0-030400.201205210521_amd64.deb linux-headers-3.4.0-030400_3.4.0-030400.201205210521_all.deb


Riavviamo
per utilizzare il nuovo Kernel.

Per rimuovere il nuovo kernel Linux 3.4.0 una volta installato, basta digitare da terminale:

sudo apt-get purge linux-image-3.4.0-030400-i7 linux-headers-3.4.0-030400-i7
linux-headers-3.4.0-030400

E riavviamo.

In caso di problemi con schede grafiche nVidia ecco una soluzione, avviate il terminale e digitate:

cd /usr/src/linux-headers-3.4.0-030400-i7/arch/x86/include

sudo cp -v generated/asm/unistd* ./asm

Attendo i vostri feedback, buon lavoro… 😉