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.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 :
uname -r
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-(g|h|i|lo|si|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).
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)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.
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 de supprimer les anciens noyaux autres que les 2 derniers en saisissant dans un terminal la commande :
sudo apt-get autoremove --purge
apt-mark showmanual | egrep 'linux-.*[0-9]'
Ceci est probablement un bug (celui-ci ?) mais peut être contourné temporairement lorsque vous souhaitez récupérer de l'espace, en marquant à nouveau tous les paquets relatifs au noyau comme installé en automatique avec cette commande:
sudo apt-mark auto $(apt-mark showmanual | egrep 'linux-.*[0-9]')
Ensuite vous pouvez faire un nettoyage automatique comme indiqué précédemment.
Attention : en cas de présence d'un grand nombre d'anciens noyaux, la mise à jour de Grub peut prendre énormément de temps.
Utilisation en lignes de commande depuis un terminal:
uname -r
dpkg -l | grep -Ei "linux-(g|h|i|lo|si|t)"
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).
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
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
ou la même commande
numero_noyau=3.5.0-17 && sudo apt-get remove linux-headers-$numero_noyau linux-headers-$numero_noyau-generic linux-image-$numero_noyau-generic linux-image-extra-$numero_noyau-generic --purge
Installer le package http://hoper.dnsalias.net/tdc/public/kclean.deb
Epurer par la commande sudo kclean -k pour conserver deux noyaux ou sudo kclean pour ne conserver que le noyau courant.
Autre façon de nettoyer pleins de noyaux d'un seul coup. Depuis un terminal, saisir les commandes suivantes :
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]+.*::') | cut -d- -f-4 | sort -t- -k3,4 | uniq | head -n-2
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]+.*::') | cut -d- -f-4 | sort -t- -k3,4 | uniq | head -n-2)
Si la commande ci-dessus ne fonctionne pas, essayez celle ci :
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
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)
L'utilitaire est conçu spécifiquement pour supprimer les noyaux obsolètes, préserver automatiquement par défaut les 2 derniers noyaux, et ne jamais supprimer le noyau en cours de fonctionnement.
purge-old-kernels est disponible sur les dépots officiels d'Ubuntu depuis la version 12.04 , dans un paquet d'utilitaires :
sudo purge-old-kernels
Pour plus d'informations sur la commande, voir leurs man respectifs :
Une fois les noyaux inutiles supprimés grâce à l'une des méthodes ci-dessus, il peut rester dans /boot
de nombreux fichiers dont le nom se termine par old-dkms
et qui ne correspondent à aucun des noyaux encore installés sur l'ordinateur. Attention, il vaut mieux garder ces fichiers tant que les noyaux correspondants sont encore installés.
La commande :
$ ls -1 /boot/config*
retourne une liste indiquant quels noyaux sont installés:
/boot/config-3.19.0-32-generic /boot/config-3.19.0-77-generic /boot/config-3.19.0-78-generic /boot/config-4.4.0-51-generic /boot/config-4.4.0-53-generic
La commande :
$ ls -1 /boot/*.old-dkms
retourne la liste des fichiers old-dkms de tous les noyaux qui ont été installés, même s'ils ont été par la suite supprimés :
/boot/initrd.img-3.16.0-38-generic.old-dkms /boot/initrd.img-3.19.0-32-generic.old-dkms /boot/initrd.img-3.19.0-58-generic.old-dkms /boot/initrd.img-3.19.0-59-generic.old-dkms /boot/initrd.img-3.19.0-61-generic.old-dkms /boot/initrd.img-3.19.0-64-generic.old-dkms /boot/initrd.img-3.19.0-65-generic.old-dkms /boot/initrd.img-3.19.0-68-generic.old-dkms /boot/initrd.img-3.19.0-69-generic.old-dkms /boot/initrd.img-3.19.0-71-generic.old-dkms /boot/initrd.img-3.19.0-73-generic.old-dkms /boot/initrd.img-3.19.0-74-generic.old-dkms /boot/initrd.img-3.19.0-75-generic.old-dkms /boot/initrd.img-4.2.0-35-generic.old-dkms /boot/initrd.img-4.2.0-36-generic.old-dkms /boot/initrd.img-4.2.0-38-generic.old-dkms /boot/initrd.img-4.2.0-41-generic.old-dkms /boot/initrd.img-4.2.0-42-generic.old-dkms /boot/initrd.img-4.4.0-18-generic.old-dkms /boot/initrd.img-4.4.0-21-generic.old-dkms /boot/initrd.img-4.4.0-22-generic.old-dkms /boot/initrd.img-4.4.0-24-generic.old-dkms /boot/initrd.img-4.4.0-28-generic.old-dkms /boot/initrd.img-4.4.0-31-generic.old-dkms /boot/initrd.img-4.4.0-34-generic.old-dkms /boot/initrd.img-4.4.0-36-generic.old-dkms /boot/initrd.img-4.4.0-38-generic.old-dkms /boot/initrd.img-4.4.0-42-generic.old-dkms /boot/initrd.img-4.4.0-45-generic.old-dkms /boot/initrd.img-4.4.0-47-generic.old-dkms
Faire le tri entre ceux qui doivent être supprimés et ceux qui doivent être conservés, puis effectuer cette suppression, peut être fastidieux et source d'erreurs. Voici un script en python qui effectue ce travail pour vous :
#!/usr/bin/env python3 # -*- coding:Utf-8 -*- from glob import glob from os import getuid, remove from sys import path # Ce script doit être exécuté avec les droits root : if getuid()!=0: print("use: sudo "+path[0]+"/"+__file__) exit(1) # Liste des fichiers config des noyaux installés : installes = glob('/boot/config-*') # Liste des fichiers .old-dkms qu'il ne faut pas supprimer : ecartes = [ "/boot/initrd.img-"+f[13:]+".old-dkms" for f in installes ] # Liste de tous les fichiers .old-dkms : tous = [ f for f in glob('/boot/initrd.img-*.old-dkms') ] # Liste des fichiers .old-dkms à supprimer : asupprimer = list(filter(lambda f:f not in ecartes,tous)) asupprimer.sort() # On supprime ! for f in asupprimer: remove(f)
Nommez ce script clean_old_dkms.py
, puis rendez-le exécutable par :
chmod +x clean_old_dkms.py
Exécutez-le avec les droits root :
sudo ./clean_old_dkms.py
Il est possible de passer différents paramètres au noyau Linux :
Avec un média d'installation: au démarrage
Option | Signification |
---|---|
rescue | Option de sauvetage de base |
irqpoll | Si votre CD-ROM se bloque vers le début de l'installation, essayez ça. (![]() |
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. |
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 |
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" |
modprobe.blacklist=nouveau | Invalider les pilotes libres de haute qualité pour les cartes graphiques NVIDIA (portable MSI GL62) |
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 |
Autres options | La touche « F1 » propose d'autres options. Voir aussi cette liste des paramètres de noyau |
Il suffit de démarrer Boot-Repair, cliquer sur "Options avancées", puis sur l'onglet "Options de GRUB" :
GRUB_CMDLINE_LINUX_DEFAULT="paramètre1 paramètre2"
Cliquer sur le bouton "Appliquer" pour prendre en compte les changements.
Voici comment se présente la nouvelle grille.
Paragraphe en cours de fabrication pour prendre en compte le désengagement de boot-repair pour les options moins fréquentes.
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. A ce jour en 150eme ligne.
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.
L'ajout de paramètres peut par exemple :
profile
.Pour connaître les différents paramètres possibles, consultez les pages Doc anglophone et kernel.org.
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].
Pour plus d'information sur les opérations sur le noyau (compilation, paramétrage …), se reporter aux pages suivantes :
search?q=kernel&btnI=lucky
Contributeurs principaux : draco31.fr, mydjey. Contributeurs : wullfk
acpi=off
, nolapic
ou noacpi
pour permettre le boot.