lf consiglia

21 maggio 2012

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

-

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 trovarePreemption Model ...

Questa voce determina come la vostra CPU sidedicheràalla gestione dei vari compiti/programmi in esecuzione nel vostro sistema unitamente alla voceTimer frequency.... È possibile privilegiare una più rapida risposta del sistema a scapito però dei tempi di esecuzione reali dei vari processi. Consiglio vivamente di lasciareDesktop.
5 - Scorrete tutte le voci in basso fino a trovareTimer 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.
6Tornate al menù precedente Selezionando la voceExitpresente nella parte bassa dello schermo
7 Selezionate “Networking support ...
8SelezionateNetworking options …”
9 Scorrete tutte le voci in basso fino a trovareThe IPv6 protocol, pigiate sulla vostra tastiera la letteraM(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 voceExitpresente nella parte bassa dello schermo
11 - Tornate al menù precedente Selezionando la voceExitpresente nella parte bassa dello schermo
10 - Usciamo dal menù sempre Selezionando la voceExitpresente nella parte bassa dello schermo
12RispondiamoYesalla domanda che ci verrà posta all'uscita, salveremo le modifiche apportate alle configurazione base.
RispondeteNalla 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... ;-)