Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "GiacomoForresu/Prove0"
Differenze tra le versioni 1 e 2
Versione 1 del 13/03/2007 12.45.57
Dimensione: 10925
Commento:
Versione 2 del 13/03/2007 12.53.48
Dimensione: 10987
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 16: Linea 16:
Compilare un kernel, però , non è necessario nel caso in cui il nostro hardware funzioni alla perfezione e venga quindi completamente riconosciuto. Infatti 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.
Si tenga ben presente che compilare un nuovo kernel significa nella sostanza cambiare gran parte del sistema operativo, in quanto il kernel ne costituisce il "motore"; inoltre è richiesta un buona conoscenza del proprio hardware. Rimane comunque un'ottima esperienza!
Compilare un kernel, però , non è necessario nei casi in cui
*
il nostro hardware funzioni alla perfezione
*le periferich
e 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.
Si tenga ben presente che compilare un nuovo kernel significa nella sostanza cambiare gran parte del sistema operativo, in quanto il kernel ne costituisce il "motore"; inoltre è richiesta un buona conoscenza del proprio hardware.
Linea 25: Linea 26:
sudo apt-get install build-essential bin86 kernel-package libqt3-headers libqt3-mt-dev gcc libncurses5 libncurses5-dev sudo apt-get install build-essential bin86 kernel-package gcc libncurses5 libncurses5-dev
Linea 27: Linea 28:
scaricate le libqt3-headers libqt3-mt-dev solo se volete effettuare un configurazione grafica con le librerie Qt
Linea 36: Linea 38:
{{{sudo chmod -R g+wr /usr/src/*}}} {{{sudo chmod -R g+wr /usr/src/*
}}}

prove creazione wiki

QUESTA È UNA PAGINA IN FASE DI REALIZZAZIONE

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 *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. Si tenga ben presente che compilare un nuovo kernel significa nella sostanza cambiare gran parte del sistema operativo, in quanto il kernel 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 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  gcc libncurses5 libncurses5-dev

scaricate le libqt3-headers libqt3-mt-dev solo se volete effettuare un configurazione grafica con le librerie Qt

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

È 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 **al posto di utente mettete , ovviamente il vostro utente. Qualora il gruppo src non avesse più i diritti di scrittura (perché di default li ha) sulla carttella src questi dovranno essere ripristinati con {{{sudo chmod -R g+wr /usr/src/* }}}

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

make oldconfig ( utile per esempio se si passa ad un kernel con un versione poco superiore per non dover rifare la configurazione)

Per personalizzare la configurazione eliminando eventuali moduli, o per crearne una nuova, ci sono diversi modalità:

* Grafica:

make xconfig 

**nota: se non si vuole usare questa configurazione non scaricare i pacchetti libqt3-headers libqt3-mt-dev.

 make gconfig **nota: usa le librerie gtk. Sono necessari i pacchetti libgtk2.0-0 libgtk2.0-0-dev libglade2-0 libglade2-0-dev

* Pseudo-grafica:

make menuconfig  

**nota: se se non si vuole usare questa configurazione non scaricare i pacchetti libncurses5 libncurses5-dev

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]

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 sudo lshw, per visualizzare il vostro hardware. Se non siete sicuri lasciate i modulo attivi.

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 lasciare» 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:

make-kpkg clean

se è la prima volta che compilare non eseguite questo comando; serve per pulire le tracce delle compilazioni precedenti per non creare conflitti. E successivamente:

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). L'importante è non lasciare CUSTOM in quanto i caratteri maiuscoli non sono supportati.

Generalmente i kernel Ubuntu usano un initrd, per crearlo è sufficiente aggiungere l'opzione «--initrd» al comando precedente.

  • 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 initrd è 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 , ovviamente in .deb , con l'immagine degli headers , ovvero tutte quelle librerie esterne che vengono dichiarate all'inizio del sorgente del file (per questo chiamate headers) come per esempio gtk.h.

* L'opzione modules_image crea sempre un pacchetto .deb compilando quei moduli esterni presenti nella cartella /usr/src. Questo comando è utile , per esempio, se abbiamo installato i driver proprietari della nostra scheda video Ati, i cui sorgenti fglrx risiedono in /usr/src e con l'opzione in esame saranno pacchettizzati. Così basterà un doppio click per avere di nuovo l'acc3d nel nuovo kernel. Questo è solo un esempio, ma si può anche parlare di altri sorgenti esterni come quelli della webcam.

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


CategoryHomepage