Mise à jour du noyau sous Gentoo
Table des matières
Voici un bref article qui récapitule comment mettre à jour son noyau sous Gentoo en récupérant l'ancienne config.
Lors de la mise à jour du système faite avec cette commande :
Le noyau peut être mis à jour :
Dans cet exemple, je passe d'un noyau 4.4.6 vers 4.4.21.
Une fois les sources mises à jour, on modifie le lien symbolique
Ici on voit bien que le lien symbolique pointe sur les anciennes sources :
On supprime le vieux lien et on créé le nouveau, doit de manière manuelle :
Soit avec la commande eselect :
Ensuite, on copie l'ancienne config dans les nouvelles sources. 3 possibilités :
Via le config.gz dans /proc (prend la config du kernel en fonctionnement) :
Via le fichier de config dans /boot :
Ou via l'ancien fichier .config dans l'ancien dossier de sources :
Ensuite, on lance un petit coup l'outil menuconfig pour initialiser les éventuelles nouvelles options à une valeur par défaut :
On lance la compilation (avec -jX où X = nb proc + 1) :
On installe les modules :
Puis on installe le noyau :
Si on utilise un initramfs :
Exemple avec le noyau et le module LVM :
Et on met à jour GRUB :
Si besoin, on peut reconstruire les modules associés :
On peut conserver les précédents noyaux. Ainsi, il n'y a rien à faire de spécial.
On a juste à indiquer à portage qu'on souhaite conserver les sources de ce noyau en les ajoutant au world avec son numéro de slot.
Exemple avec le noyau 4.4.6 :
Si on veut faire un peu de ménage, on peut supprimer des vieux kernels. Exemple ici avec le 4.4.6 :
On supprime si ce n'est pas fait le noyau via emerge avec son numéro de slot :
On supprime les résidus des sources :
Les modules :
Les éléments dans /boot :
Introduction
Voici un bref article qui récapitule comment mettre à jour son noyau sous Gentoo en récupérant l'ancienne config.
Mise à jour
Lors de la mise à jour du système faite avec cette commande :
Code BASH :
emerge -aquvDN --with-bdeps=y @world
Le noyau peut être mis à jour :
Code TEXT :
[ebuild NS ] sys-kernel/gentoo-sources-4.4.21 [4.4.6] USE="-build -experimental -symlink"
Dans cet exemple, je passe d'un noyau 4.4.6 vers 4.4.21.
Une fois les sources mises à jour, on modifie le lien symbolique
Code BASH :
cd /usr/src
Ici on voit bien que le lien symbolique pointe sur les anciennes sources :
Code BASH :
ls -l total 8 lrwxrwxrwx 1 root root 18 30 avril 11:41 linux -> linux-4.4.6-gentoo drwxr-xr-x 25 root root 4096 20 oct. 16:49 linux-4.4.21-gentoo drwxr-xr-x 22 root root 4096 20 oct. 17:01 linux-4.4.6-gentoo
On supprime le vieux lien et on créé le nouveau, doit de manière manuelle :
Code BASH :
rm linux ln -sv linux-4.4.21-gentoo linux « linux » -> « linux-4.4.21-gentoo »
Soit avec la commande eselect :
Code BASH :
eselect kernel list
Code TEXT :
Available kernel symlink targets: [1] linux-4.4.6-gentoo * [2] linux-4.4.21-gentoo
Code BASH :
eselect kernel set 2
Ensuite, on copie l'ancienne config dans les nouvelles sources. 3 possibilités :
Via le config.gz dans /proc (prend la config du kernel en fonctionnement) :
Code BASH :
zcat /proc/config.gz > /usr/src/linux/.config
Via le fichier de config dans /boot :
Code BASH :
cp /boot/config-4.4.6-gentoo-adrien /usr/src/linux/.config
Ou via l'ancien fichier .config dans l'ancien dossier de sources :
Code BASH :
cp /usr/src/linux-4.4.6-gentoo/.config /usr/src/linux/.config
Ensuite, on lance un petit coup l'outil menuconfig pour initialiser les éventuelles nouvelles options à une valeur par défaut :
Code BASH :
make menuconfig
On lance la compilation (avec -jX où X = nb proc + 1) :
Code BASH :
make -j9
On installe les modules :
Code BASH :
make modules_install
Puis on installe le noyau :
Code BASH :
make install
Si on utilise un initramfs :
Code BASH :
dracut --kver $version
Exemple avec le noyau et le module LVM :
Code BASH :
dracut -a lvm --kver 4.19.86-gentoo-adrien
Et on met à jour GRUB :
Code BASH :
grub-mkconfig -o /boot/grub/grub.cfg
Si besoin, on peut reconstruire les modules associés :
Code BASH :
emerge -q @module-rebuild
Conserver un ancien kernel
On peut conserver les précédents noyaux. Ainsi, il n'y a rien à faire de spécial.
On a juste à indiquer à portage qu'on souhaite conserver les sources de ce noyau en les ajoutant au world avec son numéro de slot.
Exemple avec le noyau 4.4.6 :
Code BASH :
emerge --noreplace gentoo-sources:4.4.6
Supprimer des vieux kernels
Si on veut faire un peu de ménage, on peut supprimer des vieux kernels. Exemple ici avec le 4.4.6 :
On supprime si ce n'est pas fait le noyau via emerge avec son numéro de slot :
Code BASH :
emerge -C gentoo-sources:4.4.6
On supprime les résidus des sources :
Code BASH :
rm -rf /usr/src/linux-4.4.6
Les modules :
Code BASH :
rm -rf /lib/modules/4.4.6
Les éléments dans /boot :
Code BASH :
rm /boot/vmlinuz-4.4.6 rm /boot/System.map-4.4.6 rm /boot/config-4.4.6