Comment rétrograder le noyau après une mauvaise mise à jour (16.04)

20

Les récentes mises à jour du noyau Ubuntu 16.04 (4.4.0-89 et -91) ont mal échoué sur mon ordinateur portable. Heureusement, la version de travail précédente est toujours installée (4.4.0-57). Pour l'instant, j'ai Grub configuré pour me montrer un menu, et je sélectionne manuellement -57 au démarrage, mais cela semble fragile, susceptible de briser un avenir sudo apt upgrade.

Je pense que je veux:

  • Supprimer -89 et -91, car ils ne me font aucun bien.
  • Pour faire de -57 la valeur par défaut pour Grub, d'une manière qui persistera pendant les mises à niveau.
  • Pour garantir que le -57 reste installé, même si j'installe une mise à niveau ultérieure du noyau
  • Pour pouvoir essayer facilement les mises à jour ultérieures du noyau, mais revenir à -57 en cas d'échec. Ma principale préoccupation est la suppression automatique de -57.
  • Si je trouve une mise à jour qui fonctionne plus tard, un chemin facile pour revenir à tout annuler et revenir aux mises à jour du noyau suivantes.

Essayer de supprimer -91 avec sudo apt remove linux-image-4.4.0-91-genericnécessite que je supprime linux-generic et linux-headers-generic. Cela semble mauvais, donc je ne l'ai pas essayé.

Je peux trouver une variété de questions sur le problème général, mais aucune ne semble répondre à tous mes objectifs, et la plupart sont assez vieilles pour que je ne pense plus qu'elles s'appliquent.

Quelle est la meilleure façon de procéder?

Addendum : cela a été signalé comme un doublon de Comment empêcher la mise à jour d'un package spécifique? . Cette réponse pourrait répondre à une partie de ma question, mais ne donne pas une vue d'ensemble.

Globalement, le problème est que le noyau est géré de manière inhabituelle. Il est installé via linux-generic, qui n'est rien d'autre qu'une dépendance aux en-têtes linux-image-generic et linux-image-headers. Ceux-ci à leur tour ne sont que des dépendances de linux-linux-image-VERSION-generic et des en-têtes-VERSION-generic, des packages dignes de mention pour la création du numéro de version dans le nom du package (probablement pour faciliter l'installation de plusieurs en parallèle).

Plus précisément, cette réponse n'est pas abordée:

  • Ne traite pas de la suppression de -89 et -91.
  • N'explique pas comment faire de -57 la valeur par défaut pour Grub, même si j'installe des mises à jour ultérieures.
  • N'explique pas comment garantir que -57 reste installé, même si j'installe des mises à jour ultérieures. Même si la réponse est de conserver un ou plusieurs packages, étant donné les différents packages impliqués, lesquels devrais-je conserver? S'il s'agit de conserver linux-generic, comment dois-je le rétrograder en premier?
Alan De Smet
la source
Il est très peu probable que les noyaux "aient échoué" sur votre ordinateur portable. Vous avez probablement installé un pilote dans le mauvais sens et il "a échoué" après une mise à niveau du noyau. Avez-vous installé un pilote graphique?
Pilot6
Si vous supprimez le dernier noyau et générique linux avec des en-têtes, vous atteindrez votre objectif. Mais comme je l'ai dit, le problème est différent.
Pilot6
1
"échoué" n'était pas le wifi et X mécontent de mes graphiques. Les deux sont des pilotes stock intégrés et utilisés par Intel. Le problème avait persisté à travers plusieurs redémarrages, y compris un arrêt / mise sous tension complète. Donc, mon objectif était de combler un fossé jusqu'à ce que je puisse enquêter sérieusement. Naturellement, je commence à collecter des informations pour une enquête sérieuse et -91 commence à fonctionner comme prévu. soupir, je vais croiser les doigts pour l'instant.
Alan De Smet
1
Ce n'est pas un doublon. Il ne s'agit pas simplement de geler un paquet. C'est peut-être un doublon, mais pas de la question proposée.
Pilot6

Réponses:

19

Supprimez le dernier noyau en

sudo apt remove linux-image-4.4.0-91-generic linux-headers-4.4.0-91-generic

Cela désinstallera les méta packages linux-generic, linux-image-genericet linux-headers-generic. Les noyaux ne seront jamais mis à niveau.

Pour le rétablir, vous pouvez exécuter

sudo apt install linux-generic

Cela installera le dernier noyau et les noyaux recevront des mises à niveau.

linux-genericest un méta paquet. Il est vide, mais dépend de deux autres méta-packages: linux-image-genericet linux-headers-generic.

Les deux derniers pointent vers la dernière image du noyau et les derniers en-têtes.

Si vous supprimez des méta packages, rien ne sera supprimé de Linux, mais l'image du noyau et les en-têtes ne seront pas mis à jour. Vous pouvez toujours les installer plus tard. Ils tireront les derniers "vrais" paquets du noyau.

La solution consiste donc à supprimer manuellement les packages du noyau dont vous ne voulez pas ainsi que les méta packages.

Pilot6
la source
3

Bien que la solution de Pilot6 puisse être la meilleure solution, vous pouvez prendre des mesures moins drastiques.

Je supprimerais personnellement les noyaux que vous ne voulez pas du centre de logiciels, puis mettrais ces packages en attente - voir Comment empêcher la mise à jour d'un package spécifique?

Il s'agit d'un changement anodin et vous pouvez surfer ou annuler le changement assez facilement.

Panthère
la source
Quel paquet proposez-vous de conserver?
Pilot6
linux-generic est probablement suffisant, je n'en suis pas certain. Peut-être besoin d'ajouter les autres et peut-être besoin de spécifier le noyau exact, mais j'en doute.
Panther
3
sudo apt-mark hold linux-image-generic linux-headers-genericfera
Panther
1
@ Pilot6 - Non, vous pouvez conserver les anciens noyaux et marquer grub le noyau à démarrer. askubuntu.com/questions/216398/…
Panther
1
Oui, vous pouvez. Mais c'est trop compliqué et n'a aucun sens pratique.
Pilot6