Logo kernel

Le Noyau : cœur du système d'exploitation

Un noyau de système d’exploitation (abrégé noyau, ou kernel en anglais), est la partie fondamentale de certains systèmes d’exploitation. Il gère les ressources de l’ordinateur et permet aux différents composants — matériels et logiciels — de communiquer entre eux.

Sous Ubuntu, le noyau pré-installé est linux, il est de type monolithique modulaire.

Pour Ubuntu, plusieurs types de noyaux pré-compilés sont proposés :

  • generic : le noyau est compilé avec les options nécessaires à une utilisation bureautique ou sur un serveur. Dans la suite du document, c'est ce type qui sera supposé utilisé par défaut.
  • PAE : ce noyau permet l'adressage de la mémoire au delà de la limite de 3,2 Go sous Ubuntu 32 bits.
  • virtual : le noyau est compilé avec les options nécessaires à une utilisation via une machine virtuelle.
  • lowlatency (temps réel) : ce noyau est spécifique pour une utilisation temps réel. C'est le noyau installé par défaut sur Ubuntu Studio.
  • Pour connaître la version de son noyau Linux utilisé, son nom, la version du compilateur utilisé, taper dans un terminal la commande suivante:
    cat /proc/version
  • Pour connaître seulement la version du noyau en cours d'utilisation :
    uname -mr

Au fil des mises à jour plusieurs noyaux se retrouvent installés sur une machine, pour connaître la liste des noyaux installés, copier-coller dans un terminal :

dpkg -l | awk '!/^rc/ && / linux-(c|g|h|i|lo|m|si|t)/{print $1,$2,$3,$4 | "sort -k3 | column -t"}'

Le noyau Linux est en constante évolution. Chaque nouvelle version d'Ubuntu inclut une nouvelle version du noyau Linux par rapport à la précédente. Si cela permet de corriger des bugs et de proposer de nouvelles fonctionnalités, il arrive que cela entraîne des régressions (dans le pire des cas, cela empêche de démarrer Ubuntu). Dans ce cas, vous pouvez être amené à installer d'autres versions du noyau Linux (plus récentes ou plus anciennes).

Si dans une version LTS d'Ubuntu vous souhaitez utiliser de manière sécurisée le noyau d'une version d'Ubuntu stable supérieure, voir cette page.
Installer et utiliser une autre version de noyau est à réserver aux utilisateurs avertis.
  • Ne pas installer un noyau d'une architecture différente de celui déjà pré-installé.
  • L'installation du noyau d'une autre version d'Ubuntu rend impossible l'installation des pilotes supplémentaires, qui seront toujours "activés" mais pas en cours d'utilisation.
  • La version du serveur graphique pré-installée n'est pas forcément compatible avec d'autres noyaux. Sauf à savoir ce que vous faites, n'installez pas un nouveau noyau sans installer la version du serveur graphique correspondante.

Installation simple

  1. Rendez-vous sur le site correspondant à la version de noyau voulue: soit packages.ubuntu.com (kernels stables, par défaut de toutes les versions d'Ubuntu), soit kernel.ubuntu.com (version de développement, appelée "mainline", que les développeurs vous demanderont généralement de tester).
  2. Téléchargez les 4 paquets composant le kernel voulu, généralement:
    • linux-headers-<version>_<version>_all.deb
    • linux-headers-<version>-generic_<version>_<votre_architecture>.deb
    • linux-image-<version>-generic_<version>_<votre_architecture>.deb
    • linux-image-extra-<version>-generic_<version>_<votre_architecture>.deb (optionnel, mais généralement requis pour les tests)
      Si votre système est 64bit, <votre_architecture> est amd64.
      Si votre système est 32bit, <votre_architecture> est i386.modifiez le fichier
  3. Installez les paquets téléchargés (par exemple en double-cliquant dessus puis installer via la Logithèque) dans l'ordre ci-dessus.
  4. Mettre à jour le menu Grub (sudo update-grub)
  5. Redémarrez l'ordinateur. Le menu GRUB vous permettra de choisir le nouveau noyau.

Revenir à une version antérieure du noyau

Si après une mise à jour du noyau, vous avez un problème et souhaitez revenir à une version antérieure, la manipulation est similaire à celle ci-dessus. Le plus simple est d'utiliser Synaptic pour désinstaller la ou les versions du noyau, postérieures à celle à laquelle vous voulez revenir (même 4 paquets à désinstaller que ceux listés ci-dessus). Ensuite mettez à jour le grub avec : sudo update-grub

Via les sources

Une autre possibilité, plus compliquée, est de télécharger les sources du noyau Linux soit depuis les dépôts, soit sur le site kernel.org [en] et de les compiler vous-même. Pour ce faire, de nombreuses options doivent être définies si vous souhaitez avoir un support complet de votre matériel. Plusieurs outils sont disponibles pour vous assister dans cette tache, de même que plusieurs tutoriels :

Si le menu GRUB propose plusieurs versions de noyau, il est possible d'en désinstaller certains. La suppression des anciens noyaux permet de gagner de la place, mais cette manipulation demande de l'attention ! Il est prudent de toujours conserver les deux derniers noyaux car en cas d'impossibilité de démarrer sur le dernier noyau (une incompatibilité des pilotes par exemple), il restera toujours la possibilité d'utiliser le noyau précédent.

Via autoremove

Il suffit de saisir dans un terminal la commande :

sudo apt-get autoremove --purge

Le terminal affiche les éléments qui seront supprimés et demande une validation (Souhaitez-vous continuer ? [O/n]).

Note: il est possible que cette méthode ne fonctionne pas si les noyaux sont marqués comme installés manuellement, voir cette discussion. En pratique, si un ou plusieurs vieux noyaux résistent à la purge, il suffit de passer cette commande dans le terminal :

apt-mark showmanual | grep -E "linux-.*[0-9]" | grep -v "hwe" | xargs -r sudo apt-mark auto

Puis de repasser la commande de nettoyage automatique :

sudo apt-get autoremove --purge

Après cela, il ne restera que le dernier noyau et l'avant-dernier

Méthode manuelle

Il suffit de désinstaller les paquets du noyau à désinstaller, par exemple pour le noyau 2.6.32-22 :

  • linux-headers-2.6.32-22
  • linux-headers-2.6.32-22-generic
  • linux-image-2.6.32-22-generic
  • linux-image-extra-2.6.32-22-generic (le paquet "extra" n'est pas toujours installé)

Attention à ne pas supprimer tous vos noyaux, il est recommandé d'en garder 2 au moins. Lorsqu’on utilise un gestionnaire de paquets (entre autres Synaptic) pour enlever les images du noyau, la commande update-grub est invoquée automatiquement pour mettre à jour les fichiers de configuration de  GRUB et par conséquent la liste des noyaux affichés dans le menu GRUB. Il n'est donc pas nécessaire de lancer manuellement la commande update-grub.

Autres méthodes

Les contributeurs qui voudraient proposer leurs scripts sont invités à le faire sur le forum et non sur cette page de doc.

Supprimer les old-dkms inutiles

  • ksplice (Oracle): Permet de patcher, de mettre à jour, et de changer de kernel sans aucun reboot.
Après essais de KernelCheck, il s’avère que les noyaux proposés sont des kernel 2.6.xx seulement. Il est préférable d'aller sur le site directement pour le télécharger.
  • KernelCheck (deb), FIXME [lien cassé] un programme qui compile et installe automatiquement le dernier noyau pour les distributions Debian Linux (Debian, Ubuntu, Mint, etc.) ( à utiliser de préférence avec la dernière version d'Ubuntu )
  • Ketchup (linuxfr.org): Cet utilitaire peut mettre à jour les sources du noyau (ou installer) automatiquement. Il peut rechercher le nouveau noyau dans de nombreux arbres (vanille, rc, minuscules, mm, MJB, etc.) Il peut aussi télécharger automatiquement les correctifs nécessaires (et les appliquer ) pour créer la nouvelle version.
  • Script: Pour installer la dernière version Release Candidate ou la dernière version Lowlatency du noyau
  • Ubuntu Kernel Upgrade Utility (UKUU daily) Il s'agit d'un outil d'installation du dernier noyau Linux principal sur les distributions basées sur Ubuntu.
  • Uktools Cet outil prévu pour les distributions basées sur Ubuntu permets d'installer automatiquement (Cron) le dernier noyau disponible [lowlatency/generic] [RC/stable]. Il permet également de nettoyer les anciens noyaux.

Il est possible de passer différents paramètres au noyau Linux. Ci-dessous vous trouverez:

  • une liste de paramètres courants
  • comment modifier les paramètres du noyau pour une session-live
  • comment modifier les paramètres du noyau pour une session installée

Exemples de paramètres pour le noyau linux

Liste complète: voir kernel.org (et cette page)

Option Signification
persistent Si votre clé USB a été fabriquée en mode persistant et qu'elle utilisée en EFI, cette option est à ajouter, sauf à modifier les menus de boot au moment de la fabrication afin de l'inclure comme cela est fait automatiquement en mode légacy.
rescue Option de sauvetage de base
irqpoll Si votre CD-ROM se bloque vers le début de l'installation, essayez ça. (:!: Perte de performances possibles !)
acpi=off « Advanced Configuration and Power Interface ». C'est une gestion de l'énergie avancée, et il se peut que cela pose quelques problèmes durant la phase d'installation. Si vous bloquez en pleine installation sans raisons apparente, essayez ça. Peut aussi résoudre le problème de l'écran noir immédiatement après le choix 'essayer avant d'installer'
pnpbios=off « Plug And Play Bios ». Si vous bloquez en pleine installation sans raisons apparente, essayez ça.
noapic cette commande dit au noyau de ne pas utiliser le chip « APIC » (Advanced Programmable Interrupt Controller). Certaines cartes-mère (anciennes) requièrent ce paramètre. D'autres en ont besoin, notamment pour améliorer les performances de l'USB.
nolapic « Local APIC ».
all_generic_ide (d'autres variantes semblent exister, cf. Google ou autre !) si vous n'utilisez pas de SCSI ou SATA, et que vous avez un problème de démarrage ou d'emask, essayez ça… (n'est pas garanti de marcher à 100 %…). En particulier pour le message d'erreur "unable to find a medium containing a live file system"
pci=nommconf Erreur dans le dmesg forcedeth : failed with error -22 On en parle ici
pci=nomsi Voir ce post sur le forum
pci=noaer supprime la collecte des erreurs PCIe Error afin d'éviter que la taille des fichiers /var/log devienne démentielle.
nomodeset Désactive le KMS qui gère le graphisme directement au niveau du noyau, mais qui cause problème avec certaines cartes graphiques. Peut aussi résoudre le problème de l'écran noir immédiatement après le choix 'essayer avant d'installer'. A installer si la trace indique "(14999 ticks this GP) idle=997/1400000001/0 softirq=1334/1334 fqs=14997". Également utile dans le cas d'un dualboot avec démarrage aléatoire des Système d'exploitation et écran noir après grub (soit Windows soit Ubuntu).
modprobe.blacklist=nouveau Invalider les pilotes libres de haute qualité pour les cartes graphiques NVIDIA (portable MSI GL62) spécialement en cas d'erreur de ce style NMI watchdog: BUG: soft lookup - CPU#N stuck for 22s! [plymouthd: NNN!
radeon.dpm=0 Invalider la Gestion dynamique matérielle pour les cartes RADEON anciennes sinon l'installation passe son temps à rebooter ou message répétitif spécialement en cas d'erreur de ce style "NMI watchdog: BUG: soft lookup - CPU#N stuck for 22s!"
intel_idle.max_cstate=1 Pour les processeurs qui se bloquent aléatoirement avec carte graphique Intel Bay Trail. Afin de contourner ce bug Voir cette discussion
profile pour optimiser le démarrage du système
i8042.nomux=1 permet de résoudre des soucis avec votre touchpad (essayer aussi i8042.reset=1 et/ou i8042.nopnp)
nouveau.modeset=0 permet de résoudre les problèmes d'écran noir avec les cartes graphiques nvidia qui utilisent le pilote libre
debug ignore_loglevel Pour tracer le démarrage et l'arrêt du noyau. A mettre à la place de quiet splash. Faire l'arrêt avec la commande shutdown -h now
fsck.mode=force fsck.repair=yes" Pour contrôler l'état des partitions au format EXT4 à chaque démarrage et faire les réparations graves automatiquement si nécessaire au lieu des réparations superficielles
ipv6.disable=1 Désactive l'ip version 6
net.ifnames=0 Permet de nommée les interfaces réseau de façon standard (ethx, wlanx)

Modifier les paramètres du noyau pour une session-live

Avec un média d'installation: au démarrage

  • Si, en bas de l'écran, apparaît ce logo :

    Appuyer sur une touche pour faire apparaître le menu du média d'installation:
    menuliveCD
    Puis appuyer sur la touche « F6 ». Un menu apparaît qui offre certaines options (voir tableau ci-dessus). Si celle que vous souhaitez n'est pas dans le menu, appuyez sur la touche "Echap" et écrivez vos options à la fin de la ligne de texte. Elle permet d'ajouter manuellement des options de démarrage les unes à la suite des autres, ou éventuellement en supprimer.
  • Ou bien si le menu de grub apparaît:

    Appuyer sur la touche "E" avant de choisir d'exécuter une des actions proposées. (procédure détaillée pour l'option nomodeset dans ce post)
Pour pouvoir voir le dernier message avant que votre chargement ne plante : supprimez l'option quiet splash de la ligne de commande, accessible par la touche F6.
Si vous avez ajouté une option pour installer votre ubuntu, vous ne pourrez certainement pas booter le ubuntu installé car cette option n'a pas été mise en dur dans le disque. Vous devez alors utiliser le paragraphe ci-dessous pour implémenter cette option dans le système que vous venez d'installer.

Modifier les paramètres du noyau pour un système installé sur disque

Attention: certaines options peuvent empêcher votre ordinateur de démarrer. Si cela vous arrive, il vous sera nécessaire d'annuler la modification depuis un liveCD ou liveUSB. C'est pourquoi il est hautement recommandé d'effectuer cette opération depuis un liveCD/liveUSB contenant Boot-Repair. De plus, vérifier d'abord si la méthode décrite ci-dessus (ajouter un paramètre pour une session-live) permet d'effectuer un dépannage ponctuel.

Modification temporaire.

Il suffit de démarrer normalement. Lorsque la première ligne du menu du grub s'affiche, il faut se positionner dessus , puis , au lieu d'appuyer sur la touche Entrée, il faut appuyer sur la touche e afin de pouvoir ajouter l'option souhaitée ( souvent nomodeset ou modprobe.blacklist=nouveau ) juste après quiet spash. Un exemple ici. La validation se fait en frappant les touches Ctrl x.

Si le menu grub n'apparaît pas au démarrage, la cause est probablement due à l'absence de dual Boot, Il existe une technique pour le faire apparaître.

Pérennisation de la modification.

Lorsque cette option corrige le problème, il est possible de la rendre définitive avec la commande suivante:

sudo sed -i "s#splash#splash Valeur Option Validée  #" /etc/default/grub

et faire prendre en compte avec la commande suivante:

sudo update-grub

Suppression d'une option ajoutée inutilement.

Il est nécessaire d'éditez le fichier le fichier /etc/default/grub, de rechercher la ligne commençant par GRUB_CMDLINE_LINUX_DEFAULT, de supprimer l'option fautive, de sauvegarder et faire prendre en compte avec la commande suivante:

sudo update-grub

Graphiquement

Normalement les techniques présentées ci-dessus devraient résoudre 100% des problèmes rencontrés.

A faire lorsque le boot est totalement impossible.

Il faut démarrer Boot-Repair, cliquer sur "Options avancées", puis sur l'onglet "Options de GRUB" :

Se souvenir que boot-repair ne permet pas de supprimer une mauvaise option qu'il a installée. Il faudra passer par les techniques présentées ci-dessus.

  • La case "Ajouter une option au noyau" permet d'ajouter une option de la liste.
  • Pour ajouter d'autres options (ou supprimer des options), il suffit de cliquer sur le bouton "Modifier le fichier de configuration de GRUB" et ajouter les paramètres souhaités à la ligne GRUB_CMDLINE_LINUX_DEFAULT="(…)", par exemple :
GRUB_CMDLINE_LINUX_DEFAULT="paramètre1 paramètre2"

Cliquer sur le bouton "Appliquer" pour prendre en compte les changements.

Manuellement.

A) La première partie nécessite d'utiliser le liveCD/liveUSB afin de faire un dépannage qui nécessitera d'être consolidé par la suite s'il est efficace.

a1) Choisir "essayer ubuntu avant de l'installer".

a2) Repérer la partition contenant la racine avec les commandes "df -h" et/ou "sudo fdisk -l".

a3) Monter la partition ainsi détectée dans le répertoire /mnt

sudo umount -v /dev/sdXN  /mnt ### en prenant soin de mettre les bonnes valeurs pour XN    On va d'abord la démonter au cas où elle serait montée ailleurs. Si elle n'est pas montée, il y aura une erreur qui sera normale.
sudo mount -v /dev/sdXN  /mnt ### en prenant soin de mettre les bonnes valeurs pour XN.    Il ne doit absolument pas y avoir d'erreur de montage.

a4) Editer le fichier /mnt/boot/grub/grub.cfg

a5) Rechercher la première ligne contenant le texte " vmlinuz ". C'est assez loin dans le fichier.

a6) Ajouter en fin de ligne l'option que que vous avez retenue pour faire votre correction. Vous pouvez aussi remplacer quiet splash par votre option. Exemple ci-dessous:

 linux	/boot/vmlinuz-4.4.0-62-generic.efi.signed root=UUID=299d7644-ae32-43ff-b3db-16987328b52f ro MON-OPTION-A-ESSAYER

a7) Sauver le fichier et booter. Si l'option testée est efficace, il faut la valider définitivement .

B) Consolider l'option ajoutée afin qu'elle reste en permanence

b1) Editer le fichier /etc/default/grub pour y ajouter ou retirer les paramètres souhaités à la ligne GRUB_CMDLINE_LINUX_DEFAULT="(…)", par exemple :

GRUB_CMDLINE_LINUX_DEFAULT="paramètre1 paramètre2"

Veiller aux guillemets : il n'y en a pas entre les paramètres.

b2) Puis mettre à jour GRUB avec la commande

sudo update-grub

b3) Enfin redémarrer l'ordinateur.

Configuration du noyau utilisé

Si vous avez besoin de vérifier que votre noyau a bien une configuration spécifique, sachant quel noyau vous utilisez, pour l'ensemble des options, tapez (utiliser l'auto-complétion):

 cat /boot/config-3.13.0.53-generic 

et pour connaître une ou plusieurs options en particulier: par exemple pour connaître les options EXT4, tapez:

 cat /boot/config-3.13.0.53-generic | grep CONFIG_EXT4 

ou plus simple:

 grep CONFIG_EXT4 /boot/config-$(uname -r) 

Cela peut-être utile pour vérifier des pré-requis à l'installation d'un service.

La documentation officielle sur le noyau Linux est maintenue sur le site kernel.org. Vous pouvez la consulter en suivant ce lien [en].


Contributeurs principaux : draco31.fr, mydjey. Contributeurs : wullfk


1)
depuis 16.04. Paquet bikeshed pour Ubuntu14.04
  • kernel.txt
  • Dernière modification: Le 12/03/2020, 11:27
  • (modification externe)