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 /usr/src/linux via 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 peut copier la config du noyau actuellement en cours via :
On remarquera que la commande make trouve le bon fichier et va remplir les choix par défaut des nouvelles options parues depuis votre noyau actuel :
On lance la compilation (avec -jX où X = nb proc) :
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 on a des paquets qui installent des modules noyau (nvidia-drivers virtualbox-modules), recompiler ces modules avec les nouvelles sources :
Par défaut, si on ne fait rien, les sources (sauf les fichiers modifiés lors de la compilation) seront supprimées avec la commande emerge -ac. Les fichiers du noyau dans /boot, ainsi que les modules seront conservés sur le système.
Si on souhaite conserver les sources de ce noyau, on peut les ajouter manuellement au world grâce au numéro de slot du paquet gentoo-sources.
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 (vmlinuz, System.map, config et si présent initramfs) :
Introduction
Voici un bref article qui récapitule comment mettre à jour son noyau sous Gentoo en récupérant l'ancienne config.
Mise à jour
Installer les nouvelles sources
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.
Modifier le lien symbolique pour la compilation des modules
Une fois les sources mises à jour, on modifie le lien symbolique /usr/src/linux via 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
Recopier l'ancienne config
Manuellement
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
Automatiquement
On peut copier la config du noyau actuellement en cours via :
Code BASH :
make olddefconfig
On remarquera que la commande make trouve le bon fichier et va remplir les choix par défaut des nouvelles options parues depuis votre noyau actuel :
Code TEXT :
# using defaults found in /boot/config-4.4.6-gentoo-adrien # # # configuration written to .config #
Compiler
On lance la compilation (avec -jX où X = nb proc) :
Code BASH :
make -j12
On installe les modules :
Code BASH :
make modules_install
Puis on installe le noyau :
Code BASH :
make install
Générer Initramfs
Si on utilise un initramfs :
Code BASH :
dracut --kver $version
Exemple avec le noyau et le module LVM :
Code BASH :
dracut --kver 4.19.86-gentoo-adrien
Mise à jour de GRUB
Et on met à jour GRUB :
Code BASH :
grub-mkconfig -o /boot/grub/grub.cfg
SI on a des paquets qui installent des modules noyau (nvidia-drivers virtualbox-modules), recompiler ces modules avec les nouvelles sources :
Code BASH :
emerge @module-rebuild
Conserver un ancien kernel
Par défaut, si on ne fait rien, les sources (sauf les fichiers modifiés lors de la compilation) seront supprimées avec la commande emerge -ac. Les fichiers du noyau dans /boot, ainsi que les modules seront conservés sur le système.
Si on souhaite conserver les sources de ce noyau, on peut les ajouter manuellement au world grâce au numéro de slot du paquet gentoo-sources.
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 (vmlinuz, System.map, config et si présent initramfs) :
Code BASH :
rm -i /boot/*-4.4.6-*