Почему небезопасно удалять старые ядра?

36

На моем загрузочном диске не хватило места, поэтому я решил удалить старые ядра. Я нашел эту страницу, которая описывает, что именно я должен делать: Документация Lubuntu: Удалить старые ядра .

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

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

Возможно ли, что разные приложения на моей машине с Ubuntu могут использовать разные ядра одновременно? Почему удаление всех старых ядер автоматически считается опасным?

Сергей
источник
8
На самом деле в статье нет слов «опасность» и «небезопасно». Как вы пришли к такому сильно преувеличенному выводу?
mikewh независимо от
2
Пару раз я обновлялся до последнего ядра и удалял свое старое ядро ​​перед перезагрузкой, но обнаружил, что (в моей конкретной системе) ядро ​​не работает и система не загружается. Теперь я делаю перезагрузку, а затем удаляю старое ядро, если все хорошо.
Мэтью Прочитано

Ответы:

50

Удаление старых ядер не является небезопасным, но если вы удалите все свои ядра и перезагрузите компьютер, вы останетесь на экране разгневанного Grub. Исправление, которое требует значительного ноу-хау (как это, но с apt-get install linux-genericв конце).

Первый раз, когда вы делаете это, это очень волнующе, но люди, которые хотят очистить свое меню Grub или восстановить место на диске, не ищут острых ощущений.

Опасность исходит от пользователей копировать-вставить блок кода , который -unbeknownst к ним и без признания risks- не применяется. Есть много примеров обнаружения старых ядер, и немногие из них идеальны. Даже мои последние усилия все еще имеют свои подводные камни. И мы говорим о проблеме, которая может быть исправлена; многие посты в Ask Ubuntu могут привести к необратимой потере данных при неправильном использовании.

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

Оли
источник
11
Не удаляйте все свои ядра (очевидно), но также не удаляйте работающее в данный момент ядро, если вы только что установили обновленное ядро ​​и еще не перезагрузили его. Зачем? Если что-то сломается в обновленном ядре, вы всегда можете выбрать свое предыдущее ядро ​​в Grub и вернуться к работе. В противном случае вы застрянете с не загружаемой системой, и вам придется играть в «игру LiveCD» (не веселая игра, кстати).
Натан Осман
1
Это почти так же весело, как dd if=/dev/zero of=/dev/sda bs=512 count=1. Я не помню, что я пытался сделать (кое-что о множественных менеджерах загрузки, делающих мою жизнь раздражающей). Я провел около семи часов с LiveCD, пытаясь восстановить таблицы разделов.
phyrfox
1
Это просто, сохранить (по крайней мере) одно ядро, которое протестировано и определенно работает. Кто-то - @NathanOsman - должен был выразить это словами. Второй важный урок, полученный здесь, не делайте вещи, о которых вы не знаете последствий.
Николай
1
Я бы не использовал слово «захватывающий», но когда я это делал, это чувство было интенсивным.
MDeBusk
Исправив проблемы с ядром в прошлом, я гораздо счастливее оставить три ядра. Я обычно использую работающее в данный момент ядро, новейшее ядро ​​и одно прямо перед текущим. Это дает мне последнюю информацию о перезагрузке, известную как работающую, и предыдущую, если по какой-то причине это не удается. Это, вероятно, излишне, но одобрено CYA.
flickerfly
4

Старые ядра являются частью пакетов. Если вы просто удалите, /boot/vmlinuz-3.13.0-44-genericвы оставите крошки пакета на всем протяжении.

Сначала выясните, какое ядро ​​вы используете. НЕ удаляйте ничего с этим значением, это его имя:

$ uname -r  
3.13.0-49-generic  

YMMV. Затем спросите, dpkgчто он знает:

$ dpkg -l linux-*

Некоторые из этих пакетов могут быть удалены, но что еще там? Используя одну строку, извлеченную (в МОЕЙ системе) из вывода dpkg -l linux-*:

 ii  linux-image-3.13.0-44-generic       3.13.0-44.73           amd64                  Linux kernel image for version 3.13.0 on 64 bit x86 SMP

Теперь посмотрим, что другие пакеты имеют -3.13.0-44в своих именах:

$ dpkg -l *-3.13.0-44*

После того, как вы выполните последнюю проверку, чтобы убедиться, что текущее kernel ( uname -r) НЕ находится в списке пакетов, вы можете начать удалять их с помощью выбранной вами системы управления пакетами.

waltinator
источник
0

В прошлый раз, когда я удалил свои старые ядра, я позаимствовал старый фрагмент кода. Ну, этот фрагмент кода потребовал, чтобы я перезагрузился после установки нового ядра, поэтому я остался без ядра. К счастью, я поймал это до перезагрузки, но, как говорили другие, у меня, возможно, остался «экран гневной личинки».

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

alfonsojon
источник
0

Это не небезопасно. Используя Linux, вы можете делать именно то, что вы хотите, если вы знаете правильные команды.

В /bootкаталоге вы можете просто ls -laсделать длинный список, а также найти любые скрытые файлы или каталоги (которых там быть не должно, если они есть!).

Из этой информации вы можете оценить даты и файлы старых версий. Не удаляйте все из них, но самые старые файлы, которые соответствуют той же версии.

В какой-то момент я подумал, что, возможно, если вы скомпилировали свое ядро ​​из исходного кода, вам понадобится настроить новое. .configФайл, который я не думаю , что это дело в соответствии с вашим объяснением, будет оставаться там.

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

Простым решением является загрузка машины с живого USB или CD / DVD Linux. chrootв него, и пересоберите ядро ​​с помощью таких инструментов, как dracut.

Нитин Дж Муткавоа
источник