Dimensione: 1756
Commento:
|
Dimensione: 10532
Commento:
|
Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
Linea 1: | Linea 1: |
Prima di tutto, scarica il pacchetto del kernel di cui hai bisogno da [http://www.kernel.org kernel.org] o dai repositories di Ubuntu. Se vuoi il kernel ufficiale del Team Ubuntu, ti basterà eseguire: {{{ sudo apt-get install linux-tree |
#format wiki #LANGUAGE it [[BR]] ||<tablestyle="font-size: 18px; text-align:center; width:100%; background:red; margin: 0 0 0 0;" style="padding:0.5em;">'''ATTENZIONE: Questa pagina è in revisione.[[BR]][[BR]]La procedura è sconsigliata ad utenti inesperti'''|| [[BR]] ||<tablebgcolor="#f1f1ed" tablewidth="40%" tablestyle="margin: 0pt 0pt 1em 1em; float: right; font-size: 0.9em;"style="padding: 0.5em;">[[TableOfContents(2)]]|| = Introduzione = In informatica, il '''kernel''' costituisce il '''nucleo''' di un sistema operativo. Si tratta di un software avente il compito di fornire ai processi in esecuzione sull'elaboratore un accesso sicuro e controllato all'hardware. Dato che possono esserne eseguiti simultaneamente più di uno, il kernel ha anche la responsabilità di assegnare una porzione di tempo-macchina e di accesso all'hardware a ciascun programma ([http://it.wikipedia.org/wiki/Multitasking multitasking]). Compilare il codice sorgente del '''kernel''', anziché installare uno dei pacchetti pre-compilati, assicura certamente alcuni vantaggi, tra cui: * Un avvio più veloce perché i moduli da caricare sono solo quelli della vostra macchina e non ce ne sono di inutili. * Un sistema operativo più veloce perché potete ottimizzare il codice sul vostro processore. * La possibilità di attivare opzioni che non sono presenti nei kernel pre-compilati. Compilare un kernel, però , '''non è necessario nei casi in cui il nostro hardware funzioni alla perfezione e\o le periferiche vengono completamente riconosciute'''. Inoltre l'aumento di prestazioni avviene in gran parte solo al boot senza che vi sia un reale aumento di prestazioni generali nella sessione di root vera e propria, ma non è sempre così. Si tenga ben presente che compilare un nuovo kernel significa nella sostanza cambiare sistema operativo, in quanto esso ne costituisce il "motore"; inoltre è richiesta un buona conoscenza del proprio hardware. = Preparativi = == Installare le varie dipendenze == Il processo di compilazione richiede l'installazione di alcuni pacchetti specifici, da synaptic installare: ''build-essential bin86 kernel-package libncurses5 libncurses5-dev '', o più semplicemente digitare da terminale: {{{ sudo apt-get install build-essential bin86 kernel-package libncurses5 libncurses5-dev fakeroot |
Linea 6: | Linea 30: |
In questo caso userai l'ultima versione stabile disponibile del kernel vanilla. Per il processo di compilazione avrai bisogno dei seguenti pacchetti su Ubuntu: {{{ sudo apt-get update sudo apt-get install build-essential sudo apt-get install kernel-package sudo apt-get install gcc sudo apt-get install libncurses5 sudo apt-get install libncurses5-dev sudo apt-get install libqt3-mt-dev |
Se si vuole configurare il kernel tramite un'interfaccia grafica, cioè usando i comandi {{{make gconfig}}} o {{{make xconfig}}}, è necessaria l'installazione dei seguenti pacchetti: * ''libglade2-dev'' per poter usare il comando {{{make gconfig}}} * ''libqt3-headers'' e ''libqt3-mt-dev'' per {{{make xconfig}}}. == Scaricare i sorgenti del kernel == Sarà necessario scaricare i sorgenti del kernel. Ci sono due possibili strade: * scaricare il pacchetto da questo indirizzo: [http://www.kernel.org].[[BR]] In questo modo si avrà la possibilità di installare l'ultima versione stabile del kernel, la cosiddetta versione '''Vanilla'''. Una volta scaricato il pacchetto, sarà necessario decomprimerlo e copiarlo nella cartella ''/usr/src/''. [[Immagine(Icone/Piccole/note.png,,center)]]È consigliato scompattare e compilare il kernel da utente normale. Il proprietario , per policy debian, della cartella /usr/src è il gruppo src. Per assegnare al vostro utente i diritti di scrittura e lettura è quindi necessario e sufficiente inserire il proprio utente in questo gruppo con il comando {{{sudo adduser utente src}}}. Qualora il gruppo src non avesse più i diritti di scrittura (perché di default li ha) sulla cartella ''src'' questi dovranno essere ripristinati con : {{{sudo chmod -R g+wr /usr/src/* |
Linea 18: | Linea 44: |
ora decomprimi il pacchetto: {{{ cd /usr/src sudo tar --bzip2 -xvf linux-2.6.12.tar.bz2 |
Ora scompattiamo e copiamo i sorgenti nella cartella di destinazione: {{{ sudo tar -xvjf linux-[VERSIONE_CHE_AVETE_SCARICATO].tar.bz2 && cp -r linux-[VERSIONE_CHE_AVETE_SCARICATO] /usr/src/ }}} * scaricare il pacchetto dai repository di Ubuntu (kernel ufficiale di Ubuntu), da terminale dare il seguente comando: {{{ sudo apt-get install linux-source }}} Ubuntu, purtroppo, non fornisce tutte le versioni dei kernel più aggiornate, scegliendo infatti questa opzione si correrà il rischio di non avere l'ultimo kernel stabile. = Compilazione e installazione = Entrare nella directory dei sorgenti del kernel appena scaricati: {{{ cd /usr/src/linux-[VERSIONE_CHE_AVETE_SCARICATO] |
Linea 24: | Linea 63: |
Ora puoi cominciare a personalizzare la configurazione del tuo kernel; ci sono tre modi, il primo e' grafico, il secondo pseudo-grafico, ed uno non grafico: | == Eventuali patch == |
Linea 26: | Linea 65: |
{{{ sudo make xconfig {{{ |
A questo punto, se necessario, sarà possibile applicare una o più '''patch''' al kernel. |
Linea 30: | Linea 67: |
o {{{ sudo make menuconfig |
Tra le più diffuse si possono trovare quelle di: * [http://www.kernel.org/pub/linux/kernel/people/ck/patches/2.6/ Con Kolivas] * [ftp://ftp.kernel.org/pub/linux/kernel/people/alan/ Alan Cox] * [ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/ Andrew Morton] Di solito le patch vengono applicate utilizzando l'insieme di due comandi: '''patch''' e '''cat''' (o anche '''bzcat''' se il file ha estensione ''.bz2''). Copiare la patch nella directory dei sorgenti del kernel e digitare: {{{ bzcat [NOME_DELLA_PATCH].bz2 | patch -p1 |
Linea 35: | Linea 79: |
o ancora: {{{ sudo make config |
Se il procedimento non andrà a buon fine, sarà necessario cancellare tutto quanto e ricominciare dall'inizio. == Configurazione == È possibile importare una vecchia configurazione di un altro kernel. Se si dispone del file `.config` è sufficiente copiarlo all'interno della directory dei sorgenti. Se si vuole utilizzare la configurazione del kernel attualmente in uso, è sufficiente digitare, all'interno della directory dei sorgenti: {{{ sudo make oldconfig |
Linea 40: | Linea 89: |
Quindi, dopo aver finito la personalizzazione, dobbiamo cominciare il processo di compilazione: {{{ sudo make-kpkg clean sudo make-kpkg --append-to-version=-custom kernel_image modules_image |
Per personalizzare la configurazione eliminando eventuali moduli, o per crearne una nuova, ci sono diverse modalità: * Grafica: * usando le librerie gtk (consigliato su Ubuntu){{{ make gconfig }}} * usando le librerie qt (consigliato su Kubuntu){{{ make xconfig }}} * Pseudo-grafica: {{{ make menuconfig |
Linea 46: | Linea 101: |
Il flag di revisione è opzionale ed è solamente utile per editare il nome del kernel mostrato attraverso {{{ |
Per l'utente più inesperto è consigliabile effettuare la configurazione con il metodo grafico. Potrete cercare le varie opzioni di configurazione di ogni versione del kernel in questo utilissimo sito: [http://kernel.xc.net/ Linux Kernel Configuration Archive] [[Immagine(Icone/Piccole/note.png,,center)]]'''Attenzione a come vi muovete: la cancellazione di un semplice modulo può compromettere l'intero sistema! Per cercare di ridurre al minimo gli errori digitate da terminale ''lshw'', per visualizzare il vostro hardware.''' Alla fine la configurazione sarà all'interno del file `.config` presente nella cartella del kernel. È consigliato farne una copia, se si è soddisfatti del lavoro svolto. === Configurazione standard === Seguire quanto descritto per evitare spiacevoli inconvenienti in fase di compilazione: 1. In «'''General Setup'''» attivare: * -Support for paging of anonymous memory (swap) * --Support for prefetching swapped memory 1. In «'''Processor type and features'''»: * In «'''Processor family'''» scegliere il modello del processore. * Attivare '''Preemption Model-> Voluntary Kernel Preemption''' (Desktop) * In «'''High Memory Support'''» scegliere: * '''off''' se si possiede meno di 1 GB di RAM * '''1GB Low Memory Support''' se si possiede 1GB di RAM * '''4GB''' se si possiede più di 1GB di RAM * In «'''Timer frequency'''» abilitare: '''1000 Hz''' 1. In «'''Graphics Support'''» * Disabilitare '''NVIDIA RIVA''' se si usano driver Nvidia proprietari. 1. In «'''Block layer -> IO Schedulers'''» lasciare solo «'''CFQ I/O scheduler'''», otterrete una migliore performance. 1. In «'''Kernel hacking'''» deselezionare «'''Kernel debugging'''». == Compilare == Finita la fase di personalizzazione, per compilare, digitare: {{{ fakeroot make-kpkg clean }}} In questo modo vengono puliti i sorgenti. Non digitare tale comando se non si è mai ricompilato il kernel. E successivamente: {{{ fakeroot make-kpkg --append-to-version=-custom --initrd kernel_image kernel_headers modules_image }}} Il flag di revisione è opzionale ed è solamente utile per visualizzare il nome del kernel attraverso il comando: {{{ |
Linea 51: | Linea 147: |
Puoi scrivere tutto ciò che vuoi al posto di "-custom". | C'è la possibilità di scrivere tutto ciò che si vuole al posto di «'''-custom'''» (esempio: dopo il trattino "-10.k7" in base al tipo di processore disponibile sulla propria macchina). |
Linea 53: | Linea 149: |
Nota che ora avrai un pacchetto .dev in ''/usr/src'' pronto per essere installato come ogni altri pacchetto. '''Grub verrà aggiornato automaticamente'''. | Generalmente i kernel Ubuntu usano un '''initrd''', per crearlo è sufficiente aggiungere l'opzione «'''--initrd'''» al comando precedente. |
Linea 55: | Linea 151: |
Esegui: {{{ sudo dpkg -i kernel-image-2.6.12-custom_10.00.Custom_i386.deb |
[[Immagine(Icone/Piccole/note.png,,center)]] * L'opzione '''--initrd''' viene usata per il così detto '''ramdisk''': una porzione di ram che viene usata per caricare i moduli necessari al sistema per avviare la sessione. Non è un'opzione essenziale in quanto se si compilano i moduli relativi al filesistem sulla quale fa il boot e i moduli del chipset , non c'è bisogno dell'immagine initrd.Inoltre il boot risulta un pò più veloce. Serve invece nei kernel ufficiali che devono supportare un gran numero di chipset, filesistem, hd ecc. e per ciò si caricano tutti questi moduli. Serve anche nel caso si debba usare un bootsplash. Si possono usare tool come '''mkinitrd.yaird''' per creare ramdisk esclusivamente con i moduli necessari all'avvio. Purtroppo mkinitrd.yaird non supporta ancora partizioni ext3 e xfs. Poiché vi sia la ''Ram disk'' è necessario che l' opzione 'RAM disk support' nella sezione 'Block Device' del kernel, sia abilitata. * L'opzione '''kernel_image''' compila tutti i moduli del kernel che abbiamo scelto nella configurazione e ne crea un pacchetto .deb * L'opzione '''kernel_headers''' crea un pacchetto (sempre in in .deb) con una serie di files, script che consentono di compilare sorgenti esterni. * L'opzione '''modules_image''' compila i sorgenti (dei driver video, per esempio) dei moduli esterni presenti in ''/usr/src''. == Installare == Entrare nella cartella superiore: {{{ cd .. |
Linea 60: | Linea 170: |
Traduzione: LorenzoSfarra Documento originale: http://www.ubuntuforums.org/showthread.php?t=43065 |
E installare i pacchetti appena creati (dovrebbero essere due). Da terminale digitare: {{{ sudo dpkg -i kernel-image-[VERSIONE_DEL_KERNEL].deb sudo dpkg -i linux-headers-[VERSIONE_DEL_KERNEL].deb }}} '''Grub verrà aggiornato automaticamente.''' Riavviare e all'avvio scegliere il nuovo kernel installato. Se ci sono problemi, riavviare la macchina e utilizzare il vecchio kernel. = Ulteriori risorse = * [http://massimo.solira.org/pcikl/index.html Progetto Configurazione Italiana del Kernel Linux] ---- CategoryDaRevisionare |
Introduzione
In informatica, il kernel costituisce il nucleo di un sistema operativo. Si tratta di un software avente il compito di fornire ai processi in esecuzione sull'elaboratore un accesso sicuro e controllato all'hardware. Dato che possono esserne eseguiti simultaneamente più di uno, il kernel ha anche la responsabilità di assegnare una porzione di tempo-macchina e di accesso all'hardware a ciascun programma ([http://it.wikipedia.org/wiki/Multitasking multitasking]).
Compilare il codice sorgente del kernel, anziché installare uno dei pacchetti pre-compilati, assicura certamente alcuni vantaggi, tra cui:
- Un avvio più veloce perché i moduli da caricare sono solo quelli della vostra macchina e non ce ne sono di inutili.
- Un sistema operativo più veloce perché potete ottimizzare il codice sul vostro processore.
- La possibilità di attivare opzioni che non sono presenti nei kernel pre-compilati.
Compilare un kernel, però , non è necessario nei casi in cui il nostro hardware funzioni alla perfezione e\o le periferiche vengono completamente riconosciute. Inoltre l'aumento di prestazioni avviene in gran parte solo al boot senza che vi sia un reale aumento di prestazioni generali nella sessione di root vera e propria, ma non è sempre così. Si tenga ben presente che compilare un nuovo kernel significa nella sostanza cambiare sistema operativo, in quanto esso ne costituisce il "motore"; inoltre è richiesta un buona conoscenza del proprio hardware.
Preparativi
Installare le varie dipendenze
Il processo di compilazione richiede l'installazione di alcuni pacchetti specifici, da synaptic installare: build-essential bin86 kernel-package libncurses5 libncurses5-dev , o più semplicemente digitare da terminale:
sudo apt-get install build-essential bin86 kernel-package libncurses5 libncurses5-dev fakeroot
Se si vuole configurare il kernel tramite un'interfaccia grafica, cioè usando i comandi make gconfig o make xconfig, è necessaria l'installazione dei seguenti pacchetti:
libglade2-dev per poter usare il comando make gconfig
libqt3-headers e libqt3-mt-dev per make xconfig.
Scaricare i sorgenti del kernel
Sarà necessario scaricare i sorgenti del kernel. Ci sono due possibili strade:
scaricare il pacchetto da questo indirizzo: [http://www.kernel.org].[[BR]] In questo modo si avrà la possibilità di installare l'ultima versione stabile del kernel, la cosiddetta versione Vanilla. Una volta scaricato il pacchetto, sarà necessario decomprimerlo e copiarlo nella cartella /usr/src/.
Immagine(Icone/Piccole/note.png,,center)È consigliato scompattare e compilare il kernel da utente normale. Il proprietario , per policy debian, della cartella /usr/src è il gruppo src. Per assegnare al vostro utente i diritti di scrittura e lettura è quindi necessario e sufficiente inserire il proprio utente in questo gruppo con il comando sudo adduser utente src. Qualora il gruppo src non avesse più i diritti di scrittura (perché di default li ha) sulla cartella src questi dovranno essere ripristinati con : {{{sudo chmod -R g+wr /usr/src/* }}}
Ora scompattiamo e copiamo i sorgenti nella cartella di destinazione:
sudo tar -xvjf linux-[VERSIONE_CHE_AVETE_SCARICATO].tar.bz2 && cp -r linux-[VERSIONE_CHE_AVETE_SCARICATO] /usr/src/
scaricare il pacchetto dai repository di Ubuntu (kernel ufficiale di Ubuntu), da terminale dare il seguente comando:
sudo apt-get install linux-source
Ubuntu, purtroppo, non fornisce tutte le versioni dei kernel più aggiornate, scegliendo infatti questa opzione si correrà il rischio di non avere l'ultimo kernel stabile.
Compilazione e installazione
Entrare nella directory dei sorgenti del kernel appena scaricati:
cd /usr/src/linux-[VERSIONE_CHE_AVETE_SCARICATO]
Eventuali patch
A questo punto, se necessario, sarà possibile applicare una o più patch al kernel.
Tra le più diffuse si possono trovare quelle di:
[http://www.kernel.org/pub/linux/kernel/people/ck/patches/2.6/ Con Kolivas]
[ftp://ftp.kernel.org/pub/linux/kernel/people/alan/ Alan Cox]
[ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/ Andrew Morton]
Di solito le patch vengono applicate utilizzando l'insieme di due comandi: patch e cat (o anche bzcat se il file ha estensione .bz2).
Copiare la patch nella directory dei sorgenti del kernel e digitare:
bzcat [NOME_DELLA_PATCH].bz2 | patch -p1
Se il procedimento non andrà a buon fine, sarà necessario cancellare tutto quanto e ricominciare dall'inizio.
Configurazione
È possibile importare una vecchia configurazione di un altro kernel. Se si dispone del file .config è sufficiente copiarlo all'interno della directory dei sorgenti.
Se si vuole utilizzare la configurazione del kernel attualmente in uso, è sufficiente digitare, all'interno della directory dei sorgenti:
sudo make oldconfig
Per personalizzare la configurazione eliminando eventuali moduli, o per crearne una nuova, ci sono diverse modalità:
- Grafica:
usando le librerie gtk (consigliato su Ubuntu)
make gconfig
usando le librerie qt (consigliato su Kubuntu)
make xconfig
Pseudo-grafica:
make menuconfig
Per l'utente più inesperto è consigliabile effettuare la configurazione con il metodo grafico.
Potrete cercare le varie opzioni di configurazione di ogni versione del kernel in questo utilissimo sito: [http://kernel.xc.net/ Linux Kernel Configuration Archive]
Immagine(Icone/Piccole/note.png,,center)Attenzione a come vi muovete: la cancellazione di un semplice modulo può compromettere l'intero sistema! Per cercare di ridurre al minimo gli errori digitate da terminale lshw, per visualizzare il vostro hardware.
Alla fine la configurazione sarà all'interno del file .config presente nella cartella del kernel. È consigliato farne una copia, se si è soddisfatti del lavoro svolto.
Configurazione standard
Seguire quanto descritto per evitare spiacevoli inconvenienti in fase di compilazione:
In «General Setup» attivare:
- -Support for paging of anonymous memory (swap)
- --Support for prefetching swapped memory
- -Support for paging of anonymous memory (swap)
In «Processor type and features»:
In «Processor family» scegliere il modello del processore.
Attivare Preemption Model-> Voluntary Kernel Preemption (Desktop)
In «High Memory Support» scegliere:
off se si possiede meno di 1 GB di RAM
1GB Low Memory Support se si possiede 1GB di RAM
4GB se si possiede più di 1GB di RAM
In «Timer frequency» abilitare: 1000 Hz
In «Graphics Support»
Disabilitare NVIDIA RIVA se si usano driver Nvidia proprietari.
In «Block layer -> IO Schedulers» lasciare solo «CFQ I/O scheduler», otterrete una migliore performance.
In «Kernel hacking» deselezionare «Kernel debugging».
Compilare
Finita la fase di personalizzazione, per compilare, digitare:
fakeroot make-kpkg clean
In questo modo vengono puliti i sorgenti. Non digitare tale comando se non si è mai ricompilato il kernel. E successivamente:
fakeroot make-kpkg --append-to-version=-custom --initrd kernel_image kernel_headers modules_image
Il flag di revisione è opzionale ed è solamente utile per visualizzare il nome del kernel attraverso il comando:
uname -r
C'è la possibilità di scrivere tutto ciò che si vuole al posto di «-custom» (esempio: dopo il trattino "-10.k7" in base al tipo di processore disponibile sulla propria macchina).
Generalmente i kernel Ubuntu usano un initrd, per crearlo è sufficiente aggiungere l'opzione «--initrd» al comando precedente.
Immagine(Icone/Piccole/note.png,,center)
L'opzione --initrd viene usata per il così detto ramdisk: una porzione di ram che viene usata per caricare i moduli necessari al sistema per avviare la sessione.
Non è un'opzione essenziale in quanto se si compilano i moduli relativi al filesistem sulla quale fa il boot e i moduli del chipset , non c'è bisogno dell'immagine initrd.Inoltre il boot risulta un pò più veloce. Serve invece nei kernel ufficiali che devono supportare un gran numero di chipset, filesistem, hd ecc. e per ciò si caricano tutti questi moduli. Serve anche nel caso si debba usare un bootsplash. Si possono usare tool come mkinitrd.yaird per creare ramdisk esclusivamente con i moduli necessari all'avvio. Purtroppo mkinitrd.yaird non supporta ancora partizioni ext3 e xfs. Poiché vi sia la Ram disk è necessario che l' opzione 'RAM disk support' nella sezione 'Block Device' del kernel, sia abilitata.
L'opzione kernel_image compila tutti i moduli del kernel che abbiamo scelto nella configurazione e ne crea un pacchetto .deb
L'opzione kernel_headers crea un pacchetto (sempre in in .deb) con una serie di files, script che consentono di compilare sorgenti esterni.
L'opzione modules_image compila i sorgenti (dei driver video, per esempio) dei moduli esterni presenti in /usr/src.
Installare
Entrare nella cartella superiore:
cd ..
E installare i pacchetti appena creati (dovrebbero essere due). Da terminale digitare:
sudo dpkg -i kernel-image-[VERSIONE_DEL_KERNEL].deb sudo dpkg -i linux-headers-[VERSIONE_DEL_KERNEL].deb
Grub verrà aggiornato automaticamente.
Riavviare e all'avvio scegliere il nuovo kernel installato.
Se ci sono problemi, riavviare la macchina e utilizzare il vecchio kernel.
Ulteriori risorse
[http://massimo.solira.org/pcikl/index.html Progetto Configurazione Italiana del Kernel Linux]