Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "AmministrazioneSistema/CompilazioneKernel"
Differenze tra le versioni 20 e 22 (in 2 versioni)
Versione 20 del 18/12/2006 20.55.49
Dimensione: 7068
Autore: LeoIannacone
Commento: Iniziata la revisione.
Versione 22 del 18/12/2006 21.43.31
Dimensione: 6907
Commento: mi sono dimenticato di cancellare la categoria... :o
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 6: Linea 6:
attachment:Icone/Piccole/warning.png Documento in fase di aggiornamento

----
Linea 12: Linea 9:
Compilare il codice sorgente del '''kernel''' anziché installare uno dei pacchetti pre-compilati assicura certamente alcuni vantaggi, tra cui: Compilare il codice sorgente del '''kernel''', anziché installare uno dei pacchetti pre-compilati, assicura certamente alcuni vantaggi, tra cui:
Linea 16: Linea 13:
 * La possibilità di attivare opzioni che sono inattive nei kernel pre-compilati.
 * La possibilità di attivare opzioni che non sono presenti nei kernel pre-compilati.
Linea 23: Linea 19:
Il processo di compilazione richiede l'installazione di alcuni pacchetti specifici, da synaptic in installare: ''build-essential bin86 kernel-package libqt3-headers libqt3-mt-dev gcc libncurses5 wget libncurses5-dev '', o più semplicemente digitare da terminale:
{{{
sudo apt-get install build-essential bin86 kernel-package libqt3-headers libqt3-mt-dev gcc libncurses5 wget libncurses5-dev
Il processo di compilazione richiede l'installazione di alcuni pacchetti specifici, da synaptic in installare: ''build-essential bin86 kernel-package libqt3-headers libqt3-mt-dev gcc libncurses5 wget libncurses5-dev '', o più semplicemente digitare da terminale: {{{
sudo apt-get install build-essential bin86 kernel-package libqt3-headers libqt3-mt-dev gcc libncurses5 libncurses5-dev
Linea 29: Linea 24:
Linea 30: Linea 26:
 * scaricare il pacchetto da questo indirizzo: [http://www.kernel.org].
 In questo modo si avrà la possibilità di installare l'ultima versione stabile del ''kernel Vanilla''.

Una volta scaricato il pacchetto, sarà necessario decomprimerlo e copiarlo nella cartella `/usr/src/`:
{{{
 * 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/`: {{{
Linea 38: Linea 31:
 * scaricare il pacchetto dai repository di Ubuntu (kernel ufficiale del Team Ubuntu), da terminale dare il seguente comando:
{{{
 * scaricare il pacchetto dai repository di Ubuntu (kernel ufficiale di Ubuntu), da terminale dare il seguente comando: {{{
Linea 45: Linea 37:

Linea 49: Linea 39:
Entrare nella dir creata dei sorgenti del kernel appena scaricati:
{{{
Entrare nella directory dei sorgenti del kernel appena scaricati: {{{
Linea 54: Linea 43:
== Eventuali Patch ==
A questo punto sarà possibile ''patchare'' il nostro kernel con eventuali '''patch''' prese sul web.
== Eventuali patch ==
Linea 57: Linea 45:
La più diffusa, o almeno una delle più utili (a mio parere), sembrerebbe la Con Kolivas, scaricabile a questo indirizzo: [http://www.kernel.org/pub/linux/kernel/people/ck/patches/2.6/ ck patches] (scegliere ovviamente la patch per la propria versione del kernel). A questo punto, se necessario, sarà possibile applicare una o più '''patch''' al kernel.
Linea 59: Linea 47:
Di solito il '''kernel''' viene ''patchato'' utilizzando l'insieme di due comandi '''patch''' e '''cat''' (o anche '''bzcat''' se il file ha estensione ''.bz2''), inutile rammentare che è necessario copiare il file della '''patch''' nella cartella dei sorgenti del kernel. A questo punto dare il comando:
{{{
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: {{{
Linea 64: Linea 59:
Se il procedimento non andrà a buon fine, sarà necessario cancellare tutto e ricominciare dall'inizio. Se il procedimento non andrà a buon fine, sarà necessario cancellare tutto quanto e ricominciare dall'inizio.
Linea 67: Linea 62:
Importare la configurazione del vecchio kernel già presente sulla nostra Ubuntu, da terminale digitare:
{{{
sudo cp /boot/config-`uname -r` .config && sudo make oldconfig

È 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 71: Linea 68:
E ora personalizzare il kernel eliminando eventuali moduli, ci sono tre diversi metodi per eseguire questo procedimento:
 * Grafico:
{{{

Pe
r personalizzare la configurazione eliminando eventuali moduli, o per crearne una di nuova, ci sono diversi modalità:
 * Grafica: {{{
Linea 76: Linea 73:
 * Pseudo-grafico:
{{{
 * Pseudo-grafica: {{{
Linea 79: Linea 75:
}}}
 * Non grafico:
 {{{
sudo make config
Linea 89: Linea 81:
'''Attenzione a come vi muovete, la cancellazione di un semplice modulo può compromettere l'intero sistema. ''' '''Attenzione a come vi muovete: la cancellazione di un semplice modulo può compromettere l'intero sistema!'''
Linea 91: Linea 83:
Alla fine la configurazione sarà all'interno del file `.config` presente nella cartella del kernel che avete scaricato. Consiglio di salvarne una copia in altro luogo, se si è soddisfatti del lavoro fatto. 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.
Linea 93: Linea 85:
=== Configurazione Standard === === Configurazione standard ===
Linea 96: Linea 89:
 1. In "'''General Setup'''" attivare:[[BR]]  1. In «'''General Setup'''» attivare:
  * -Support for paging of anonymous memory (swap)
   * --Support for prefetching swapped memory
Linea 98: Linea 93:
 -Support for paging of anonymous memory (swap)  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'''
Linea 100: Linea 102:
  --Support for prefetching swapped memory  1. In «'''Graphics Support'''»
  * Disabilitare '''NVIDIA RIVA''' se si usano driver Nvidia proprietari.
Linea 102: Linea 105:
 1. In "'''Processor type and features'''":  1. In «'''Device drivers -> Block devices -> IO Schedulers lascisare'''» scegliere solo «'''CFQ I/O scheduler'''», otterrete una migliore performance.
Linea 104: Linea 107:
 - In "'''Processor family'''" scegliere il modello del vostro 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 usa NVIDIA DRIVERS proprietari.

 1. In "'''Device drivers -> Block devices -> IO Schedulers lascisare'''" solo the "'''CFQ I/O scheduler'''" attivato, otterrete una migliore performance.

 1. In "'''Kernel hacking'''" deselezionare "'''Kernel debugging'''".
 1. In «'''Kernel hacking'''» deselezionare «'''Kernel debugging'''».
Linea 125: Linea 110:
Quindi, dopo aver finito la personalizzazione, iniziare il processo di compilazione, da terminale digitare:
{{{

F
inita la fase di personalizzazione, per compilare, digitare: {{{
Linea 130: Linea 115:
E successivamente:
{{{
E successivamente: {{{
Linea 135: Linea 119:
Il flag di revisione è opzionale ed è solamente utile per editare il nome del kernel mostrato attraverso

{{{
Il flag di revisione è opzionale ed è solamente utile per visualizzare il nome del kernel attraverso il comando: {{{
Linea 141: Linea 123:
C'è la possibilita di scrivere tutto ciò che si vuole al posto di "'''-CUSTOM'''" (esempio: dopo il trattino "-10.k7" in base al tipo di processore che disponibile sulla propria macchina). 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 143: Linea 125:
Generalmente i kernel ubuntu usano un initrd, per crearlo e' sufficiente aggiungere l'opzione "'''--initrd'''" al comando "'''make-kpkg'''".
Generalmente i kernel Ubuntu usano un '''initrd''', per crearlo è sufficiente aggiungere l'opzione «'''--initrd'''» al comando precedente.
Linea 147: Linea 128:
Entrare nella cartella madre:
{{{

Entrare nella cartella superiore: {{{
Linea 151: Linea 132:
E installare i pacchetti appena creati (dovrebbero essere due). '''Grub verrà aggiornato automaticamente''', da terminale digitare:
{{{

E installare i pacchetti appena creati (dovrebbero essere due). Da terminale digitare: {{{
Linea 157: Linea 138:
Riavviare e al '''boot''' scegliere il nuovo kernel installato. '''Grub verrà aggiornato automaticamente.'''
Linea 159: Linea 140:
Se ci sono problemi, riavviare la macchina e ''loggarsi'' con il vecchio '''kernel'''.
----
Riavviare e all'avvio scegliere il nuovo kernel installato.
Linea 162: Linea 142:
CategoryDaRevisionare CategoryDaRevisionare Se ci sono problemi, riavviare la macchina e utilizzare il vecchio kernel.

BR

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.

Preparativi

Installare le varie dipendenze

Il processo di compilazione richiede l'installazione di alcuni pacchetti specifici, da synaptic in installare: build-essential bin86 kernel-package libqt3-headers libqt3-mt-dev gcc libncurses5 wget libncurses5-dev , o più semplicemente digitare da terminale:

sudo apt-get install build-essential bin86 kernel-package libqt3-headers libqt3-mt-dev gcc libncurses5 libncurses5-dev

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/:

    sudo tar -xvjf linux-[VERSIONE_CHE_AVETE_SCARICATO].tar.bz2 && sudo 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:

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 patch-[VERSIONE_DEL_KERNEL]-ck1.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 di nuova, ci sono diversi modalità:

  • Grafica:

    sudo make xconfig
  • Pseudo-grafica:

    sudo 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 a questo utilissimo sito: [http://kernel.xc.net/Linux Kernel Configuration Archive]

Attenzione a come vi muovete: la cancellazione di un semplice modulo può compromettere l'intero sistema!

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
  2. 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

  3. In «Graphics Support»

    • Disabilitare NVIDIA RIVA se si usano driver Nvidia proprietari.

  4. In «Device drivers -> Block devices -> IO Schedulers lascisare» scegliere solo «CFQ I/O scheduler», otterrete una migliore performance.

  5. In «Kernel hacking» deselezionare «Kernel debugging».

Compilare

Finita la fase di personalizzazione, per compilare, digitare:

sudo make-kpkg clean

E successivamente:

sudo 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.

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.