Repository 32bit  Forum
Repository 64bit  Wiki

Compilazione e ricompilazione Kernel su Slackware: differenze tra le versioni

Da Slacky.eu.
Riga 90: Riga 90:
= Ricompilazione Kernel Serie 2.4.xx: =
= Ricompilazione Kernel Serie 2.4.xx: =
  +
  +
Se non avete la necessità di compilare un nuovo Kernel e volete solo apportare delle modifiche, magari di snellimento o di ottimizzazione dovete avere i sorgenti regolarmente installati in /usr/src, eventualmente recuperateli dal CD o da un mirror Slackware (slackware/k/), li potrete installare con il comando:
  +
# installpkg kernel-source-2.4.xx-noarch-x.tgz
  +
prima di procedere fate il backup della vostra /lib/modules/versione-kernel, questa dir viene sovrascritta in fase di installazione dei moduli, e vi assicura dei moduli funzionanti in caso di ripristino
  +
# cd /lib/modules/
  +
# tar cf 2.4.xx.tar 2.4.xx
  +
entrate in /usr/src/linux e preparate l'ambiente
  +
# cd /usr/src/linux
  +
# make mrproper
  +
ora apportate le vostre modifiche usando uno dei tre tool
  +
# make config
  +
# make menuconfig
  +
# make xconfig
  +
i primi due si usano direttamente da shell, meglio make menuconfig che usa ncurses ed è più semplice e intuitivo del primo, make xconfig invece deve essere avviato da X quindi in ambiente grafico
  +
# make menuconfig
  +
scorrete il men fino in fondo e con la funzione Load an Alternate Configuration File caricare il file di configurazione salvato in /boot (config-ide-2.4.33 per esempio) eseguite le modifiche e salvate la nuova configurazione usando la funzione Save Configuration to an Alternate File così da non sovrascrivere il config funzionante. Eventualmente per non fare la ricerca del file config invece di usare make mrproper usate make clean che elimina la maggior parte dei files ma non il config. Terminate le modifiche, uscite con < Exit > e salvate la configurazione. Create la struttura delle dipendenze e rimuovete i file temporanei e di debug
  +
# make dep
  +
# make clean
  +
create il Kernel
  +
# make -j5 bzImage
  +
vi troverete il Kernel pronto in /usr/scr/linux/arch/i386/boot. Compilate e installate i moduli
  +
# make -j5 modules
  +
# make modules_install
  +
i moduli saranno reinstallati regolarmente in /lib/modules/versione-kernel.<br>
  +
Siete ancora in /usr/src/linux un ls -a vi mostrerà il contenuto della dir, noterete un file .config e un file System.map questi due file vanno copiati in /boot ma la cosa migliore è rinominarli gestendo una nuova direttiva in LILO
  +
# mv System.map /boot/System.map-2.4.xx-new
  +
# cp .config /boot/config-2.4.xx-new
  +
ora il Kernel
  +
# mv /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.xx-new
  +
ora modificate /etc/lilo.conf, potete prendete come riferimento questo esempio (man lilo per info maggiori)
  +
image = /boot/vmlinuz
  +
root = /dev/hda2
  +
label = Slack_2.4.26
  +
read-only
  +
image = /boot/vmlinuz-2.4.26-new
  +
root = /dev/hda2
  +
label = Slack_2.4.26_New
  +
read-only

Versione delle 21:53, 2 set 2006

Questo articolo spiega con compilare e ricompilare il Kernel Linux su distribuzioni GNU/Linux Slackware

Indice

Introduzione:

Il Kernel è il nucleo del sistema operativo, fornisce le funzionalità di base al nostro sistema, gestisce in primis la memoria delle risorse del sistema e delle periferiche. L'interfaccia utente del Kernel è la shell. Quando un utente usa un programma richiede le risorse al Kernel attraverso le system call e non accede mai direttamente all'hardware (CPU). Quindi il kernel si occupa di gestire il tempo processore la memoria e le comunicazioni organizzandole in processi a seconda della priorità. Il kernel Linux è stato iniziato da Linus Torvalds nel 1991, ed è in continua evoluzione, pensate che uno dei primi kernel (0.10) pesava circa 0.2MB con 10.000 righe di codice ora siamo attorno ai 150MB con pi di 5.000.000 di righe di codice.
Il sito di riferimento http://www.kernel.org. I Kernel recenti hanno sempre di più la capacità di supportare hardware nuovo gestire in modo migliore e ottimale i processi e perché no anche risultare più veloci e stabili, senza contare che a ogni rilascio vengono corretti noiosi bug di sicurezza, fondamentalmente sono questi i motivi principali che ci spingono alla compilazione del nuovo nocciolo. Personalizzazione, adattamento e snellimento sono i principali per quanto riguarda la ricompilazione del kernel solitamente fornito con la nostra distribuzione.

Floppy di avvio:

La prima cosa da fare è creare un floppy di avvio, di solito viene creato in fase di installazione ma spesso i floppy fanno una brutta fine, quindi con mkrescue o makebootdisk create il vostro floppy di emergenza, potete usare anche pkgtool/setup, molto comodo.

Kernel precompilato Slackware:

Nei CD o nei vari Mirror della Slackware nella dir /kernels sono presenti molti Kernel precompilati subito disponibili all'uso, ovviamente dovete avere le idee chiare su quale Kernel usare, quindi supporto all'hardware e esigenze del vostro sistema. Ricordatevi che i Kernel che finiscono con .i sono Kernel IDE e quindi senza supporto SCSI mentre quelli che finiscono con .s includono tutti i supporti IDE e in più anche quelli SCSI. All'interno delle sottodirectory dei vari Kernel troverete questi 3 file:

System.map.gz, che è la mappa per questo kernel
bzImage (o zImage) che è l'immagine per questo kernel
config che è il file di configurazione per questo kernel

normalmente in /boot questi file avranno nomi diversi il System.map sarà System.map-ide-2.4.xx, il config sarà config-ide-2.4.xx l'immagine del Kernel sarà vmlinuz-ide-2.4.xx e tutti quanti avranno un link simbolico:

config -> config-ide-2.4.xx
System.map -> System.map-ide-2.4.xx
vmlinuz -> vmlinuz-ide-2.4.xx

scaricate i 3 file in /tmp e procedete con questi comandi:

# cd /tmp
# rm /boot/config System.map vmlinuz
per rimuovere i link simbolici
# gzip -d System.map.gz | mv System.map /boot/System.map-new | ln -s /boot/System.map-new /boot/System.map
per decomprimere spostare in /boot il file System.map e ricreare il link
# mv bzImage /boot/vmlinuz-new | ln -s /boot/vmlinuz-new /boot/vmlinuz
per spostare il nuovo Kernel in /boot e ricreare il link simbolico vmlinuz
# mv config /boot/config-new | ln -s /boot/config-new /boot/config
per spostare il nuovo config e ricreare il link
# lilo -vper
aggiornare la configurazione

Riavviate e se tutto funziona potete anche eliminare la vecchia immagine del Kernel il System.map e il config.

Compilazione Nuovo Kernel Serie 2.4.xx:

Prima di tutto controllate l'installazione dei programmi di sviluppo della serie D indispensabili in caso di compilazione, potete trovarli nei CD della Slackware, ma con installazione classica sicuramente saranno già presenti nel vostro sistema. Recuperate i sorgenti del Kernel da (http://www.kernel.org/pub/linux/kernel) prelevando il formato tar.bz2 o tar.gz, il bz2 utilizzando una compressione migliore sarà più piccolo e quindi più veloce da trasferire. Scaricate i sorgenti in /usr/src e cancellate il link simbolico linux

# cd /usr/src
# rm linux

decomprimete i sorgenti

# tar xvzf linux-2.4.xx.tar.gz o tar xvjf linux-2.4.xx.tar.bz2

ricreate il link simbolico

# ln -s linux-2.4.xx linux

preparate l'ambiente

# cd linux
# make mrproper

ora potete incominciate la configurazione vera e propria, gli stumenti a disposizione sono:

# make config
# make menuconfig
# make xconfig
# make oldconfig

i primi due si usano direttamente da shell, meglio make menuconfig che usa ncurses ed è più semplice e intuitivo del primo, make xconfig invece deve essere avviato da X quindi in ambiente grafico. Make oldconfig è molto comodo in caso di aggiornamento, e vi chiederà solo le risposte alle nuove domande di configurazione, che si aggiungono di volta in volta alle release, ovviamente dovete avere il file .config presente in /usr/src/linux. Procediamo con la configurazione usando make menuconfig

# make menuconfig

Da qui potrete configurare il Kernel da zero, troverete un esaustivo < Help > che vi aiuterà nella configurazione. Terminate le modifiche uscire con < Exit > e alla domanda "Do you wish to save your new kernel configuration" decidete se salvare la configurazione o ripeterla, in caso affermativo verrà creato in /usr/src/linux il file .config che contiene appunto tutta la configurazione del Kernel. Con versioni di kernel uguale (2.4.22 --> 2.4.26 e non 2.4.xx --> 2.6.xx) potete anche caricare una configurazione nota usando la funzione Load an Alternate Configuration File (la trovate in fondo al men), ripescando il file di configurazione salvato in /boot per esempio... attenzione !! se usate questo metodo dovete salvare il nuovo file di configurazione con la funzione Save Configuration to an Alternate File, questo per non sovrascrivere il config funzionante. Anche in questo caso, terminate le modifiche uscite con < Exit > e salvate la configurazione. Incominciate la compilazione preparando la struttura delle dipendenze

# make dep

rimuovete i file temporanei e di debug

# make clean

dopo potrete creare l'immagine del Kernel

# make -j5 bzImage

potevate usare anche zImage ma ormai si tende a usare questo tipo di algoritmo. Terminato il make bzImage vi troverete il Kernel compilato in /usr/scr/linux/arch/i386/boot, procedete con la compilazione e installazione dei moduli

# make -j5 modules
# make modules_install

i moduli saranno installati regolarmente in /lib/modules/versione-kernel. Siete ancora in /usr/src/linux un ls -a vi mostrerà il contenuto della dir, noterete un file .config e un file System.map questi due file vanno copiati in /boot ma la cosa migliore è rinominarli gestendo una nuova direttiva in LILO

# mv System.map /boot/System.map-2.4.xx
# cp .config /boot/config-2.4.xx

ora il Kernel

# mv /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.xx

adesso modificate /etc/lilo.conf, potete prendete come riferimento questo esempio (man lilo per info maggiori)

image = /boot/vmlinuz
root = /dev/hda2
label = Slack_2.4.22
read-only
image = /boot/vmlinuz-2.4.26
root = /dev/hda2
label = Slack_2.4.26
read-only

volendo potete anche rimuovete i link simbolici che puntano ai vecchi file

# rm /boot/System.map config vmlinuz

e ricreare quelli nuovi che puntano ai nuovi file

# ln -s /boot/System.map-2.4.xx /boot/System.map
# ln -s /boot/config-2.4.xx /boot/config
# ln -s /boot/bzImage-2.4.xx /boot/vmlinuz

in questo modo il Kernel appena compilato sarà quello di default perché la direttiva di lilo punta direttamente al link simbolico vmlinuz. Terminato questo impartite il comando lilo per aggiornare la nuova configurazione

# lilo -v

riavviate il sistema e godetevi il vostro nuovo Kernel.

Ricompilazione Kernel Serie 2.4.xx:

Se non avete la necessità di compilare un nuovo Kernel e volete solo apportare delle modifiche, magari di snellimento o di ottimizzazione dovete avere i sorgenti regolarmente installati in /usr/src, eventualmente recuperateli dal CD o da un mirror Slackware (slackware/k/), li potrete installare con il comando:

# installpkg kernel-source-2.4.xx-noarch-x.tgz

prima di procedere fate il backup della vostra /lib/modules/versione-kernel, questa dir viene sovrascritta in fase di installazione dei moduli, e vi assicura dei moduli funzionanti in caso di ripristino

# cd /lib/modules/
# tar cf 2.4.xx.tar 2.4.xx 

entrate in /usr/src/linux e preparate l'ambiente

# cd /usr/src/linux
# make mrproper

ora apportate le vostre modifiche usando uno dei tre tool

# make config
# make menuconfig
# make xconfig

i primi due si usano direttamente da shell, meglio make menuconfig che usa ncurses ed è più semplice e intuitivo del primo, make xconfig invece deve essere avviato da X quindi in ambiente grafico

# make menuconfig

scorrete il men fino in fondo e con la funzione Load an Alternate Configuration File caricare il file di configurazione salvato in /boot (config-ide-2.4.33 per esempio) eseguite le modifiche e salvate la nuova configurazione usando la funzione Save Configuration to an Alternate File così da non sovrascrivere il config funzionante. Eventualmente per non fare la ricerca del file config invece di usare make mrproper usate make clean che elimina la maggior parte dei files ma non il config. Terminate le modifiche, uscite con < Exit > e salvate la configurazione. Create la struttura delle dipendenze e rimuovete i file temporanei e di debug

# make dep
# make clean

create il Kernel

# make -j5 bzImage

vi troverete il Kernel pronto in /usr/scr/linux/arch/i386/boot. Compilate e installate i moduli

# make -j5 modules
# make modules_install

i moduli saranno reinstallati regolarmente in /lib/modules/versione-kernel.
Siete ancora in /usr/src/linux un ls -a vi mostrerà il contenuto della dir, noterete un file .config e un file System.map questi due file vanno copiati in /boot ma la cosa migliore è rinominarli gestendo una nuova direttiva in LILO

# mv System.map /boot/System.map-2.4.xx-new
# cp .config /boot/config-2.4.xx-new

ora il Kernel

# mv /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.xx-new

ora modificate /etc/lilo.conf, potete prendete come riferimento questo esempio (man lilo per info maggiori)

image = /boot/vmlinuz
root = /dev/hda2
label = Slack_2.4.26
read-only
image = /boot/vmlinuz-2.4.26-new
root = /dev/hda2
label = Slack_2.4.26_New
read-only
Strumenti personali
Namespace

Varianti