Kernel Patching & Recompiling-4

Ecco la quarta parte della guida su come patchare e ricompilare il kernel 2.6.21. Ripassiamo i concetti…

  • Stiamo facendo un lavoro per Ubuntu, ma i comandi per Debian sono quasi identici.
  • Abbiamo già fatto:
    1. elencato i comandi per sapere quale hardware c’è nel nostro computer » primo articolo
    2. installato i pacchetti per la compilazione del kernel in Ubuntu (per i pacchetti Debian vedere Come ricompilare il kernel su Debian (guida di DebianClan)) » primo articolo
    3. scaricato da kernel.org l’ultimo kernel “vanilla” disponibile ed estratto in /usr/src » primo articolo
    4. applicato la patch di Con kolivas e fatto un link simbolico /usr/src/linux alla directory di smanettamento » secondo articolo
    5. preso il vecchio file di configurazione e adattato al nuovo kernel tramite oldconfig » terzo articolo

Oggi faremo la vera e propria ricompilazione del kernel tramite un’interfaccia grafica di KDE o Gnome.

Pronti?

SESTO PASSO: Compilare il nuovo kernel

Modificheremo il file di configurazione .config in base alle nostre esigenze.

Ci metteremo parecchio tempo, e probabilmente non funzionerà tutto al primo colpo. Il percorso di purificazione prevede che a un certo punto finiate a urlare istericamente contro lo schermo strappandovi i capelli.

Se non avete tempo a disposizione o avete già il cervello in pappa, è meglio che vi fermiate qui e riprendiate quando potrete buttare via un’oretta/due o avrete assunto ipervitaminizzanti.

Potete anche fermarvi quando vi sembrerà di aver ottimizzato a sufficienza il kernel, senza finire tutto questo articolo.

Iniziamo a spostarci nella nostra directory di lavoro/smanettamento:
cd /usr/src/linux

Ora facciamo partire la ricompilazione vera e propria.
Esistono due vie: make menuconfig, per un’interfaccia pseudo-grafica basata su ncurses…

oppure per gli utenti di KDE.make xconfig per un’interfaccia grafica che sfrutta le librerie Qt…

gli utenti Gnome invece useranno make gconfig (screenshot preso da internet).

Io, newbie e utente KDE, userò xconfig. Non fatelo partire da root o con sudo!
make xconfig
Ora, prima di iniziare spieghiamo come funziona xconfig: accanto a una voce di configurazione, c’è una checkbox. Essa può essere:

  • deselezionata:
  • selezionata da compilare come modulo esterno al kernel:
  • selezionata da compilare nel kernel:
  • qualche volta invece si incontra un numero tra parentesi: bisognerà cliccare sulla voce e inserire il numero appropriato.

I moduli esterni al kernel vengono caricati (solitamente) all’avvio della macchina: il loro vantaggio è che il kernel può rimanere snello anche se deve girare sul maggior numero di hardware possibile (ad esempio il kernel standard Ubuntu).

I moduli compilati internamente al kernel ovviamente garantiscono maggiori prestazioni (spesso però non si nota) , ma lo appesantiscono.

Conclusione: solo i moduli utili vanno compilati nel kernel, invece quelli che “sì, lo uso ma una volta all’anno” compilateli come modulo.
Infine i moduli palesemente inutili (gestione della batteria su un desktop sprovvisto di batteria) vanno deselezionati senza pietà! No mercy!

PROCESSORE

Vediamo come ottimizzare il kernel per il NOSTRO processore: questo è il passo più godurioso, tutto il resto è solo uno sterminio di moduli inutili. Alcune voci vi sembreranno familiari perché le abbiamo già viste con make oldconfig.

Scopo: creare un kernel che “parli” esattamente lo stesso linguaggio di un Pentium4 non Hyper-Threading. Se avete questo adesivo sul pc, è lui!

Se non vi fidate dell’adesivo, fidatevi di Linux: vi può dire lui se avete un Pentium4 o no (e allora non dovrete seguire le mie istruzioni).
Aprite una nuova Konsole/Terminale e digitate
cat /proc/cpuinfo

Il vostro pinguino vi risponderà una cosa del genere:
luca@DarkKnight:~$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 2
model name : Intel(R) Pentium(R) 4 CPU 1.80GHz
stepping : 7
cpu MHz : 1799.209
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe up cid xtpr
bogomips : 3601.87
clflush size : 64

Bene, io sono sicuro che il mio è un Pentium4 originale e non devo andare a incenerire un venditore disonesto col lanciafiamme (lo farei comunque, noi magari non sappiamo le loro colpe ma loro sì!).

Unico dubbio: nelle mie flags c’è la flag ht! Eppure su Wikipedia c’è chiaramente scritto che il mio processore non lo supporta… Dubbio amletico, abilitare o non abilitare il supporto nel kernel?

Beh, configuriamo vah.

Clicchiamo su “Processor Type and Features” nella colonna normalmente a destra. Compariranno le opzioni a sinistra in alto e una breve spiegazione per ciascuna in basso:

  • Tickless System (Dynamic Ticks): come già detto nell’articolo precedente, io voglio provarlo. Abilitatelo se siete su un laptop o il consumo energetico vi preoccupa (ad esempio se vostra moglie passa tutto il tempo su internet a farvi le corna, almeno potete ridurre la bolletta di qualche centesimo). Altrimenti deselezionate.
  • High Resolution Timer Support: deselezionate.
  • Symmetric multi-processing support: Se avete UN SOLO processore Pentium4 non Hyper-Threading (manca la flag HT in cpuinfo) deselezionate. Serve solo a far andare in parallelo più processori (anche virtuali, come Pentium4 HT, Core Duo….).
  • Subarchitecture Type:
    • PC-compatible: selezionate.
    • Tutti gli altri (AMD Elan, Voyager (NCR), … Support for Unisys ES7000 IA32 series): saranno deselezionati appena avrete scelto PC-compatible.
  • Paravirtualization support (EXPERIMENTAL): deselezionate.
  • Processor family:
    • Pentium-4/Celeron(P4-based)/Pentium-4 M/older Xeon: selezionate.
    • Tutti gli altri verranno deselezionati appena avrete scelto… quella cosa lunga qui sopra.
  • Generic x86 support: Leggete qui e deselezionate.
  • HPET Timer Support: Leggete qui e selezionate.
  • (8) Maximum number of CPUs: cambiate 8 in 2.
  • SMT (Hyperthreading) scheduler support: deselezionate (serve per i Pentium4 HT).
  • Multi-core scheduler support: deselezionate.
  • Preemption Model:
    • Voluntary Kernel Preemption (Desktop): Leggete qui e selezionate.
    • Tutti gli altri verranno deselezionati appena avrete scelto… quella cosa lunga qui sopra.
  • Preempt The Big Kernel Lock: Leggete qui e selezionate.
  • Machine Check Exception: selezionate.
  • Toshiba Laptop support: deselezionate.
  • Dell Laptop support: deselezionate.
  • Enable X86 board specific fixups for reboot: selezionate (potete deselezionarlo a vostro rischio e pericolo: se siete sfigati e avete una “particolare combinazione di hardware e BIOS” al riavvio vi andrà il pc in stallo!)
  • /dev/cpu/microcode – Intel IA32 CPU microcode support: deselezionate se non avete in mente di aggiornare il firmware del Pentium (o non avete capito cosa ho appena detto).
  • /dev/cpu/*/msr – Model-specific register support: selezionate (modulo).
  • /dev/cpu/*/cpuid – CPU information support: selezionate (modulo).
  • High Memory Support:
    • 4GB: selezionate se avete tra 1 e 4GB di RAM.
    • Tutti gli altri verranno deselezionati appena avrete scelto… quella cosa “lunga” qui sopra.
  • Memory split:
    • Default 896MB lowmem (3G/1G user/kernel split): selezionate.
    • Tutti gli altri verranno deselezionati appena avrete scelto… quella cosa lunga qui sopra. Non vanno selezionati se non si è assolutamente sicuri di cosa si stia facendo.
  • Memory model:
    • 4GB: selezionate se avete tra 1 e 4GB di RAM.
    • Tutti gli altri verranno deselezionati appena avrete scelto… quella cosa “lunga” qui sopra.
  • Memory model:
    • Flat Memory: selezionate.
    • Tutti gli altri verranno deselezionati appena avrete scelto… quella cosa “lunga” qui sopra.
  • 64 bit Memory and IO resources (EXPERIMENTAL): deselezionate.
  • Allocate 3rd-level pagetables from highmem: selezionate.
  • Math emulation: deselezionate se avete un Pentium Selezionarlo non farà danni, a parte un kernel più grande di 66KB.
  • MTRR (Memory Type Range Register) support: selezionate.
  • Boot from EFI support: deselezionate.
  • Enable kernel irq balancing: selezionate.
  • Enable seccomp to safely compute untrusted bytecode: selezionate.
  • Timer frequency:
    • 1000 HZ: selezionate.
    • Tutti gli altri verranno deselezionati appena avrete scelto 1000 HZ (che è lo standard per i desktop, valori + bassi sono adatti per laptop (1000, 300, 250 HZ) e server (250, 100 HZ), ma il computer potrebbe sembrare meno pronto nella risposta.
  • kexec system call: selezionate se vorrete far partire un altro kernel senza fare il reboot. Altrimenti deselezionate.
  • kernel crash dumps (EXPERIMENTAL): selezionate se avete selezionato il precedente E vorrete sapere cosa sarà andato storto quando kexec fallirà miseramente. Se non avete neppure selezionato kexec al punto precedente, deselezionate.
  • Build a relocatable kernel(EXPERIMENTAL): selezionate se avete selezionato i precedenti 2, altrimenti deselezionate. Consente per esempio di avere un kernel “di scorta” da eseguire senza reboot del pc se il kernel principale fallisce.
  • Alignment value to which kernel should be aligned: non modificate, dovrebbe essere 0x100000.
  • Support for hot-pluggable CPUs (EXPERIMENTAL): deselezionate.
  • Compat VDSO support: deselezionate se glibc >= 2.3.3, io ho la 2.5 (ubuntu Feisty).

Abbiamo finito col processore: ora il kernel girerà al massimo delle possibilità sul nostro Pentium4.

FIRMWARE

È la volta dei “Firmware Drivers“: cliccate nella colonna di destra, subito sotto “Processor type and features”.

  • BIOS Enhanced Disk Drive calls determine boot disk: deselezionate.
  • BIOS update support for DELL systems via sysfs: deselezionate.
  • Dell Systems Management Base Driver: deselezionate.

Fin troppo facile…

RISPARMIO ENERGETICO

Selezionate “Power Management Options (ACPI, APM)“:

  • Power Management support: selezionate, è vitale sui laptop mentre sui desktop è solo qualche watt in meno.
  • Legacy Power Management API (DEPRECATED): deselezionate.
  • Power Management Debug Support: deselezionate.
  • Driver model /sys/devices/…/power/state files (DEPRECATED): deselezionate.
  • Software Suspend: selezionate.
    • Default resume partition: non modificatelo.
  • ACPI (Advanced Configuration and Power Interface) Support:
    • ACPI Support: selezionate.
      • Sleep States: deselezionate.
        • /proc/acpi/sleep (deprecated): deselezionate.
      • Procfs interface (deprecated): deselezionate.
      • AC Adapter: deselezionate.
      • Battery: deselezionate.
      • Button: selezionate (modulo).
      • Video: selezionate (modulo).
      • Fan: selezionate (modulo).
      • Dock: deselezionate.
      • Processor: selezionate.
        • Thermal Zone: selezionate.
      • Tutti gli altri: deselezionate.
  • APM (Advanced Power Management) BIOS support: deselezionate.

Che lavoro lungo :) ancora un menu da configurare e avremo finito le cose importanti!

CPU FREQUENCY SCALING

Anche questo serve a far consumare meno watt alla CPU: se non c’è bisogno di fare un lavoro urgente, si può anche andare lemme lemme e abbassare la frequenza. Il consumo (dinamico) infatti è proporzionale alla frequenza di lavoro. Purtroppo la Intel con il Pentium4 non ha certo dimostrato di avere a cuore i bassi consumi…

Clicchiamo su “CPU Frequency scaling“…

  • CPU Frequency scaling: selezionate.
    • Enable CPUfreq debugging: deselezionate.
    • CPU frequency translation statistics: deselezionate se non siete interessati a sapere a che frequenza sta girando il vostro porocessore.
    • Default CPUFreq governor:
      • performance: selezionate.
      • userspace: deselezionate.
    • ‘performance’ governor: selezionate (dovrebbe essere già selezionato di default).
    • ‘userspace’ governor for userspace frequency scaling: selezionate.
    • ‘ondemand’ cpufreq policy governor: selezionate.
    • ‘conservative’ cpufreq governor: deselezionate. È più utile ai laptop che a non a quel moloch divoratore di watt che abbiamo noi.
    • Tutto il resto: deselezionate tranne il seguente…
    • Intel Pentium 4 clock modulation: selezionate.

Anche per oggi abbiamo finito!

Ora come ora abbiamo ottenuto un kernel in grado di girare “più velocemente” su un Pentium4.
Ovviamente non potrà più essere usato su un AMD o vattelapesca :)

Non credo sia possibile farlo girare ancor più velocemente (accetto consigli, ammetto che su qualche voce ero in dubbio se rispondere N e l’ho lasciata) ma sicuramente è possibile togliergli tutta la roba inutile per supportare hardware non nel mio pc (se io ho una nVidia me ne frega poco del supporto alle Ati).

Snellendo il kernel il computer si avvierà in una manciata di secondi… altro che windows :). Lo sterminio dei moduli inutili lo vedremo alla prossima puntata! Per ora salvate!!! (cliccate sull’icona a forma di floppy disk)

5 thoughts on “Kernel Patching & Recompiling-4

  1. Ailiin scrive:

    Oddea, ma che è! XD
    Cerco il tuo blog e leggo ste cose incomprensibili! Mi sembrava troppo strano che tu facessi un blog normale XD
    Tanti tanti baci cucciolotto!

  2. radeon scrive:

    Guida molto utile !

  3. cucumiao scrive:

    ciao ho trovato la tua guida molto utile anche se ho dovuto cambiare qualcosa perchè io ho un dualcore centrino. volevo sapere se la continuavi con il resto della configurazione
    bravo

  4. sevencapitalsins scrive:

    La guida alla ricompilazione del kernel per il momento è ferma: vacanze, impegni di lavoro e tesi mi hanno fatto sospendere tutto ciò che riguarda Linux… mi spiace ma non ho idea di riprendere in mano il tutto prima di un paio di mesi.

  5. claudio scrive:

    ragazziiiiii chi mi aiuta a patchare il kernel??

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: