Debian удаляет старые ядра

Обновлено: 03.07.2024

Установки LVM и зашифрованные установки используют отдельный раздел /boot. Раздел по умолчанию способен вместить только четыре или пять ядер и может быстро заполняться до отказа. Чтобы предотвратить переполнение раздела /boot, необходимо настроить автоматическое удаление старых ядер или регулярно удалять старые ядра вручную.

Для изменения ядра, предоставляющего пакеты в вашей системе, требуются команды с доступом root, поэтому прочтите RootSudo.

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

Ручное обслуживание

Использование Apt

Вы можете удалить старые ядра с помощью простой команды autoremove в терминале:

Это просто добавляет ненужной сложности, замена инструкций после 14.04 является EoL. В версии 16.04 и новее вы можете использовать

Пакеты для удаления определяются частично на основе того, помечен ли пакет как установленный вручную или автоматически. Вы можете проверить, помечен ли пакет, предоставляющий ядро, как автоматически установленный, с помощью этой команды в терминале:

или посмотреть, помечен ли он как установленный вручную:

В случае, если некоторые пакеты, предоставляющие ядро, помечены как установленные вручную (возможно, потому, что они были установлены через apt-get) и вы хотите, чтобы они были автоматически удалены, вы можете изменить статус пакета с помощью apt-mark auto и имени пакета. . Например, чтобы пометить ядро ​​4.12.0-12-generic как самоудаляемое:

Примечание: apt-get autoremove не удалит все автоматически установленные пакеты со старым ядром, поскольку сохраняются резервные версии; список сохраненных ядер поддерживается и автоматически обновляется в файле /etc/apt/apt.conf.d/01autoremove-kernels в виде списка совпадающих регулярных выражений.

Другие методы

Если вы хотите очистить один конкретный пакет, предоставляющий ядро, вы можете сделать это с помощью следующей команды в терминале:

Это также очистит соответствующий пакет linux-image-extra, если он установлен, например. linux-image-extra-4.12.0-12-универсальный. Он не будет очищать linux-headers-4.12.0-12, если помимо -generic установлена ​​другая разновидность linux-headers-4.12.0-12.

Если вам просто нужно выборочно очистить ядра, вы можете воспользоваться этим ответом с неофициальным кодом, если система еще не сломана.

Существует неофициальный скрипт для очистки ядер; это называется linux-purge. С его помощью вы можете выборочно очистить ядра или оставить заданное количество старых ядер и удалить другие в зависимости от заданных параметров. Он может сделать даже некоторые исправления (с опцией --fix), если система уже сломана; это своего рода скриптовая версия того, что рассказывается в главе «Безопасное удаление старых ядер».

Автоматическое обслуживание

Пакет автоматических обновлений, включенный в стандартную установку всех разновидностей Ubuntu, включает функцию автоматического удаления неиспользуемых пакетов. Включение этой функции в Ubuntu 14.04 выполняется в два этапа.

Включить автоматическое обновление (Ubuntu 14.04)

В Ubuntu 16.04 и более поздних версиях автоматическое обновление включено по умолчанию, однако в Ubuntu 14.04 вам нужно будет включить его либо через графический интерфейс, либо через командную строку. Примечание. Существует отдельная документация по настройке автоматических обновлений безопасности.

Способ графического интерфейса пользователя

  • Установите флажок для *-security (и/или любых других репозиториев, которые вы хотите)
  • Автоматическая проверка обновлений: установите любую частоту (кроме «Никогда»)
  • При наличии обновлений для системы безопасности: задайте автоматическую загрузку и установку

Путь из ракушек

По умолчанию доступные обновления для системы безопасности устанавливаются каждый день. Если вы хотите изменить, какие пакеты будут обновляться (если есть) или как часто, см. подробности здесь.

Настройка автоматических обновлений для автоматического удаления ненужных ядер

Примечание. Этот способ не удалит все автоматически установленные пакеты со старым ядром, поскольку сохраняются резервные версии; список сохраненных ядер поддерживается и автоматически обновляется в файле /etc/apt/apt.conf.d/01autoremove-kernels в виде списка совпадающих регулярных выражений.

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

Новый файл можно назвать /etc/apt/apt.conf.d/52unattended-upgrades-local

См. здесь для справки.

Опция для всех выпусков Ubuntu

Следующий параметр настраивает unattended-upgrade для удаления неиспользуемых зависимостей после автоматического обновления.

Убедитесь, что файл конфигурации содержит строку

(и что он не закомментирован; комментарии начинаются с '//'.)

После этого unattended-upgrades автоматически удалит пакеты, содержащие старые ядра, как часть автоматического обновления. (Однако он их не очищает.) Он также удаляет другие ненужные пакеты, которые вам нужны или не нужны.

Параметры для Ubuntu 16.04 и новее

Unattended-upgrades версии 0.90 поддерживает новую переменную конфигурации Unattended-Upgrade::Remove-New-Unused-Dependencies, которая позволяет автоматически удалять только те пакеты, которые становятся избыточными во время выполнения автоматических обновлений. Он включен, т. е. «истина» по умолчанию. Так как это разработано, важно, чтобы вы позволяли автоматическим обновлениям обрабатывать установку обновлений безопасности. В противном случае unattended-uprades не удалит старые ядра, и вам, возможно, придется удалить ядра вручную.

В версии 1.1, которая в настоящее время также доступна для Ubuntu 16.04, добавлена ​​еще одна опция, называемая Unattended-Upgrade::Remove-Unused-Kernel-Packages. Он удаляет неиспользуемые пакеты ядра перед установкой нового (или даже если ничего не установлено). Он также включен по умолчанию.

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

Безопасное удаление старых ядер

Для пользователей систем LVM, зашифрованных систем или систем с ограниченным объемом памяти наиболее частая проблема заключается в том, что раздел /boot просто заполнен. Диспетчер пакетов не может установить отложенное обновление из-за нехватки места. Кроме того, apt-get не может удалить пакет из-за нарушенной зависимости.

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

Сначала удалите все временные файлы, оставшиеся от предыдущих обновлений ядра.

Определите номер версии работающего в данный момент ядра, которое вы НЕ хотите удалять.

Список всех ядер, включая загруженное (в данном примере 4.2.0-21-generic), в базе данных пакетов и их статусы.

Чтобы освободить место в /boot, мы вручную удалим файл initrd.img для подходящего старого ядра, это необходимо из-за ошибки упаковки kenel.

Теперь мы будем использовать dpkg, чтобы ПОПЫТАТЬ очистить пакет ядра для того же старого ядра:

ПРИМЕЧАНИЕ. Предыдущая команда, вероятно, завершится ошибкой, так как, вероятно, зависимый пакет linux-image-extra установлен вместе с «универсальным» пакетом ядра. В общем, вывод предыдущей команды покажет, какой пакет нужно удалить первым. В этом примере вы запустите

Наконец, мы исправим процесс установки пакета, который ранее не работал.

Если последняя команда завершится ошибкой из-за нехватки места на диске в /boot, вам придется очистить другое ядро ​​(например, linux-image-4.2.0-16-generic) таким же образом. В противном случае вы можете продолжить главу «Ручное обслуживание», чтобы удалить больше ядер. Убедитесь, что пакеты linux-headers, соответствующие очищенным выше ядрам, также будут очищены.

Неудовлетворенные ошибки зависимостей

Если вы какое-то время игнорировали ошибки apt и dpkg, возможно, некоторые пакеты были обновлены, а другие нет. Это ожидаемый последующий эффект. При обычном обновлении вы увидите загадочные постоянные ошибки версии.

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

Это проще, чем кажется. Например, если пакет hello является одной из этих неудовлетворенных зависимостей:

К сожалению, все ядра удалены!

Если вы немного увлеклись и удалили все ядра, вы попадаете в класс "ЧТО вы сделали.". Вам будет приятно узнать, что вы не первый и не последний человек, который это делает. Получите свой LiveCD и перейдите к GRUB, который сообщает об отсутствии операционной системы.

RemoveOldKernels (последним удаленным пользователем jarnos 2020-09-26 09:58:55)

Материалы этой вики доступны по бесплатной лицензии, подробности см. в разделе Авторские права / Лицензия
Вы можете внести свой вклад в эту вики, подробности см. в Руководстве по вики

В нашей последней статье мы объяснили, как удалить старые неиспользуемые ядра в CentOS/RHEL/Fedora. В этой статье мы объясним, как удалить старые неиспользуемые ядра в системах Debian и Ubuntu, но прежде чем двигаться дальше, вы можете установить последнюю версию, чтобы воспользоваться: исправлениями безопасности, новыми функциями ядра, обновленными драйверами и т. д. многое другое.

Чтобы обновить ядро ​​до последней версии в Ubuntu и Debian, следуйте этому руководству:

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

Чтобы узнать текущую версию ядра Linux, работающую в вашей системе, используйте следующую команду.

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

Удаление старых неиспользуемых ядер в Debian и Ubuntu

Выполните приведенные ниже команды, чтобы удалить конкретный образ linux вместе с его файлами конфигурации, затем обновите конфигурацию grub2 и, наконец, перезагрузите систему.

Хотя этот метод прекрасно работает, более надежным и эффективным является использование удобного скрипта под названием «byobu», который объединяет все вышеперечисленные команды в одну программу с такими полезными параметрами, как указание количества ядер, которые необходимо сохранить в системе.

Установите пакет сценария byobu, который содержит программу purge-old-kernels, используемую для удаления из системы старых ядер и пакетов заголовков.

Затем удалите старые ядра таким образом (приведенная ниже команда позволяет сохранить 2 ядра в системе).

Вы также можете прочитать следующие статьи по теме ядра Linux.

В этой статье мы описали, как удалить старые неиспользуемые образы ядра в системах Ubuntu и Debian. Вы можете поделиться своими мыслями в комментариях ниже.

Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.

Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:

TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.

Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.

Debian Stretch

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

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

Основой каждого дистрибутива Gnu/Linux является ядро ​​Linux. Отсюда и название Linux, а не просто GNU. Время от времени дистрибутивы обновляют или выпускают новую версию ядра, которая исправляет ошибку или является последней версией, выпущенной командой ядра. Когда мы устанавливаем последнюю версию, Debian оставляет старое ядро ​​и загружает новое ядро.

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

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

Это покажет нам версию ядра, которое мы используем. Теперь нам осталось посмотреть, сколько ядер мы установили в наш Debian, для этого пишем в терминале следующее:

Есть то, что он покажет нам все установленные ядра. Теперь нам нужно выбрать ядра для удаления и сделать это следующим образом:

Это будет с каждой версией ядра, которую мы хотим удалить. Если мы хотим сделать это автоматически, есть программа byobu, которая сделает это автоматически. Для этого мы должны сначала установить его следующим образом:

А затем запустите его следующим образом:

Это удалит все старые ядра и оставит только две версии для безопасности. Как видите, система проста и не только улучшит производительность дистрибутива, но и у вас будет больше места для ваших пакетов или файлов.

Содержание статьи соответствует нашим принципам редакционной этики. Чтобы сообщить об ошибке, нажмите здесь!.

Удалить старые ядра Debian

Когда вы используете установку LVM или зашифрованные установки, для хранения всего необходимого для процесса загрузки используется отдельный раздел /boot. Обычно раздел /boot может содержать только четыре или пять ядер, но в некоторых системах с ограниченным количеством систем хранения наиболее частая проблема заключается в том, что раздел /boot быстро заполняется.

ShowDiskSpaceUsage

Чтобы предотвратить переполнение раздела /boot, необходимо настроить автоматическое удаление старых ядер или регулярно удалять старые ядра вручную.

Вы можете удалить старые ядра с помощью следующей команды в терминале:

Обратите внимание, что команда apt-get autoremove не удалит все автоматически установленные пакеты со старым ядром, поскольку сохраняются резервные версии. Также поддерживается и автоматически обновляется список сохраненных ядер в файле /etc/apt/apt.conf.d/01autoremove-kernels в виде списка совпадающих регулярных выражений.

Ошибки при заполнении /boot

Диспетчер пакетов не может установить отложенное обновление из-за нехватки места. Кроме того, apt-get не может удалить пакет из-за нарушенной зависимости.

DependencyErrors

"Kernel Panic - не синхронизируется: VFS: невозможно смонтировать корневую файловую систему в неизвестном блоке (0,0)"

KernelPanicError

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

Шаги по удалению старых ядер вручную

Примечание. В этой статье я выполняю все операции внутри корневого входа.
В Ubuntu 16.04 и более ранних версиях могут быть временные файлы, оставшиеся от предыдущих обновлений ядра. Сначала удалите его.

Проверьте номер версии работающего в данный момент ядра, которое вы НЕ хотите удалять.

Список всех ядер, кроме загруженного (в данном примере 4.4.0-124-generic), в базе данных пакетов и их статусы.

ListOldKernels

Для освобождения места в /boot удалим файл initrd.img для подходящего старого ядра вручную, это необходимо из-за бага упаковки kenel.

RemoveInitrd.imgFile

Теперь используйте dpkg, чтобы очистить пакет ядра для того же старого ядра:

RemoveoldKernelAndPackages

ПРИМЕЧАНИЕ. Предыдущая команда, вероятно, завершится ошибкой, так как, вероятно, зависимый пакет linux-image-extra установлен вместе с «универсальным» пакетом ядра. Вывод dpkg сообщает имя пакета. Сначала очистите его.

Кроме того, очистите соответствующий пакет заголовков и попробуйте также очистить общий пакет заголовков.

RemoveHeaderPackages

Теперь он удалит указанное старое ядро. Аналогичным образом проделайте тот же процесс вручную для старых ядер, пока не освободите место в разделе /boot. И как только раздел /boot освободится, запустите команду apt-get autoremove, и она автоматически удалит остальные старые ядра.

Наконец, мы исправим процесс установки пакета, который ранее не работал.

Читайте также: