Kernel/Upgrade/it

Questo articolo Article description::descrive la procedura per l'aggiornamento ad una nuova versione del [[kernel Linux.]]

La generazione di un nuovo kernel dalla nuova sorgente è lo stesso processo di creazione di un kernel durante l'installazione del sistema. La differenza è che si potrebbe usare la configurazione del vecchio kernel per creare la configurazione del nuovo kernel. L'uso della vecchia configurazione permette l'utente di evitare di esplorare tutte le opzioni del kernel nuovamente (come )

La configurazione del kernel è salvata in un file nominato nella directory che contiene il kernel stesso. Un nuovo kernel potrebbe aver avuto opzioni o funzionalità aggiunte o rimosse dal vecchio kernel. La configurazione del kernel specifica se una funzionalità del kernel debba essere attivata o meno, forse integrato nel kernel, o forse costruito come moduli che possono essere caricati nel kernel in esecuzione su richiesta. Quindi il file di configurazione di un nuovo kernel potrebbe avere nuove voci di configurazioni non presenti nel vecchio kernel, e potrebbe non avere alcune voci presenti invece nel file di configurazione del vecchio kernel.

Per far fronte a tali cambiamenti del file di configurazione, il file di configurazione del vecchio kernel deve essere convertito in una configurazione utilizzabile con il nuovo. Questo articolo mostra come creare un nuovo kernel dalla nuova sorgente del kernel con la conversione del file di configurazione provenienti dal vecchio kernel.

Kernel upgrade in Gentoo involves these steps:
 * Step 1: Emerging the new kernel sources.
 * Step 2: Setting the right symlink to the new kernel.
 * Step 3: Moving to the new kernel's folder.
 * Step 4: Adjusting the file for the options introduced to, or removed from the new kernel's configuration.
 * Step 5: Building the kernel and the initramfs.
 * Step 6: Updating the bootloader.
 * Step 7: Removing or keeping the old kernel.

Installazione
L'aggiornamento del kernel potrebbe essere una buona idea quando delle nuove sorgenti sono state rilasciate. Le nuove sorgenti del kernel sono a volte installati durante l'aggiornamento del sistema tramite il seguente comando

Ovviamente le sorgenti del kernel possono essere installate direttamente usando il seguente comando (si sostituisca "gentoo-sources" con qualunque versione del kernel che è in uso):

L'installazione di nuove sorgenti del kernel non fornisce all'utente un nuovo kernel. E' necessario produrre ed installare un nuovo kernel dalla nuova sorgente e quindi riavviare il sistema per eseguire effettivamente il nuovo kernel.

Configurazione
The kernel configuration is saved in a file named in the directory that holds the kernel sources, a symlink is used to point to that directory.

Il link simbolico dovrebbe sempre puntare alla directory contenente la sorgente del kernel attualmente in esecuzione. Questo può essere fatto in uno dei tre dei seguenti modi:


 * 1) Installare la sorgente del kernel con
 * 2) Impostare il link con eselect
 * 3) Aggiornare manualmente il link simbolico

Configurazione del link con eselect
Per impostare il link simbolico con :

Questo comando genera la lista dei kernel disponibili. L'asterisco indica quale sia la directory della sorgente selezionata.

Per cambiare la sorgente del kernel, per esempio alla seconda voce:

Aggiornamento manuale del link simbolico
Per impostare il link simbolico manualmente:

Installare la sorgente del kernel con la USE flag "symlink"
Questo implicherà che punti alla directory della sorgente del nuovo kernel.

Se necessario, il link può essere comunque modificato successivamente con uno degli altri due metodi.

Spostarsi nella nuova cartella
Ora che il link simbolico è stato modificato, cambia la directory di lavoro nella nuova cartella del kernel.

Copy the previous kernel configuration
La configurazione del precedente kernel necessita di essere copiata nella cartella della sorgente del nuovo kernel. Oltre alla copia di backup che è stata salvata in in un passaggio precedente, la vecchia configurazione può essere trovata in diversi punti:


 * Nel filesystem procfs, se l'opzione Enable access to .config through /proc/config.gz(CONFIG_IKCONFIG_PROC) è stata attivata nel kernel attualmente in esecuzione:


 * Dal vecchio kernel. Questo funziona solo quando il vecchio kernel è stato compilato con CONFIG_IKCONFIG:


 * Nella directory, se la configurazione è stata precedentemente installata in questa posizione:


 * Nella directory del kernel attualmente in esecuzione:


 * Nella directory, se l'opzione  è impostata nel file  e  è stato utilizzato in precedenza:

file.config
Per usare la configurazione di un vecchio kernel con uno nuovo, è necessario che questa sia prima convertita. La conversione può essere effettuata eseguendo oppure, in alternativa,.

make silentoldconfig
La seguente configurazione è come la configurazione basata su testo con. Per le nuove opzioni di configurazione, viene richiesta una decisione all'utente. Per esempio:

La stringa "(NEW)"" alla fine della linea sottolinea che questa opzione è nuova. Nelle parentesi quadre a sinistra della stringa ci sono le possibili risposte Yes (Sì), no (o), module (modulo) oppure ? per visualizzare l'aiuto. La risposta raccomandata (default) è in maiuscolo (in questo caso Y). L'aiuto riporta spiegazioni sull'opzione o sul driver.

Sfortunatamente non mostra molte informazioni per ogni opzione, come il contesto, e qualche volta è difficoltoso dare la giusta risposta. In questo caso, la migliore strada è ricordare il nome dell'opzione e ricontrollarla successivamente tramite uno dei strumenti grafici di configurazione del kernel.

make olddefconfig
Se tutte le nuovi opzioni di configurazioni possono essere impostate con il loro valore raccomandato (default) allora è possibile usare :

make help
E' possibile usare per vedere gli altri metodi di conversione:

Observing the difference
A diff tool can be used to compare the old and new files to see what options have been added:

And which have been removed:

Alternatively, the kernel provides a script to cleanly compare two config files even if the options have moved in the file itself:

make menuconfig
The options can then be researched and changed if necessary by running:

The menuconfig target is helpful because it safely handles kernel symbol dependency resolution.

Compilazione
Per questo passo, seguire i passi nell'articolo manual configuration.

Creazione e installazione automatizzate
È possibile compilare e installare automaticamente il kernel appena installato utilizzando gli hook di Portage. Sebbene siano possibili anche altri approcci, quanto segue è basato sul pacchetto genkernel e gentoo-sources. Richiede i seguenti prerequisiti:


 * 1)  è in grado di compilare e installare il kernel a cui il link simbolico  punta a   e al bootloader.
 * 2) Il use flag   è impostata per l'ebuild del kernel.

Se questi sono soddisfatti, installa semplicemente l'hook di Portage  come mostrato di seguito.

Reinstallare moduli kernel esterni
Ogni modulo esterno, come moduli kernel binari binary, necessitano di essere rigenerati per ogni nuovo kernel. Se il kernel non stato ancora generato, è necessario prima prepararlo per la generazione dei moduli esterni:

I pacchetti che contengono moduli kernel possono essere ricompilati usando il set :

Risoluzione dei problemi di generazione
Quando si stanno sperimentando problemi durante la ricompilazione del kernel corrente, è potrebbe essere d'aiuto sanificare la sorgente del kernel. Ci si assicuri prima di creare un backup del file dato che l'operazione lo elminerà. Ci si assicuri inoltre di non usare suffissi come o  dato che  eliminerà anche questi.

Update the bootloader
The upgraded and built kernel needs to be set up and eventually a bootloader or boot item updated, see Kernel/Configuration. Users of Grub can use the method below, users of other bootloaders must consult the handbook.

After making sure partition is mounted,

Using grub-mkconfig
The following command can be executed for updating grub's configuration file:

Using systemd-boot-gen to update systemd-boot UEFI configuration
Manual installation of :

Copy the kernel parameters to, the file should contain:

And run it using root privileges:

This will generate the boot configuration in for all the available  that have a matching.

Keeping the old kernel sources
Kernel sources will eventually become unsupported. Some packages require the current sources to build. To protect the new sources from being removed by a depclean, it can be added to the world file (/var/lib/portage/world) by:

Old sources that are no longer supported can be removed from the world file by:

Rimozione
Si veda l'articolo Rimozione del kernel.

Risorse esterne

 * kernel changelog con alcune spiegazioni in merito alle nuove funzionalità