Aller au contenu

Void Linux - Basculer vers le précédent noyau LTS

Void Linux

La distribution Void Linux est une rolling release qui vise un maximum de stabilité dans la mesure du possible. Une installation standard utilisera le dernier noyau LTS, par exemple.

Très concrètement, voici la liste de tous les noyaux disponibles. À l'heure où j'écris ces lignes, c'est le noyau 6.12 qui est installé par défaut :

# xbps-query --regex -Rs '^linux[0-9.]+-[0-9._]+' | sort -Vrk2
[-] linux6.17-6.17.8_1   Linux kernel and modules (6.17 series)
[-] linux6.16-6.16.12_1  Linux kernel and modules (6.16 series)
[-] linux6.15-6.15.11_1  Linux kernel and modules (6.15 series)
[-] linux6.14-6.14.11_1  Linux kernel and modules (6.14 series)
[-] linux6.13-6.13.12_1  Linux kernel and modules (6.13 series)
[*] linux6.12-6.12.58_1  Linux kernel and modules (6.12 series)
[-] linux6.6-6.6.116_1   Linux kernel and modules (6.6 series)
[-] linux6.1-6.1.154_1   Linux kernel and modules (6.1 series)
[-] linux5.15-5.15.193_1 Linux kernel and modules (5.15 series)
[-] linux5.4-5.4.296_1   Linux kernel and modules (5.4 series)

Je viens de tomber sur un os avec un pilote NVidia legacy qui semble avoir des problèmes avec ce noyau.1 Or, il fonctionne parfaitement avec le précédent noyau LTS de la série 6.6.

Le passage à une lignée plus ancienne de noyaux est certes expliqué dans la documentation officielle, mais c'est un peu laconique. J'ai réussi à me dépatouiller avec l'aide précieuse du forum de Void Linux.

Mon installation fraîche d'un système minimal de Void Linux compte deux noyaux :

  • celui fourni par l'ISO

  • celui installé par la mise à jour initiale

# ls -lh /boot/vmlinuz-6.12.*
-rw-r--r-- 1 root root 14M 24 janv.  2025 /boot/vmlinuz-6.12.11_1
-rw-r--r-- 1 root root 14M 14 nov.  03:05 /boot/vmlinuz-6.12.58_1

Ici, je peux déjà faire le ménage en utilisant l'outil vkpurge fourni par la distribution :

# vkpurge list all
6.12.11_1
# vkpurge rm all
# ls -lh /boot/vmlinuz-6.12.*
-rw-r--r-- 1 root root 14M 14 nov.  03:05 /boot/vmlinuz-6.12.58_1

Le noyau actuel est fourni par les métapaquets correspondants linux et linux-headers. Pour installer le noyau LTS précédent, j'installe les métapaquets linux-lts et linux-lts-headers :

# xbps-install -S linux-lts linux-lts-headers

Je redémarre sur ce noyau :

# uname -r
6.6.116_1

Je peux configurer le gestionnaire de paquets de manière à ce qu'il ignore les deux métapaquets linux et linux-lts. Pour ce faire, je crée un fichier /etc/xbps.d/10-linux-lts.conf comme ceci :

/etc/xbps.d/10-linux-lts.conf
ignorepkg=linux
ignorepkg=linux-headers

Partant de là, je supprime d'abord le métapaquet du noyau plus récent :

# xbps-query -l | grep linux-6.12
ii linux-6.12_1          Linux kernel meta package
# xbps-remove linux-6.12_1

Ensuite je supprime le paquet à proprement parler :

# xbps-query -l | grep linux6.12
ii linux6.12-6.12.58_1   Linux kernel and modules (6.12 series)
# xbps-remove linux6.12-6.12.58_1

Je supprime manuellement les vestiges du noyau récent dans /boot :

# cd /boot/
# ls *6.12*
config-6.12.58_1  vmlinuz-6.12.58_1
# ls *6.12* | xargs rm -f

Je n'oublie pas de mettre à jour mon chargeur de démarrage :

# update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.6.116_1
Found initrd image: /boot/initramfs-6.6.116_1.img
...

Je redémarre et je vérifie si tout va bien :

# uname -r
6.6.116_1

  1. Fuck you, NVidia !