Tecnologia e non solo

luglio 10, 2007

Estate: kernel alla vaniglia.

Filed under: Attrezzi,Debian,Edgy,Feisty,Guida pericolosa,Sid — telperion @ 4:33 pm

Kernel alla vaniglia.

Pacchetti necessari
Ubuntu / Debian

sudo apt-get install build-essential bin86 kernel-package libncurses5 libncurses5-dev fakeroot module-init-tools



kernel.org

Scarichiamo il kernel:

esempio 2.6.22 da kernel.org: linux-2.6.22.tar.bz2

Copiamo l’archivio in /usr/src

sudo cp linux-2.6.22.tar.bz2 /usr/src

andiamo nella cartella /usr/src

cd /usr/src

scompattiamo il file

sudo tar jxf linux-2.6.22.tar.bz2

e creiamo i link simbolico “linux”

sudo ln -sf linux-2.6.22 linux

poi

cd linux

Eventualmente applichiamo patch scaricate e copiate in /usr/src
esempio:

sudo bzcat ../patch-2.6.22.1.bz2 | patch -p1

Nota: le patch si applicano sempre alla versione base del kernel
in questo caso linux-2.6.22
Per qualche oscuro motivo se applicate patch in /usr/src da problemi,
quindi meglio scompattare il kernel in una cartella nella home,
applicare le patch e poi spostare la cartella risultante in /usr/src.

Ora essendo un kernel nuovo possiamo
per iniziare configurarlo con i settaggi del kernel attuale

sudo make oldconfig

a tutte le opzioni nuove ci verrà chiesto come comportarsi.
Premete invio sempre, accetta la configurazione default (consigliato).

Al termine verifcate / configurate le opzioni

sudo make menuconfig

———————————————————————————–

se avete una scheda Nvidia dovete disabilitare
paravirtualization in ‘processor features’
altrimenti i driver non si compilano.
paravirtualisation
Nota: su Debian abilitato di default,
su Ubuntu disabilitato di default se usate oldconfig.

nvidia paravirtualisation error

Altro metodo per avere la paravirtualizzazione attiva qui.
warning!
(Metodo non testato, a vs rischio, consigliata la ricompilazione kernel, anche perchè credo,
la patch eluda la GPL del modulo paravirtualisation e quindi sia “illegale”)

Nota su Ubuntu dovete ricompilare il kernel attivando paravirtualisation
poi usare i driver “patchati” o “patcharveli” da voi.

———————————————————————————–

Settate se volete il tipo di CPU
SMP on off, supporto alla memoria e quant’altro.

Disabilitate il kernel debug
che specialmente con Ubuntu può creare problemi
e comunque a noi che non sviluppiamo il kernel non serve.

Uscite e salvate.

sudo make-kpkg --initrd --append_to_version -mc1 kernel_image kernel_headers

dove –append_to_version -siglavostrokernel nel mio caso -mc1

vi creerà dopo un bel pò di tempo > 30 minuti
nella cartella /usr/src i pacchetti

linux-headers-2.6.22-mc1_2.6.22-mc1-10.00.Custom_i386.deb
linux-image-2.6.22-mc1_2.6.22-mc1-10.00.Custom_i386.deb

Facciamo pulizia.
Rimuoviamo il link simbolico e la cartella linux-2.6.22
che occupa un sacco di spazio

cd /usr/src
sudo rm linux
sudo rm -r linux-2.6.22

Installiamo i 2 pacchetti
prima image poi headers

sudo dpkg -i linux-image-2.6.22-mc1_2.6.22-mc1-10.00.Custom_i386.deb linux-headers-2.6.22-mc1_2.6.22-mc1-10.00.Custom_i386.deb

vedrete che sono interrotti alcuni link simbolici (perchè? boh) che andremo a ripristinare,
in modo da avere gli headers necessari per compilare qualsiasi cosa. (vedi Nota 1)

andiamo nella cartella

cd /lib/modules/2.6.22-mc1

dove ci sono tutti i moduli del kernel

cancelliamo i link simbolici interrotti

sudo rm build source

e creiamo quello corretto che punta agli headers che abbiamo installato

sudo ln -sf /usr/src/linux-headers-2.6.22-mc1 build

Nota 1:
in realtà il link simbolico è interrotto
solo installando i pacchetti prima uno poi l’altro.
Se installati con lo stesso comando, come nell’esempio,
il link simbolico build è corretto. Meglio verificare comunque.

A posto.

Manca solo il driver Nvidia per questo kernel.

Avendo gia il NVIDIA-Linux-x86-100.14.11-pkg1.run installato,
è sufficiente compilare all’interno dell’ambiente grafico attuale,
solamente il modulo per il nuovo kernel:

sudo sh NVIDIA-Linux-x86-100.14.11-pkg1.run -K --kernel-name=2.6.22-mc1

Finito.

Riavviamo
nel menù del grub
scegliamo la nuova voce
ed eccoci nel nuovo kernel.

kernel vanilla

Le cose nuove (per i “kernel fanatics”)
http://kernelnewbies.org/Linux_2_6_22#head-b8a3a2eee0cd6ebd97e500bdcd941f08a24e622d

warning!

Attenzione.
Questi sono appunti personali
che vanno bene per me.

warning!

Non si compila nessun modulo extra,
per altri moduli sono necessari passaggi
con module-assistants e magari anche firmware,
un “mondo difficile” nel quale non mi avventuro.

warning!

Non fate nulla che sia oltre le vostre possibilità.
Potrebbe essere traumatico.

warning!

Don’t tray at home.

🙂

Annunci

27 commenti

  1. se avete una scheda Nvidia dovete disabilitare
    paravirtualization in ‘processor features’
    altrimenti i driver non si compilano.

    In realtà con questo kernel non ho provato
    se invece si compilano.

    Per 3 motivi,
    non avevo voglia di ricompilarlo
    una seconda volta in caso di insuccesso,
    la mia cpu non supporta la paravirtualizzazione,
    e infine non devo virtualizzare nulla.

    🙂

    Commento di telperion — luglio 10, 2007 @ 5:13 pm

  2. ottimo. io aggiungo anche kolivas e a volte provo anche altre patch.
    mi sono avventurato da qualche mese nello sfrucugliamento del kernel e pian piano arrivo a farmi il mio bel monolitico su misura 😀

    Commento di LuNa — luglio 10, 2007 @ 9:30 pm

  3. @telperion
    hai attivato lo SLUB in questo kernel? Se si come ti sembra ? Dovrebbe essere più performante del vecchio SLAB ma forse sono condizionato dalle troppe letture quindi cerco constatazioni personali. 🙂

    Commento di imu — luglio 10, 2007 @ 11:07 pm

  4. @imu: ho fatto oldconfig ho messo “K7 cpu”
    tolto SMP visto che non ho dualcore o HT e nulla più.
    Il resto è come settato sui k7 di Debian (su sid)
    o come il generic di Ubuntu (su edgy)
    SLUB e SLAB per me possono essere cugini di Qui Quo Qua LOL,
    (non ho idea di cosa siano, mo cerco un po).
    L’unico incremento di prestazioni l’ho visto (con benchmark)
    su sid passando da 2.6.20 a 2.6.21,
    poi più o meno sono tutti sugli stessi livelli.

    Commento di telperion — luglio 10, 2007 @ 11:32 pm

  5. @imu: SLUB e SLAB visto. Non saprei questione di lana caprina.
    Non sono un kernel fanatic, lo compilo solo perchè devo disattivare paravirtualization per i driver Nvidia, allora a quel punto compilo l’ultimo. Non amo cose troppo rischiose che possano compromettere i dati su HD per guadagnare un microsecondo.
    A volte semplicemente sostituire un vecchio hd da 80GB con un nuovo 300 GB fa schizzare le performance molto più che 50 ottimizzazioni kernel.
    Capisco ovviamente, il divertimento per gli appassionati.

    Commento di telperion — luglio 10, 2007 @ 11:40 pm

  6. @Luna Kolivas non le fà piu le patch. Si è “rotto”.

    Commento di telperion — luglio 10, 2007 @ 11:41 pm

  7. sai che il link simbolico a /usr/src/linux non l’ho mai capito…mai fatto eppure non succede nulla
    😀

    Commento di divilinux — luglio 11, 2007 @ 7:46 am

  8. @divilinux: ha scopo didattico.
    Serve ad imparare a fare ed usare i link simbolici. 🙂

    Commento di telperion — luglio 11, 2007 @ 11:48 am

  9. @imu: ne ho compilato (per la scienza 🙂 ) anche uno con SLUB:
    risultati al benchmark Dhrystone 2 without register variables
    SLAB (default) : AVERAGE 252,2
    SLUB (new) : AVERAGE 251,2
    Assolutamente identici.
    Mah.

    Commento di telperion — luglio 11, 2007 @ 5:02 pm

  10. @telperion: como no, sembra proprio invece che parte delle modifiche di con siano integrate nel 2.6.22 ..

    Commento di LuNa — luglio 13, 2007 @ 12:15 pm

  11. @Luna: intendi

    SLUB The slab allocator is a object-caching kernel memory allocator … ?

    Io non ci trovo nessuna differenza apprezzabile, quindi (pur usandolo tuttora per test) a che pro “rischiare” con una tecnologia non testata

    … it won’t completely replace the current slab allocator until more exposure and testing has been done, hence it’s not recommended to use it in production systems …

    a fronte di “nessun” vantaggio?
    Come compilo il 2.6.22.1 lo tolgo.

    Commento di telperion — luglio 13, 2007 @ 2:33 pm

  12. lol … speravo di accendere qualcosa in più … del genere kolivas si *incazza* e il suo lavoro arriva in main line *non sono bravo* a accendere questo tipo di discussioni 😛

    Commento di LuNa — luglio 13, 2007 @ 8:54 pm

  13. @telperion: luna@amd64:~$ uname -a
    Linux amd64 2.6.22.1-os2007 #1 SMP Fri Jul 13 12:49:14 CEST 2007 i686 GNU/Linux
    come mamma l’ha fatto 😀 scusa il doppio post 😀

    Commento di LuNa — luglio 13, 2007 @ 8:55 pm

  14. @Luna: ah tu dicevi le patch kolivas,
    io dicevo SLUB/SLAB.

    No allora, Kolivas non le fà più le patch.

    Vedi ad esempio l’annuncio dato da imu.
    Ne hanno parlato un pò tutti.

    Commento di telperion — luglio 13, 2007 @ 9:02 pm

  15. @telperion: http://kerneltrap.org/node/11737 ecco qui ne parlano. mi era sfuggita la cosa, cioè non so perchè avevo capito che qualcosa nel 23 (non nel 22 come ho scritto) sarebbe entrato. in effetti è solo un grazie arrivederci 😐 … incollizzo la parte interessante:

    add credits for recent major scheduler contributions:

    Con Kolivas, for pioneering the fair-scheduling approach
    Peter Williams, for smpnice
    Mike Galbraith, for interactivity tuning of CFS
    Srivatsa Vaddagiri, for group scheduling enhancements

    Commento di LuNa — luglio 14, 2007 @ 3:28 am

  16. […] Ricompilare il kernel senza quella voce attiva. […]

    Pingback di Nvidia Driver con Linux kernel 2.6.2x con paravirtualizzazione attiva! « O.S. Revolution — luglio 18, 2007 @ 3:07 am

  17. […] per Debian Sid con kernel 2.6.20 o superiore è necessario ricompilare il kernel con la voce paravirtualization in ‘processor features’ […]

    Pingback di NNN - uN’altra guida per iNstallare i driver Nvidia (Debian Ubuntu) « Tecnologia e non solo — luglio 19, 2007 @ 11:44 pm

  18. Aggiornamento parvirtualizzazione e Nvidia

    col kernel-image debian 2.6.22-1
    che nel config ha:
    /boot/config-2.6.22-1-k7
    CONFIG_PARAVIRT=y

    e i driver Nvidia si compilano ora senza problemi

    Commento di telperion — luglio 31, 2007 @ 3:45 pm

  19. […] il kernel 2.6.23-1 con il metodo già visto nelle guide pericolose, ho usato l’oldconfig del 2.6.22-14-generic come partenza rispondendo […]

    Pingback di Il gibbone alla vaniglia. « Tecnologia e non solo — ottobre 13, 2007 @ 8:27 pm

  20. @ telperion:
    ok kernel 2.6.23.10 “avvanigliato” , configurato per le mie possibilita’, quindi cpu, freq desktop a 1000 e kernel debug tolto….. driver nvidia messi senza problema stavolta e senza uscire dal serverX (mercie mercie)….. tant’è qualcosa storto è andato, riparto e niente audio :O poi scoperto che il modulo SND_HDA_INTEL=is not set non ho capito bene perchè ma tutto è bene quel che finisce bene 🙂 ancora grazie 😉
    saluti

    Commento di ricochet — dicembre 18, 2007 @ 10:30 pm

  21. @ricochet:
    bene, come vedi un passetto per volta e si riesce a fare tutto.

    Commento di telperion — dicembre 18, 2007 @ 11:40 pm

  22. @telperion
    per compilare un kernel vanilla su archlinux, la procedura è identica? oppure quali sono i passi che cambiano?
    Grazie.

    Commento di trix — gennaio 4, 2008 @ 4:15 pm

  23. trix su archilux è un casino
    puoi usare questo PKGBUILD
    http://tinyurl.com/2tp2gp

    come base

    aggiungendo dopo
    yes "" | make config
    la riga
    make menuconfig

    che ti permette di cambiare le impostazioni.

    Comunque è un’operazione più complessa per la gestione dei file config, visto che usa di default quello nella cartella del PKGBUILD che ovviamente bisogna sostituire col .config attuale e poi dopo averlo modificato con il .config della subdir src, copiando li e rinominandolo config.

    Esempio per iniziare bisogna scompattare l’achivio dell’AUR,
    entrare nella cartella kernel26vanilla creata, modificare il PKGBUILD come detto sopra
    poi fare
    zcat /proc/config.gz > config
    che imposta il file config con la nostra configurazione attuale (i686)
    ricordandovi di cambiare nel file config la riga

    CONFIG_LOCALVERSION="-ARCH"

    in

    CONFIG_LOCALVERSION="-vanilla"

    nel caso stiate usando un kernel26,
    poi fare

    mkepkg -g

    che scarica tutto e genera i md5sums, andare poi a sostituire i md5sums nel PKGBUILD e fare infine

    mkepkg

    dove ci verrà proposto il menuconfig per configurare il kernel
    quindi si compilerà il pacchetto.

    Bisogna inoltre fare pacchetti dei driver modificando i PKGBUILD e i file install cambiando il nome (es nvidia e nvidia-vanilla) kernel dipendente e versione del kernel, in modo da poter usare entrambi i kernel con i rispettivi driver.

    Insomma è abbastanza più complesso.
    PKGBUILD per i soft è facilissimo, per il kernel un po meno.
    Anche se volendo puoi sempre compilarlo a mano senza pacchetti,
    vedi il wiki di archlinux.

    http://wiki.archlinux.org/index.php/Special:Search?search=kernel&go=Go

    Commento di telperion — gennaio 4, 2008 @ 4:38 pm

  24. @telperion
    grazie mille per le delucidazioni, adesso mi documenterò un pò e poi mi metterò all’opera.

    Commento di trix — gennaio 4, 2008 @ 9:31 pm

  25. […] e Nvidia 169-09 Archiviato in: Varie — telperion @ 7:02 pm Compilando il kernel 2.6.24 alla debian come sempre, nel compilare ed installare il modulo dal pacchetto NVIDIA*.run sulla mia Sid, si […]

    Pingback di Kernel 2.6.24 e Nvidia 169-09 « Tecnologia e non solo — gennaio 27, 2008 @ 7:02 pm

  26. […] Come al solito dal kernel 2.6.24 make-kpkg […]

    Pingback di Hardy Heron e i kernel custom (2.6.25) « Tecnologia e non solo — aprile 22, 2008 @ 8:05 pm

  27. […] pm Come già segnalato la generazione dei pacchetti deb degli headers del kernel con i tools di kernel-package, già dal kernel 2.6.24 e successivi, causa riunificazione architetture x86-32/64, produce […]

    Pingback di Pacchetti deb linux-headers custom: come “fixarli” « Tecnologia e non solo — maggio 11, 2008 @ 3:15 pm


RSS feed for comments on this post.

%d blogger hanno fatto clic su Mi Piace per questo: