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 87 e 92 (in 5 versioni)
Versione 87 del 18/09/2019 02.53.02
Dimensione: 13131
Autore: zombie17c
Commento:
Versione 92 del 18/09/2019 15.26.50
Dimensione: 13365
Autore: wilecoyote
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 28: Linea 28:
Il processo di compilazione richiede l'[[AmministrazioneSistema/InstallareProgrammi|installazione]] dei pacchetti [[apt://build-essential,bin86,fakeroot,kernel-package | build-essential, bin86, fakeroot, kernel-package]]. Il processo di compilazione richiede l'installazione di diversi pacchetti, per semplificare la procedura d'installazione digitare il seguente comando:{{{
sudo apt-get install --install-suggests build-essential bin86 fakeroot kernel-package liblz4-dev liblz4-tool ubuntu-core-libs-dev
}}}
Linea 44: Linea 46:
Sebbene non sia strettamente necessario, la policy Debian consiglia di usare la directory `/usr/src` per compilare il kernel. Sebbene non sia strettamente necessario, la policy Debian consiglia di usare la directory `/usr/src` per compilare il kernel.<<BR>>
Il gruppo proprietario della cartella `/usr/src` è il gruppo '''src'''.
Linea 46: Linea 49:
Il gruppo proprietario della cartella `/usr/src` è il gruppo '''src'''. Per inserire il proprio utente nel gruppo '''src''' è sufficiente digitare il seguente comando in una finestra di terminale, sostituendo alla dicitura «nomeutente» il proprio nome utente:
{{{
 0. Per inserire il proprio utente nel gruppo '''src''' è sufficiente digitare il seguente comando in un [[AmministrazioneSistema/Terminale|terminale]], sostituendo alla dicitura «`nomeutente`» il proprio nome utente:{{{
Linea 50: Linea 52:

La
modifica verrà applicata all'accesso successivo.

Qualora il gruppo '''src''' non avesse più i diritti di scrittura sulla cartella `/usr/src`, questi dovranno essere ripristinati con il seguente comando:
 Qualora il gruppo '''src''' non avesse più i diritti di scrittura sulla cartella `/usr/src`, questi dovranno essere ripristinati con il seguente comando:
Linea 57: Linea 56:

Scompattare e spostare i sorgenti nella cartella di destinazione:
{{{
 La modifica verrà applicata all'accesso successivo.
0. Scompattare e spostare i sorgenti nella cartella di destinazione con il seguente comando:{{{
Linea 66: Linea 64:
Entrare nella directory dei sorgenti del kernel appena scaricati:
{{{
Entrare nella directory dei sorgenti del kernel appena scaricati:{{{
Linea 83: Linea 80:
Copiare la ''patch'' nella directory dei sorgenti del kernel e digitare il seguente comando:
{{{
 0. Copiare la ''patch'' nella directory dei sorgenti del kernel e digitare il seguente comando:{{{
Linea 87: Linea 83:

L'opzione '''--dry-run''' permette di simulare l'applicazione della ''patch'' senza modificare realmente i file. Se non vengono visualizzati errori, si può procedere con l'applicazione della stessa rieseguendo il comando precedente senza l'opzione '''--dry-run'''.

Se il procedimento non dovesse andare a buon fine, sarà necessario verificare di aver scaricato la versione corretta della ''patch'' e ripetere il procedimento.
 L'opzione '''--dry-run''' permette di simulare l'applicazione della ''patch'' senza modificare realmente i file.
 0. Se non vengono visualizzati errori, si può procedere con l'applicazione della stessa rieseguendo il comando precedente senza l'opzione '''--dry-run''':{{{
bzcat [NOME_DELLA_PATCH].bz2 | patch -p1
}}}
 0. Se il procedimento non dovesse andare a buon fine, sarà necessario verificare di aver scaricato la versione corretta della ''patch'' e ripetere il procedimento.
Linea 96: Linea 93:
 make gconfig make gconfig
Linea 98: Linea 95:
 * grafica su '''Kubuntu''' e ''''Lubuntu''' (usando le librerie qt){{{
 make xconfig
 * grafica su '''Kubuntu''' e ''''Lubuntu''' con '''LXQt''' (usando le librerie qt){{{
make xconfig
Linea 102: Linea 99:
 make menuconfig make menuconfig
Linea 105: Linea 102:
 make config make config
Linea 107: Linea 104:
Linea 114: Linea 110:
È possibile importare la configurazione di un altro kernel e partire da questa per effettuare ulteriori personalizzazioni. I file di configurazione per i kernel attualmente installati nel sistema si trovano nella directory `/boot` e sono chiamati `config-2.6*`, ma è possibile importare un qualunque file di configurazione valido. È possibile importare la configurazione di un altro kernel e partire da questa per effettuare ulteriori personalizzazioni. I file di configurazione per i kernel attualmente installati nel sistema si trovano nella directory `/boot` e hanno un nome che segue lo standard `config-versione_kernel` (ad esempio `config-4.15.0-58-generic`). È comunque possibile importare un qualunque file di configurazione valido.
Linea 116: Linea 113:
Lo stesso risultato è possibile raggiungerlo copiando a mano un file di configurazione per il kernel all'interno della directory con i sorgenti e rinominando il file in `.config`, dopodichè si avvia il programma di configurazione; oppure se non si vuole usare l'interfaccia grafica, `make oldconfig` importa direttamente la configurazione del kernel attualmente in esecuzione sul computer, e con un'interfaccia a linea di comando propone una ad una tutte le opzioni presenti nel nuovo sorgente.}}} Lo stesso risultato è possibile raggiungerlo copiando a mano un file di configurazione per il kernel all'interno della directory con i sorgenti e rinominando il file in `.config`, dopodichè si avvia il programma di configurazione. In alternativa, se non si vuole utilizzare l'interfaccia grafica, il comando `make oldconfig` importa direttamente la configurazione del kernel attualmente in esecuzione sul computer e, con un'interfaccia a linea di comando, propone una ad una tutte le opzioni presenti nel nuovo sorgente.
}}}
Linea 118: Linea 116:
Alla fine la configurazione viene salvata all'interno del file `.config` presente nella cartella del kernel. È consigliato farne una copia, se si è soddisfatti del lavoro svolto. Terminata la procedura, la configurazione viene salvata all'interno del file `.config` presente nella cartella del kernel. Si consiglia di farne una copia, se si è soddisfatti del lavoro svolto.
Linea 122: Linea 120:
Seguire quanto descritto per evitare spiacevoli inconvenienti: Seguire quanto descritto per evitare problemi indesiderati:
Linea 124: Linea 122:
 1. In «'''General Setup'''» attivare:  0. In «'''General Setup'''» attivare:
Linea 128: Linea 126:
 1. In «'''Processor type and features'''»:  0. In «'''Processor type and features'''»:
Linea 137: Linea 135:
 1. In «'''Block layer -> IO Schedulers'''» lasciare solo «'''CFQ I/O scheduler'''», otterrete una migliore performance.  0. In «'''Block layer -> IO Schedulers'''» lasciare solo «'''CFQ I/O scheduler'''», otterrete una migliore performance.
Linea 139: Linea 137:
 1. In «'''Kernel hacking'''» deselezionare «'''Kernel debugging'''».  0. In «'''Kernel hacking'''» deselezionare «'''Kernel debugging'''».
Linea 141: Linea 139:
 1. In «'''Device Drivers -> Character devices'''» selezionare «'''Virtual terminal'''».  0. In «'''Device Drivers -> Character devices'''» selezionare «'''Virtual terminal'''».
Linea 143: Linea 141:
== Compilare == == Compilazione ==
Linea 145: Linea 143:
Finita la fase di personalizzazione, si passa alla compilazione. Finita la fase di personalizzazione, occorre procedere con la compilazione.
Linea 147: Linea 145:
Nel caso in cui si possiede un sistema multiprocessore è possibile impostare la variabile ''CONCURRENCY_LEVEL'' affinché vengano eseguite più compilazioni in parallelo. Ad esempio per un processore con 2 core è possibile impostare tale valore a 2: {{{  * Nel caso in cui si possiede un sistema multiprocessore è possibile impostare la variabile ''CONCURRENCY_LEVEL'' affinché vengano eseguite più compilazioni in parallelo. Ad esempio per un processore con 2 core è possibile impostare tale valore a 2: {{{
Linea 151: Linea 149:
Qualora i sorgenti fossero già stati compilati in passato e si desiderasse ripulirli (ri-eseguire la compilazione di tutti i pacchetti): {{{  * Qualora i sorgenti fossero già stati compilati in passato e si desiderasse ripulirli (ri-eseguire la compilazione di tutti i pacchetti): {{{
Linea 154: Linea 152:
Il comando consigliato per compilare il kernel è: {{{  Il comando consigliato per compilare il kernel è: {{{
Linea 158: Linea 156:
L'opzione «'''--rootcmd'''» è necessaria perchè alcuni passaggi nella creazione del pacchetto richiedono un ambiente di root, che fakeroot simula.  * L'opzione «'''--rootcmd'''» è necessaria perchè alcuni passaggi nella creazione del pacchetto richiedono un ambiente di root, che fakeroot simula.
Linea 160: Linea 158:
L'opzione «'''--initrd'''» serve a creare un file immagine di una partizione speciale (initial ram disk), che all'avvio del sistema verrà caricata nella ram, montata temporaneamente come directory root e usata per caricare i moduli strettamente necessari per l'avvio del sistema, prima di venire sostituita dalla partizione contenente il sistema reale. L'immagine initrd è usata soprattutto nei kernel ufficiali, che devono supportare un gran numero di chipset, file system, dischi fissi ecc... e perciò caricano tutti questi moduli nell'initrd. Serve anche nel caso si desideri avere un bootsplash. Perché l'initrd funzioni, è necessario che l' opzione 'RAM disk support' nella sezione 'Block Device' della configurazione del kernel sia abilitata. Per poter fare a meno di questa opzione è necessario, nella sezione '''Device Drivers''', compilare staticamente nel kernel sia il modulo relativo al chipset della propria scheda madre, sia il modulo relativo al filesystem usato nella partizione di root (in questo modo l'avvio risulterà anche un po' più veloce).  *L'opzione «'''--initrd'''» serve a creare un file immagine di una partizione speciale (initial ram disk), che all'avvio del sistema verrà caricata nella ram, montata temporaneamente come directory root e usata per caricare i moduli strettamente necessari per l'avvio del sistema, prima di venire sostituita dalla partizione contenente il sistema reale. L'immagine initrd è usata soprattutto nei kernel ufficiali, che devono supportare un gran numero di chipset, file system, dischi fissi ecc... e perciò caricano tutti questi moduli nell'initrd. Serve anche nel caso si desideri avere un bootsplash. Perché l'initrd funzioni, è necessario che l' opzione 'RAM disk support' nella sezione 'Block Device' della configurazione del kernel sia abilitata. Per poter fare a meno di questa opzione è necessario, nella sezione '''Device Drivers''', compilare staticamente nel kernel sia il modulo relativo al chipset della propria scheda madre, sia il modulo relativo al filesystem usato nella partizione di root (in questo modo l'avvio risulterà anche un po' più veloce).
Linea 162: Linea 160:
L'opzione «'''--append-to-version'''», facoltativa, serve a definire un suffisso personalizzato per il proprio kernel, visualizzabile attraverso il comando: {{{  * L'opzione «'''--append-to-version'''», facoltativa, serve a definire un suffisso personalizzato per il proprio kernel, visualizzabile attraverso il comando: {{{
Linea 165: Linea 163:
Si può scrivere ciò che si vuole, basta che sia scritto in minuscolo, senza punti e senza caratteri extra.  Si può scrivere anche un'altra denominazione, purché scritta in minuscolo senza punti e senza caratteri extra.
Linea 167: Linea 165:
I target specificano quali pacchetti '''deb''' verranno creati:
 * Il target '''kernel_image''' compila il kernel e tutti i moduli scelti nella configurazione, e ne crea un pacchetto `.deb`.
 * I target specificano quali pacchetti '''deb''' verranno creati:
  * Il target '''kernel_image''' compila il kernel e tutti i moduli scelti nella configurazione, e ne crea un pacchetto `.deb`.
  * Il target '''kernel_headers''' crea un pacchetto `.deb` con una serie di file e script che consentono di compilare moduli esterni in un secondo momento. Non è necessario, in quanto gli stessi sorgenti del kernel servono già allo scopo, ma se si desidera eliminare in seguito i sorgenti del kernel (magari per liberare spazio su disco) è bene specificare anche questo target.
  * Il target '''modules_image''' compila i sorgenti dei moduli esterni scaricati a parte e posizionati in `/usr/src/modules` (come i moduli per i driver video proprietari). Se non ce ne fossero, non serve aggiungere questo parametro.
Linea 170: Linea 170:
 * Il target '''kernel_headers''' crea un pacchetto `.deb` con una serie di file e script che consentono di compilare moduli esterni in un secondo momento. Non è necessario, in quanto gli stessi sorgenti del kernel servono già allo scopo, ma se si desidera eliminare in seguito i sorgenti del kernel (magari per liberare spazio su disco) è bene specificare anche questo target. == Installazione ==
Linea 172: Linea 172:
 * Il target '''modules_image''' compila i sorgenti dei moduli esterni scaricati a parte e posizionati in `/usr/src/modules` (come i moduli per i driver video proprietari). Se non ce ne fossero, non serve aggiungere questo parametro.

== Installare ==

Entrare nella cartella superiore: {{{
 0. Spostarsi nella cartella superiore: {{{
Linea 179: Linea 175:

E
installare i pacchetti appena creati. Da terminale digitare: {{{
 0. Installare i pacchetti appena creati digitando da terminale: {{{
Linea 184: Linea 179:
Nelle ultime versioni l'immagine del kernel è denominata come linux-image-[VERSIONE_KERNEL]_[ARCHITETTURA].deb  Nelle ultime versioni l'immagine del kernel è denominata come `linux-image-[VERSIONE_KERNEL]_[ARCHITETTURA].deb`.<<BR>>
 Il boot loader [[AmministrazioneSistema/Grub|GRUB]] verrà aggiornato automaticamente.
 0. Riavviare il computer e quindi scegliere dal menu di GRUB il nuovo kernel installato.
Linea 186: Linea 183:
Il boot loader [[AmministrazioneSistema/Grub|GRUB]] verrà aggiornato automaticamente.

Riavviare il computer e quindi scegliere il nuovo kernel installato.

Se ci sono problemi, riavviare la macchina e utilizzare il vecchio kernel.
Qualora si riscontrino problemi, riavviare il sistema e selezionare la versione del kernel precedentemente utilizzata.
Linea 194: Linea 187:
 * [[https://help.ubuntu.com › community › Kernel › Compile|Guida su help Ubuntu internazionale]] in inglese.
 * [[https://wiki.ubuntu.com › Kernel › BuildYourOwnKernel|Guida su wiki Ubuntu internazionale]] in inglese.
 * [[https://wiki.archlinux.org › index.php › Kernels › Compilation › Traditional_(Italiano)|Compilazione tradizionale]] a cura di Archlinux.org
 * [[http://guide.debianizzati.org › index.php ›
LKN:_Personalizzare_un_Kernel|Personalizzare kernel]] a cura di Debianizzati.org
 * [[http://www.kroah.com/lkn/|Linux Kernel in a Nutshell]] di Greg Kroah-Hartman, disponibile nei termini della licenza Creative Commons Attribution-Share Alike 2.5
 * [[http://guide.debianizzati.org/index.php/Linux_Kernel_in_a_Nutshell|Traduzione di Linux Kernel in a Nutshell]] a cura di Debianizzati.org
 * [[https://help.ubuntu.com/community/Kernel/Compile|Guida su help Ubuntu internazionale]] (in inglese)
 * [[https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel|Guida su wiki Ubuntu internazionale]] (in inglese)
 * [[https://wiki.archlinux.org/index.php/Kernels/Compilation/Traditional_(Italiano)|Compilazione tradizionale]] (Wiki di Arch)
 * [[http://guide.debianizzati.org/inde
x.php/LKN:_Personalizzare_un_Kernel|Personalizzare kernel]] (Debianizzati)
 * [[http://www.kroah.com/lkn/|Linux Kernel in a Nutshell]]
 * [[http://
guide.debianizzati.org/index.php/Linux_Kernel_in_a_Nutshell|Linux Kernel in a Nutshell]] (Traduzione a cura di Debianizzati)
Linea 201: Linea 195:
CategoryDaRevisionare CategoryAmministrazione CategoryProgrammazione CategoryAmministrazione CategoryProgrammazione


Problemi in questa pagina? Segnalali in questa discussione

Introduzione

In informatica, il kernel costituisce il nucleo di un sistema operativo. Si tratta di un software con il compito di fornire ai processi in esecuzione sull'elaboratore un accesso sicuro e controllato all'hardware e una porzione di tempo-macchina (multitasking).

Installare un kernel ricompilato anziché uno di quelli precompilati forniti da Ubuntu può portare alcuni vantaggi, come:

  • avere una configurazione diversa e più adatta alla propria macchina.
  • velocizzare l'avvio di sistema, nel caso non si usi l'initrd.
  • avere un sistema operativo leggermente più reattivo grazie all'ottimizzazione basata sul tipo di processore.

Non è necessario compilare un kernel nei casi in cui l'hardware non funzioni alla perfezione o le periferiche non vengano completamente riconosciute. A volte per far riconoscere correttamente al sistema una data periferica basta caricare i moduli necessari con le dovute opzioni. È utile ricompilare il kernel solo se tali moduli non sono presenti o se si è certi che i driver della periferica sono presenti solo in una versione diversa da quella attualmente in uso. Inoltre, l'aumento di prestazioni tende a essere irrilevante, soprattutto su computer già veloci.

È bene tenere 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 dipendenze

Il processo di compilazione richiede l'installazione di diversi pacchetti, per semplificare la procedura d'installazione digitare il seguente comando:

sudo apt-get install --install-suggests build-essential bin86 fakeroot kernel-package liblz4-dev liblz4-tool ubuntu-core-libs-dev 

Inoltre, se si desidera usare un'interfaccia grafica per configurare il kernel, è necessario installare uno dei seguenti pacchetti:

  • libglade2-dev, se si usa Ubuntu o le derivate escluse quelle del punto successivo.

  • qttools5-dev, se si usa Kubuntu o Lubuntu con LxQt.

  • libncurses5-dev, per avere una interfaccia grafica direttamente dentro il terminale e spostarsi tra i menu usando la sola tastiera (utile per computer poco potenti o senza server grafico).

Scaricare l'archivio dei sorgenti del kernel

  • Se si desidera usare l'ultima versione stabile del kernel Linux ufficiale (la cosiddetta versione vanilla), scaricare il pacchetto da questo indirizzo.

  • Se si desidera usare la versione del kernel Linux modificata dagli sviluppatori di Ubuntu, è possibile prelevarla dai repository, installando il pacchetto linux-source. Questa versione ha il vantaggio di contenere driver e componenti aggiuntivi che gli sviluppatori di Ubuntu hanno ritenuto di integrare nel kernel, ma per contro potrebbe non essere sempre aggiornata rispetto all'ultima versione del kernel Linux ufficiale.

Estrarre i sorgenti

Sebbene non sia strettamente necessario, la policy Debian consiglia di usare la directory /usr/src per compilare il kernel.
Il gruppo proprietario della cartella /usr/src è il gruppo src.

  1. Per inserire il proprio utente nel gruppo src è sufficiente digitare il seguente comando in un terminale, sostituendo alla dicitura «nomeutente» il proprio nome utente:

    sudo adduser nomeutente src

    Qualora il gruppo src non avesse più i diritti di scrittura sulla cartella /usr/src, questi dovranno essere ripristinati con il seguente comando:

sudo chmod -R g+wr /usr/src
  • La modifica verrà applicata all'accesso successivo.

0. Scompattare e spostare i sorgenti nella cartella di destinazione con il seguente comando:

tar -xjf linux-[VERSIONE_SCARICATA].tar.bz2
mv linux-[VERSIONE_SCARICATA] /usr/src/

Compilazione e installazione

Entrare nella directory dei sorgenti del kernel appena scaricati:

cd /usr/src/linux-[VERSIONE_SCARICATA]

Applicare le patch

A questo punto, se necessario, sarà possibile applicare una o più patch al kernel.

Di solito le patch vengono applicate utilizzando l'insieme di due comandi: patch e cat (o anche bzcat se il file ha estensione .bz2).

  1. Copiare la patch nella directory dei sorgenti del kernel e digitare il seguente comando:

    bzcat [NOME_DELLA_PATCH].bz2 | patch -p1 --dry-run

    L'opzione --dry-run permette di simulare l'applicazione della patch senza modificare realmente i file.

  2. Se non vengono visualizzati errori, si può procedere con l'applicazione della stessa rieseguendo il comando precedente senza l'opzione --dry-run:

    bzcat [NOME_DELLA_PATCH].bz2 | patch -p1
  3. Se il procedimento non dovesse andare a buon fine, sarà necessario verificare di aver scaricato la versione corretta della patch e ripetere il procedimento.

Configurazione

Per personalizzare la configurazione, ci sono diverse modalità:

  • grafica su Ubuntu o le derivate escluse quelle del punto successivo (usando le librerie gtk)

    make gconfig
  • grafica su Kubuntu e 'Lubuntu con LXQt (usando le librerie qt)

    make xconfig
  • pseudo-grafica nel terminale (usando le librerie ncurses):

    make menuconfig
  • testuale nel terminale:

    make config

L'errata configurazione di un semplice modulo può compromettere l'intero sistema. Per cercare di ridurre al minimo gli errori, usare il comando «lshw» per visualizzare il proprio hardware.

È possibile importare la configurazione di un altro kernel e partire da questa per effettuare ulteriori personalizzazioni. I file di configurazione per i kernel attualmente installati nel sistema si trovano nella directory /boot e hanno un nome che segue lo standard config-versione_kernel (ad esempio config-4.15.0-58-generic). È comunque possibile importare un qualunque file di configurazione valido.

Lo stesso risultato è possibile raggiungerlo copiando a mano un file di configurazione per il kernel all'interno della directory con i sorgenti e rinominando il file in .config, dopodichè si avvia il programma di configurazione. In alternativa, se non si vuole utilizzare l'interfaccia grafica, il comando make oldconfig importa direttamente la configurazione del kernel attualmente in esecuzione sul computer e, con un'interfaccia a linea di comando, propone una ad una tutte le opzioni presenti nel nuovo sorgente.

Terminata la procedura, la configurazione viene salvata all'interno del file .config presente nella cartella del kernel. Si consiglia di farne una copia, se si è soddisfatti del lavoro svolto.

Impostazioni consigliate

Seguire quanto descritto per evitare problemi indesiderati:

  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 «Block layer -> IO Schedulers» lasciare solo «CFQ I/O scheduler», otterrete una migliore performance.

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

  5. In «Device Drivers -> Character devices» selezionare «Virtual terminal».

Compilazione

Finita la fase di personalizzazione, occorre procedere con la compilazione.

  • Nel caso in cui si possiede un sistema multiprocessore è possibile impostare la variabile CONCURRENCY_LEVEL affinché vengano eseguite più compilazioni in parallelo. Ad esempio per un processore con 2 core è possibile impostare tale valore a 2:

    export CONCURRENCY_LEVEL=2
  • Qualora i sorgenti fossero già stati compilati in passato e si desiderasse ripulirli (ri-eseguire la compilazione di tutti i pacchetti):

    make-kpkg --rootcmd fakeroot clean

    Il comando consigliato per compilare il kernel è:

    make-kpkg --rootcmd fakeroot --initrd kernel_image kernel_headers modules_image
  • L'opzione «--rootcmd» è necessaria perchè alcuni passaggi nella creazione del pacchetto richiedono un ambiente di root, che fakeroot simula.

  • L'opzione «--initrd» serve a creare un file immagine di una partizione speciale (initial ram disk), che all'avvio del sistema verrà caricata nella ram, montata temporaneamente come directory root e usata per caricare i moduli strettamente necessari per l'avvio del sistema, prima di venire sostituita dalla partizione contenente il sistema reale. L'immagine initrd è usata soprattutto nei kernel ufficiali, che devono supportare un gran numero di chipset, file system, dischi fissi ecc... e perciò caricano tutti questi moduli nell'initrd. Serve anche nel caso si desideri avere un bootsplash. Perché l'initrd funzioni, è necessario che l' opzione 'RAM disk support' nella sezione 'Block Device' della configurazione del kernel sia abilitata. Per poter fare a meno di questa opzione è necessario, nella sezione Device Drivers, compilare staticamente nel kernel sia il modulo relativo al chipset della propria scheda madre, sia il modulo relativo al filesystem usato nella partizione di root (in questo modo l'avvio risulterà anche un po' più veloce).

  • L'opzione «--append-to-version», facoltativa, serve a definire un suffisso personalizzato per il proprio kernel, visualizzabile attraverso il comando:

    uname -r
    Si può scrivere anche un'altra denominazione, purché scritta in minuscolo senza punti e senza caratteri extra.
  • I target specificano quali pacchetti deb verranno creati:

    • Il target kernel_image compila il kernel e tutti i moduli scelti nella configurazione, e ne crea un pacchetto .deb.

    • Il target kernel_headers crea un pacchetto .deb con una serie di file e script che consentono di compilare moduli esterni in un secondo momento. Non è necessario, in quanto gli stessi sorgenti del kernel servono già allo scopo, ma se si desidera eliminare in seguito i sorgenti del kernel (magari per liberare spazio su disco) è bene specificare anche questo target.

    • Il target modules_image compila i sorgenti dei moduli esterni scaricati a parte e posizionati in /usr/src/modules (come i moduli per i driver video proprietari). Se non ce ne fossero, non serve aggiungere questo parametro.

Installazione

  1. Spostarsi nella cartella superiore:

    cd ..
  2. Installare i pacchetti appena creati digitando da terminale:

    sudo dpkg -i kernel-image-[VERSIONE_DEL_KERNEL].deb
    sudo dpkg -i linux-headers-[VERSIONE_DEL_KERNEL].deb

    Nelle ultime versioni l'immagine del kernel è denominata come linux-image-[VERSIONE_KERNEL]_[ARCHITETTURA].deb.
    Il boot loader GRUB verrà aggiornato automaticamente.

  3. Riavviare il computer e quindi scegliere dal menu di GRUB il nuovo kernel installato.

Qualora si riscontrino problemi, riavviare il sistema e selezionare la versione del kernel precedentemente utilizzata.

Ulteriori risorse


CategoryAmministrazione CategoryProgrammazione