Linux avancé : noyau et démarrage
Le noyau et sa version
Section intitulée « Le noyau et sa version »uname -r # noyau en cours (6.8.x sur Ubuntu 24.04, 7.0.x sur 26.04)uname -acat /proc/versioncat /etc/os-releasehostnamectllscpulspci -k # matériel PCI et pilote utilisélsusbsudo dmidecode -t system -t bios # informations du constructeurUbuntu LTS suit un noyau récent à l’installation ; le noyau HWE (hardware enablement) apporte les noyaux plus récents des versions suivantes pendant la vie de la LTS : apt policy linux-generic linux-generic-hwe-24.04.
Modules du noyau
Section intitulée « Modules du noyau »Le noyau charge à la demande des modules (pilotes, systèmes de fichiers, protocoles).
lsmod | headmodinfo e1000e # description et paramètres d'un modulesudo modprobe br_netfilter # chargersudo modprobe -r br_netfilter # déchargersudo dmesg -T | tail # messages du chargementChargement au démarrage : /etc/modules-load.d/reseau.conf (un nom de module par ligne). Paramètres et interdictions : /etc/modprobe.d/.
overlaybr_netfilter
# /etc/modprobe.d/blocage.confblacklist nouveauoptions snd_hda_intel power_save=1sudo update-initramfs -u # après modification des modules « précoces »blacklist n’empêche pas le chargement par dépendance : install nom /bin/false l’interdit complètement.
Paramètres : sysctl
Section intitulée « Paramètres : sysctl »sysctl -a | lesssysctl vm.swappinesssudo sysctl -w vm.swappiness=10 # temporaireecho 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-memoire.confsudo sysctl --system # recharge tous les fichierssysctl -p /etc/sysctl.d/99-memoire.confFichiers lus : /usr/lib/sysctl.d/, /etc/sysctl.d/ (préfixe numérique = ordre ; le dernier gagne), /etc/sysctl.conf. Nommer ses fichiers 99-quelquechose.conf pour passer après ceux du système.
| Paramètre | Rôle | Valeurs courantes |
|---|---|---|
vm.swappiness |
Propension à échanger | 60 (défaut), 10 pour un serveur de base de données |
vm.overcommit_memory |
Politique de sur-allocation | 1 conseillé pour Redis (voir Redis : expiration et mémoire) |
vm.max_map_count |
Zones mémoire par processus | 262144 pour Elasticsearch, certaines bases |
fs.inotify.max_user_watches |
Fichiers surveillés | 524288 pour les outils de développement (Vitest : dépannage) |
fs.file-max |
Fichiers ouverts (système) | Rarement à changer |
net.core.somaxconn |
File d’acceptation | Voir Réseau avancé |
kernel.pid_max |
Nombre maximal de PID | Machines avec énormément de processus |
kernel.panic |
Redémarrage automatique après un plantage du noyau (secondes) | 10 pour un serveur distant |
Ne modifier que ce qu’on comprend et qu’on a mesuré : les valeurs par défaut sont raisonnables ; copier des « optimisations » trouvées en ligne dégrade parfois les performances.
Ligne de commande du noyau et GRUB
Section intitulée « Ligne de commande du noyau et GRUB »cat /proc/cmdlinegrep -E "^GRUB_" /etc/default/grubModifier les paramètres de démarrage : /etc/default/grub
GRUB_TIMEOUT=5GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"sudo cp /etc/default/grub /etc/default/grub.sauvegardesudo nano /etc/default/grubsudo update-grub # régénère /boot/grub/grub.cfg| Paramètre | Effet |
|---|---|
quiet splash |
Démarrage discret (retirer pour voir les messages en cas de panne) |
console=ttyS0,115200 |
Console série (serveurs, machines virtuelles) |
nomodeset |
Désactiver le pilote graphique (écran noir au démarrage) |
fsck.mode=force |
Vérifier les systèmes de fichiers au prochain démarrage |
systemd.unit=rescue.target |
Démarrer en mode secours |
init=/bin/bash |
Shell direct (récupération) |
net.ifnames=0 |
Anciens noms d’interface (eth0) |
transparent_hugepage=never |
Désactiver les grandes pages transparentes (recommandé pour certaines bases) |
Analyser le démarrage
Section intitulée « Analyser le démarrage »systemd-analyze # durée totale (noyau + espace utilisateur)systemd-analyze blame | head -15 # unités les plus lentessystemd-analyze critical-chain # chaîne critiquesystemd-analyze plot > demarrage.svg # diagrammejournalctl -b -p warning # avertissements de ce démarragejournalctl -b -1 -p err # erreurs du démarrage précédentsystemctl --failed # unités en échecdmesg -T --level=err,warnVoir aussi systemd : dépendances et cibles (cibles de démarrage et ordre).
Système de secours
Section intitulée « Système de secours »| Situation | Solution |
|---|---|
| Service en échec bloquant le démarrage | systemctl --failed, journalctl -xb |
| Mode d’urgence (fstab erroné) | Entrer le mot de passe de root (ou Ctrl+D), corriger /etc/fstab, mount -o remount,rw /, reboot |
Mot de passe root ou utilisateur perdu |
Démarrer avec init=/bin/bash, mount -o remount,rw /, passwd, exec /sbin/init (accès physique ou console requis) |
| Noyau défectueux | Menu GRUB > « Advanced options » > choisir un noyau précédent |
| Système qui ne démarre plus | Démarrer sur un système live (clé USB ou ISO de l’hébergeur), monter, chroot, réparer |
Réparer depuis un système live (chroot)
Section intitulée « Réparer depuis un système live (chroot) »sudo mount /dev/sdX2 /mnt # racine (remplacer sdX2)sudo mount /dev/sdX1 /mnt/boot/efi # partition EFIfor d in dev proc sys run; do sudo mount --bind /$d /mnt/$d; donesudo chroot /mnt# dans le chroot :update-grubgrub-install /dev/sdX # BIOS ; en EFI : grub-install --target=x86_64-efiupdate-initramfs -u -k allexitLes accès console de l’hébergeur (KVM, console série, mode secours) servent à cela : les repérer avant d’en avoir besoin.
initramfs
Section intitulée « initramfs »L’initramfs est une petite image chargée en mémoire au démarrage qui contient les pilotes nécessaires pour monter la racine (disque, LVM, RAID, chiffrement).
lsinitramfs /boot/initrd.img-$(uname -r) | headsudo update-initramfs -u # régénérer pour le noyau courantsudo update-initramfs -u -k allls -lh /boot/initrd.img-*À régénérer après un changement de configuration de disque (LVM, mdadm, crypttab) : sinon le système peut ne plus trouver sa racine au démarrage suivant.
Gérer les noyaux installés
Section intitulée « Gérer les noyaux installés »dpkg -l 'linux-image-*' | grep ^iiuname -rdf -h /boot # une petite partition /boot se remplit de vieux noyauxsudo apt autoremove --purge # supprime les anciens noyaux inutiles (en gardant le courant et le précédent)apt policy linux-image-genericsudo apt install linux-generic-hwe-24.04 # noyau HWE (24.04)Garder toujours au moins un noyau précédent fonctionnel pour pouvoir revenir en arrière. Un /boot plein (mise à jour interrompue) se règle par apt autoremove --purge, puis sudo apt -f install.
Redémarrage et correctifs sans redémarrage
Section intitulée « Redémarrage et correctifs sans redémarrage »cat /var/run/reboot-required.pkgs 2>/dev/nullsudo needrestart -r l # services à redémarrersudo systemctl rebootsudo shutdown -r +5 "redémarrage de maintenance"sudo shutdown -c # annulerlast reboot | head -5Livepatch (service d’Ubuntu Pro, gratuit pour un usage personnel limité) applique des correctifs de sécurité du noyau sans redémarrer :
sudo pro attach <jeton> # jeton fourni par le compte Ubuntu Prosudo pro statuscanonical-livepatch statusIl retarde les redémarrages urgents mais ne les supprime pas : prévoir un redémarrage régulier (voir Ubuntu Server : actions après l’installation).
Plantages et diagnostic du noyau
Section intitulée « Plantages et diagnostic du noyau »journalctl -k -b -1 | tail -50 # messages du noyau avant le dernier arrêtsudo journalctl -b -1 -p critls /var/crash/ # rapports (apport, selon la configuration)sudo apt install linux-crashdump # kdump : capture de la mémoire lors d'un plantagecat /proc/sys/kernel/panicecho 'kernel.panic=10' | sudo tee /etc/sysctl.d/99-panic.confUn redémarrage sans trace (journal vide avant l’arrêt) évoque une coupure matérielle (alimentation, surchauffe, hyperviseur) plutôt qu’un plantage logiciel.
Dépannage
Section intitulée « Dépannage »| Symptôme | Piste |
|---|---|
| Écran noir au démarrage | nomodeset, retirer quiet splash, console série |
error: file '/boot/grub/…' not found |
GRUB à réinstaller depuis un système live (chroot) |
/boot plein, apt échoue |
apt autoremove --purge, supprimer d’anciens noyaux |
ALERT! UUID=… does not exist. Dropping to a shell |
initramfs : disque ou module manquant ; blkid, /etc/fstab, update-initramfs -u depuis un système de secours |
| Un module ne se charge pas | dmesg -T, modinfo, noyau différent du module (DKMS : dkms status) |
Un paramètre sysctl est perdu au redémarrage |
Valeur écrite avec -w seulement : l’ajouter à /etc/sysctl.d/ |
| Modules DKMS (VirtualBox…) cassés après mise à jour du noyau | sudo dkms autoinstall, installer les en-têtes (linux-headers-$(uname -r)) |
| Démarrage lent | systemd-analyze blame, service réseau qui attend (systemd-networkd-wait-online) |
Ubuntu 24.04 et 26.04 : différences à connaître
Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »Les noyaux diffèrent (6.8 sur Ubuntu 24.04, 7.0 sur 26.04) ; les commandes sont les mêmes. sudo est fourni par sudo-rs sur 26.04. Après une montée de version d’Ubuntu, recompiler les modules DKMS et vérifier les paramètres de la ligne de commande du noyau.
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Manuels :
man sysctl,man modprobe,man grub-mkconfig,man systemd-analyze, Documentation Ubuntu : noyau - Suite : Sauvegarde et automatisation