Contenu | Rechercher | Menus

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.

Les types de noyaux

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. Dans la suite du document, c'est ce type qui sera supposé utilisé par défaut.
  • server : le noyau est compilé avec les options nécessaires à une utilisation sur un serveur (n'existe plus depuis la version 12.04, linux-image-server a été fusionné avec linux-image-generic1))
  • 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.

Connaître la version du noyau en cours d'utilisation

  • 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 -r

Lister les noyaux installés

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

dpkg -l | grep -Ei "linux-headers|linux-image"

Installer une autre version de noyau

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).

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.
  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 le PC. Le menu GRUB vous permettra de choisir le nouveau noyau.

  • 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.

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 :

Suppression des anciens noyaux

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.

Méthode simple et sécurisée

La commande sudo apt-get autoremove permet de désinstaller les paquets qui ne sont plus nécessaires. Depuis Ubuntu Trusty 14.04, cette commande prend en charge les anciens noyaux sauf les 2 derniers. Il est donc très facile et sans risque de supprimer les anciens noyaux autres que les 2 derniers en saisissant dans un terminal la commande :

 sudo apt-get autoremove 

Méthode graphique

  • Gtkorfan, application permettant de gérer graphiquement la commande apt-get autoremove.
  • Ubuntu-Tweak, application permettant de nettoyer de nombreuses choses dans Ubuntu, entre autre, les noyaux inutiles.
  • Un Gestionnaire de paquets comme par exemple Synaptic et supprimer complètement les paquets par groupes de 3 :
    • linux-headers-2.6.XX-YY
    • linux-headers-2.6.XX-YY-generic
    • linux-image-2.6.XX-YY-generic
      Pour enlever, par exemple, les noyaux 2.6.32-22 et 2.6.32-23, sélectionner pour suppression complète les paquets suivants :
    • linux-headers-2.6.32-22
    • linux-headers-2.6.32-22-generic
    • linux-image-2.6.32-22-generic
    • linux-headers-2.6.32-23
    • linux-headers-2.6.32-23-generic
    • linux-image-2.6.32-23-generic
      Lorsqu’on utilise un gestionnaire de paquets 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.

Méthode depuis un terminal

Utilisation en lignes de commande depuis un terminal:

  1. Connaître la version du noyau en cours d'utilisation :
    uname -r
  2. Lister ensuite l'ensemble des noyaux installés grâce à :
    dpkg -l | grep -Ei "linux-headers|linux-image"

    Sur Ubuntu 12.10, en décembre 2012, le résultat de cette commande donne :

    linux-headers-3.5.0-18                    3.5.0-18.29
    linux-headers-3.5.0-18-generic            3.5.0-18.29
    linux-headers-3.5.0-19                    3.5.0-19.30
    linux-headers-3.5.0-19-generic            3.5.0-19.30
    linux-headers-3.5.0-20                    3.5.0-20.31
    linux-headers-3.5.0-20-generic            3.5.0-20.31
    linux-headers-3.5.0-21                    3.5.0-21.32
    linux-headers-3.5.0-21-generic            3.5.0-21.32
    linux-headers-generic                     3.5.0.21.27
    linux-headers-generic-pae                 3.5.0.21.27
    linux-image-3.5.0-17-generic              3.5.0-17.28
    linux-image-3.5.0-18-generic              3.5.0-18.29
    linux-image-3.5.0-19-generic              3.5.0-19.30
    linux-image-3.5.0-20-generic              3.5.0-20.31
    linux-image-3.5.0-21-generic              3.5.0-21.32
    linux-image-extra-3.5.0-17-generic        3.5.0-17.28
    linux-image-extra-3.5.0-18-generic        3.5.0-18.29
    linux-image-extra-3.5.0-19-generic        3.5.0-19.30
    linux-image-extra-3.5.0-20-generic        3.5.0-20.31
    linux-image-extra-3.5.0-21-generic        3.5.0-21.32
    linux-image-generic 

    On pourrait donc dans cet exemple supprimer les noyaux 3.5.0-17, 3.5.0-18 et 3.5.0-19 (toujours garder les deux derniers noyaux 3.5.0-20 et 3.5.0-21 dans cet exemple).

  3. Pour désinstaller un noyau Linux, il suffit de désinstaller les 3 ou 4 paquets correspondants à la version voulue :
    • 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
      Par exemple pour désinstaller le noyau 3.5.0-17, la commande complète (à adapter) ressemble à quelque chose comme :
      sudo apt-get remove linux-headers-3.5.0-17 linux-headers-3.5.0-17-generic linux-image-3.5.0-17-generic linux-image-extra-3.5.0-17-generic --purge
  4. Répéter l'opération autant de fois qu'il y'a de noyaux à supprimer.
  5. Redémarrer le PC. Le menu GRUB ne proposera plus le ou les noyaux supprimés.

Autre méthode depuis un terminal

Cette méthode ne conserve qu'un seul noyau.

Autre façon de nettoyer pleins de noyaux d'un seul coup : en fait tous sauf le noyau courant (faire attention à bien avoir démarré sur le dernier noyau installé). Depuis un terminal, saisir les commandes suivantes :

  1. Lister les noyaux à supprimer :
    dpkg -l | awk '{print $2}' | grep -E "linux-(image|headers)-$(uname -r | cut -d- -f1).*" | grep -v $(uname -r | sed -r -e 's:-[a-z]+.*::')
  2. Si la liste est cohérente, on supprime en utilisant le résultat en paramètre de la commande apt-get purge :
    sudo apt-get purge $(dpkg -l | awk '{print $2}' | grep -E "linux-(image|headers)-$(uname -r | cut -d- -f1).*" | grep -v $(uname -r | sed -r -e 's:-[a-z]+.*::'))
  3. Redémarrer le PC. Le menu GRUB ne proposera plus qu'un seul noyau.

Si la commande ci-dessus ne fonctionne pas, essayez celle ci :

  1. Lister les vieux noyaux sauf un :
    dpkg -l | egrep 'linux-(image|headers)-[0-9]' | cut -d' ' -f3 | grep -v $(uname -r | cut -d- -f1,2) | cut -d- -f-4 | sort -t- -k3,4 | uniq | head -n-2
  2. Supprimer les anciens noyaux sauf un :
    sudo apt-get purge $(dpkg -l | egrep 'linux-(image|headers)-[0-9]' | cut -d' ' -f3 | grep -v $(uname -r | cut -d- -f1,2) | cut -d- -f-4 | sort -t- -k3,4 | uniq | head -n-2)
  3. Redémarrer l'ordinateur. Le menu GRUB ne proposera plus qu'un seul noyau.

Il est possible « d'automatiser » ou en tous cas de faciliter la suppression des noyaux avec différents scripts (à noter que leurs fonctionnements n'est pas toujours éprouvé). Pour cela se tourner, par exemple, vers le script kclean.
Les contributeurs qui voudraient proposer leurs scripts sont invités à le faire sur le forum et non sur cette page de doc.

Logiciel pour noyau

  • 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 (site)(deb), 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.

Paramètres du noyau

Il est possible de passer différents paramètres au noyau Linux :

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

Avec un live-CD ou un live-USB : au démarrage

  • si ce logo: logo1 apparaît en bas de l'écran, appuyer sur une touche pour faire apparaître le menu du LIVECD/USB menuliveCD, puis appuyer sur la touche « F6 »
  • ou bien si le menu de grub apparaît, appuyez sur la touche "e" (procédure détaillée pour l'option nomodeset dans ce post)

Un menu apparaît qui offre certaines options (voir tableau ci-dessous). 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.

Option Signification
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.
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.
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 http://forum.ubuntu-fr.org/viewtopic.php?pid=1969900#p1969900
nomodeset (depuis Karmic) désactive le KMS qui cause problème avec certaines cartes graphiques.
… Autres options La touche « F1 » propose d'autres options. Voir aussi cette liste des paramètres de noyau…

Pour pouvoir voir le dernier message avant que votre chargement ne plante : supprimez les options « quiet » et « splash » de la ligne de commande, accessible par la touche « F6 ».

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.

Graphiquement

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

  • 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

Attention:!:: ne fonctionne pas depuis un liveCD/liveUSB.

  1. Editer le fichier /etc/default/grub;
  2. ajouter les paramètres souhaités à la ligne GRUB_CMDLINE_LINUX_DEFAULT (par exemple GRUB_CMDLINE_LINUX_DEFAULT="paramètre1 paramètre2");
  3. puis mettre à jour GRUB avec la commande
    sudo update-grub
  4. et redémarrer l'ordinateur.

Exemples de configuration

L'ajout de paramètres peut par exemple :

Pour connaître les différents paramètres possibles, consultez les pages Doc anglophone et kernel.org.

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.

Documentation officielle

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

Pages en rapport

Pour plus d'information sur les opérations sur le noyau (compilation, paramétrage …), se reporter aux pages suivantes :

Voir aussi


Contributeurs principaux : draco31.fr mydjey. Contributeurs : Cafecho

2)
C'est le cas de certains portables où il faut ajouter des paramètres tels que acpi=off, nolapic ou noacpi pour permettre le boot.


Le contenu de ce wiki est sous licence : CC BY-SA v3.0