Как понизить ядро ​​после плохого обновления (16.04)

20

Недавние обновления ядра Ubuntu 16.04 (4.4.0-89 и -91) провалились на моем ноутбуке. К счастью, предыдущая рабочая версия все еще установлена ​​(4.4.0-57). На данный момент у меня есть Grub, настроенный на показ меню, и я вручную выбираю -57 при загрузке, но это кажется хрупким, что может привести к поломке в будущем sudo apt upgrade.

Я думаю, что я хочу:

  • Удалить -89 и -91, так как они не приносят мне пользы.
  • Чтобы установить -57 по умолчанию для Grub, таким образом, что это будет сохраняться при обновлении.
  • Чтобы убедиться, что -57 остается установленным, даже если я установлю позднее обновление ядра
  • Чтобы можно было легко попробовать последующие обновления ядра, но в случае сбоя вернитесь к -57. Моя главная задача - автоматически удалить -57.
  • Если я обнаружу работающее более позднее обновление, можно легко вернуться, чтобы отменить все это и вернуться к следующим обновлениям ядра.

Попытка удалить -91 с sudo apt remove linux-image-4.4.0-91-genericтребует от меня удаления linux-generic и linux-headers-generic. Это кажется плохим, поэтому я не пробовал.

Я могу найти множество вопросов об общей проблеме, но ни один из них, похоже, не отвечает всем моим целям, и большинство из них достаточно взрослые, поэтому я не думаю, что они применяются больше.

Какой лучший способ сделать это?

Приложение : Это было помечено как дубликат Как предотвратить обновление определенного пакета? , Этот ответ может касаться части моего вопроса, но не касается общей картины.

В общем, проблема в том, что ядро ​​обрабатывается необычным образом. Он устанавливается через linux-generic, который является ничем иным, как зависимостью от linux-image-generic и linux-image-headers. Эти, в свою очередь, являются только зависимостями от linux-linux-image-VERSION-generic и headers-VERSION-generic, пакетов, заслуживающих внимания для вставки номера версии в имя пакета (предположительно, для упрощения установки нескольких параллельно).

В этом ответе конкретно не рассматриваются:

  • Не рассматривается как убрать -89 и -91.
  • Не рассматривается, как сделать -57 по умолчанию для Grub, даже если я устанавливаю более поздние обновления.
  • Не рассматривается, как гарантировать, что -57 остается установленным, даже если я устанавливаю более поздние обновления. Даже если ответ будет содержать один или несколько пакетов, учитывая несколько пакетов, какие из них я бы держал? Если это вопрос поддержки linux-generic, как мне сначала понизить его?
Алан Де Смет
источник
Маловероятно, что ядра «провалились» на вашем ноутбуке. Возможно, вы неправильно установили какой-либо драйвер, и он "отказал" после обновления ядра. Вы установили какой-либо графический драйвер?
Pilot6
Если вы удалите последнее ядро ​​и linux-generic с заголовками, вы достигнете своей цели. Но, как я уже сказал, проблема в другом.
Pilot6
1
"не удалось" не было Wi-Fi и X недоволен моей графикой. Оба Intel интегрированы и используются стоковые драйверы. Проблема сохранялась после нескольких перезагрузок, включая полное выключение / включение питания. Так что моей целью была временная задержка, пока я не смог серьезно расследовать. Естественно, я начинаю собирать информацию для серьезного расследования и -91 начинает работать как положено. вздох Я пока скрестим пальцы.
Алан Де Смет
1
Это не дубликат. Это не просто заморозка какой-то упаковки. Может быть, это дубликат, но не предложенный вопрос.
Pilot6

Ответы:

19

Удалить последнее ядро ​​с помощью

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

Это приведет к удалению мета - пакетов linux-generic, linux-image-genericи linux-headers-generic. Ядра никогда не будут обновлены.

Чтобы вернуть его, вы можете запустить

sudo apt install linux-generic

Это установит последнее ядро, а ядра получат обновления.

linux-genericэто метапакет Он пуст, но зависит от двух других метапакетов: linux-image-genericи linux-headers-generic.

Последние два указывают на последний образ ядра и заголовки.

Если вы удалите метапакеты, из Linux ничего не будет удалено, но образ ядра и заголовки не будут получать обновления. Вы всегда можете установить их позже. Они будут тянуть последние "настоящие" пакеты ядра.

Поэтому решение состоит в том, чтобы вручную удалить ненужные пакеты ядра, а также метапакеты.

Pilot6
источник
3

Хотя решение Pilot6 может быть лучшим решением, вы можете предпринять менее радикальные меры.

Я бы лично удалил ненужные ядра из центра программного обеспечения, а затем отложил эти пакеты - см. Как предотвратить обновление определенного пакета?

Это тривиальное изменение, и вы можете легко изменить или отменить изменение.

пантера
источник
Какой пакет вы предлагаете держать?
Pilot6
linux-generic, вероятно, достаточно, я не уверен. Возможно, потребуется добавить другие и, возможно, потребуется указать точное ядро, но я сомневаюсь в этом.
Пантера
3
sudo apt-mark hold linux-image-generic linux-headers-genericсделаю
Пантера
1
@ Pilot6 - Нет, вы можете оставить старые ядра и пометить grub, какое ядро ​​загружать. askubuntu.com/questions/216398/…
Пантера
1
Да, ты можешь. Но это слишком сложно и не имеет практического смысла.
Pilot6