Repository 32bit  Forum
Repository 64bit  Wiki

Compilazione e ricompilazione Kernel su Slackware: differenze tra le versioni

Da Slacky.eu.
Riga 16: Riga 16:
bzImage (o zImage) che è l'immagine per questo kernel
bzImage (o zImage) che è l'immagine per questo kernel
config che è il file di configurazione 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:
+
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
config -> config-ide-2.4.xx
System.map -> System.map-ide-2.4.xx
System.map -> System.map-ide-2.4.xx
vmlinuz -> vmlinuz-ide-2.4.xx
vmlinuz -> vmlinuz-ide-2.4.xx
Scaricate i 3 file in /tmp e procedete con questi comandi:
+
scaricate i 3 file in /tmp e procedete con questi comandi:
# cd /tmp
# cd /tmp
# rm /boot/config System.map vmlinuz <u>per rimuovere i link simbolici</u>
+
# rm /boot/config System.map vmlinuz
# gzip -d System.map.gz | mv System.map /boot/System.map-new | ln -s /boot/System.map-new /boot/System.map <u>per decomprimere spostare in /boot il file System.map e ricreare il link</u>
+
<u>per rimuovere i link simbolici</u>
# mv bzImage /boot/vmlinuz-new | ln -s /boot/vmlinuz-new /boot/vmlinuz <u>per spostare il nuovo Kernel in /boot e ricreare il link simbolico vmlinuz</u>
+
# gzip -d System.map.gz | mv System.map /boot/System.map-new | ln -s /boot/System.map-new /boot/System.map
# mv config /boot/config-new | ln -s /boot/config-new /boot/config <u>per spostare il nuovo config e ricreare il link</u>
+
<u>per decomprimere spostare in /boot il file System.map e ricreare il link</u>
# lilo -vper <u>aggiornare la configurazione</u>
+
# mv bzImage /boot/vmlinuz-new | ln -s /boot/vmlinuz-new /boot/vmlinuz
  +
<u>per spostare il nuovo Kernel in /boot e ricreare il link simbolico vmlinuz</u>
  +
# mv config /boot/config-new | ln -s /boot/config-new /boot/config
  +
<u>per spostare il nuovo config e ricreare il link</u>
  +
# lilo -vper
  +
<u>aggiornare la configurazione</u>
Riavviate e se tutto funziona potete anche eliminare la vecchia immagine del Kernel il System.map e il config.
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: =
= 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

Versione delle 21:29, 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
Strumenti personali
Namespace

Varianti