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

Обновлено: 07.07.2024

Что такое «неиспользуемые» ядра и почему они накапливаются в системе?

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

Но дело ещё и в том, что когда для системы выпускается новая версия Linux-ядра. То оно (новое ядро) будет установлено как отдельное независимое ядро. В процесс его установки также входит автоматическая настройка загрузчика GRUB. Для того, чтобы свежеустановленное ядро загружалось им по-умолчанию. При этом, как правило, старые ядра не удаляются. Это сделано для того, чтобы как можно в более полной степени следовать концепции «Unix Way». Которая, в частности, предполагает предотвращение всяческой самодеятельности, дабы не навредить системе. В случае с установкой новых версий ядер, старые не удаляются, чтобы дать возможность пользователю их использовать. Если с новым ядром возникнут какие-либо неполадки.

Стоит заметить, что в зависимости от «комплектности» ядер, они могут, занимать свыше 300 мегабайт дискового пространства. Нетрудно представить, какой объём в таком случае занимают несколько неиспользуемых старых ядер.

В данной статье будут рассмотрены способы очистки системы от неиспользуемых ядер на примере дистрибутивов Ubuntu. Так, например, для этих систем (как впрочем и для большинства других Linux-дистрибутивов) ядро представляет собой набор из следующих пакетов:

  • linux-headers-[версия] – заголовочные файлы ядра;
  • linux-image-[версия] – бинарный образ ядра;
  • linux-extra-[версия] – дополнительные внешние модули ядра для расширения функционала.

При установке и удалении перечисленных пакетов также выполняются и служебные скрипты для настройки системного загрузчика. Это необходимо для очистки его конфигурации (или для добавления в неё) в соответствии с установленными (или удаляемыми) в системе ядрами.

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

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

Как можно видеть, в качестве основного ядра (то, которое загружает загрузчик GRUB по-умолчанию) является версия 4.18.0-18.
Теперь можно выяснить, какие ещё ядра присутствуют в системе. На примере Ubuntu для этого используется команды менеджера пакетов dpkg:

Для первой команды вывод может быть примерно таким:

Похожий вывод даст вторая команда, но с тем лишь отличием, что в наименовании пакетов будет указано «linux-headers». Как можно видеть, кроме основного ядра версии 4.18.* в системе присутствуют также ядра из семейства версии 4.15 — 43, 46 и 47. От первых двух не мешало бы избавиться, высвободив таким образом значительный объём дискового пространства. А вот ядро 4.15.0-47 рекомендуется оставить как резервное. Это обычная практика в Linux-системах — иметь на борту альтернативное ядро предыдущей версии со стабильными проверенной конфигурацией и набором модулей.

Следует не забывать, выполнять вышеприведённые команды для пакетов linux-extra – они также могут присутствовать в системе. Но гораздо реже, поскольку данные пакеты чаще всего устанавливаются вручную.

Теперь, когда решено удалить неиспользуемые ядра версий 4.15.0-43 и 4.15.0-46, можно воспользоваться командами системы управления пакетами (СУП) для используемого дистрибутива. В данном случае, для Ubuntu, следует выполнить следующие команды:

Во время удаления этих пакетов конфигурация загрузчика GRUB будет автоматически перенастроена, ничего вручную для этого делать не нужно. Следует отметить, что в системе также могут присутствовать версии ядер без «generic» в наименовании пакетов. Если такие ядра не нужны, то и их также рекомендуется удалить. Изменения для GRUB можно заметить при следующей перезагрузке системы. В меню загрузчика (если в его конфигурации включен вывод меню выбора) будут отсутствовать пункты для соответствующих удалённых ядер.

Удаление сразу нескольких ядер

Нередко старых ядер накапливается довольно много. И при их удалении одной командой apt-get purge не совсем удобно перечислять наименования пакетов всех ядер. Чтобы сделать команду удаления ядер более удобочитаемой, а также сэкономить время на её составление. Можно воспользоваться некоторыми возможностями командной строки. Такими как регулярные выражения. В этом случае для удаления двух ядер версий 4.15.0-43 и 4.15.0-46. Включая их образы и заголовочные файлы запись соответствующих команд будет выглядеть следующим образом:

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

Использование специализированных утилит — скрипт purge-old-kernels

Некоторые пользователи могут и не решиться на такие действия как удаления ядер в силу малоопытности. Для подобных ситуаций во многих дистрибутивах Linux в арсенале стандартного репозитория имеются специализированные утилиты, которые позволяют безопасно выполнять самые ответственные действия с системой. Одной из таких утилит является bikeshed, которую можно установить из одноимённого пакета:

В набор этой утилиты входит скрипт purge-old-kernels для безопасной очистки системы от неиспользуемых ядер. Скрипту можно передавать параметр, указывающий, сколько ядер самых свежих версий оставить в системе. Например, для того, чтобы оставить только два самых свежих ядра:

Как и в случае с удалением ядер с помощью СУП, беспокоиться о перенастройке GRUB не стоит, поскольку данный скрипт это также умеет делать. Но если вдруг конфигурация загрузчика не была обновлена, то можно это сделать вручную, выполнив команду:

В заключение следует отметить, что использование скрипта purge-old-kernels является наиболее предпочтительным способом очистить систему от старых ядер. Главным преимуществом данного способа является его надёжность и универсальность, поскольку этот скрипт корректно удаляет даже те ядра, которые устанавливались в систему вручную путём сборки из исходных кодов.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Debian Stretch

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

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

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

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

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

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

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

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

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

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

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

Полный путь к статье: Любители Linux » GNU / Linux » ядро » Как удалить старые ядра в Debian

old-kernel-linux

Сегодня в статье рассмотрим примеры по очистке/удалению старых версий ядра в Linux. Данные команды подойдут для операционных систем семейства Debian, таких как MX Linux, Debian, Ubuntu, Linux Mint, Lubuntu, Xubuntu, Elementary OS, Zorin OS и так далее. В конце статьи будут примеры для Proxmox.

Удаление старых версий ядра Linux

Давайте очистим систему от старых пакетов Kernel. Удаление старых ядер Linux одной командой из терминала.

Если вы обновили ядро или систему — перезагрузите компьютер! А лучше в начале выполнить команду без удаления!

  • dpkg -l ‘linux-*’ — выбрать все установленные пакеты, которые начинаются с linux-.
  • sed ‘/^ii/!d; удалить из списка все строки, которые начинаются с чего-то отличного от ii.
  • uname -r | sed «s/\(.*\)-\([^0-9]\+\)/\1/» — получить текущую версию вашего ядра.
  • /'»$(uname -r | sed «s/\(.*\)-\([^0-9]\+\)/\1/»)»‘/d — удалить все строки за исключением той, в которой содержится текущая версия ядра.
  • s/^[^ ]* [^ ]* \([^ ]*\).*/\1/ — в каждой строке оставить только название пакета
  • /3/!d удалить строки, которые не содержат цифры.

Команда выдаст все ядра установленные в системе. Если в них нет новых только-что установленных (свежих) ядер, то переходим к удалению. Для этого в терминале набираем следующую команду:

  • xargs sudo apt-get -y purge — полностью удалить эти пакеты.

Удаление старых Kernels через DPKG

В этом примере вы сможете удалить старые ядра (kernel) через утилиту DPKG:

Получите список всех ядер за исключением текущего загруженного:

Пример вывода команды:

В данном выводе может быть 3 статуса образов ядер:

  • rc — означает, что ядро уже удалено.
  • ii — означает, что ядро установлено и может быть удалено.
  • iU — ЭТО НЕЛЬЗЯ УДАЛЯТЬ. Это означает, что ядро не установлено, но требуется его установка в apt.

Хотя в примере стоит значение rc, но все же данный список раздражает. Давайте удалим старые ядра вручную, для этого набираем вот такую команду:

Так же попробуйте удалить пакеты со значение ii заголовочных файлов для старых ядер (Если команда выводит ошибки можете не обращать на это внимание):

Удаление старых версий ядра в Proxmox

Смотрим старые ядра:

Удаляем в ручную при помощи apt, вот например версию 5.4.60:

Если есть вопросы, то пишем в комментариях.

Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо.

О том, как удалить ненужные версии ядра, сейчас и поговорим. Способы, что будут описаны ниже, универсальны для Debian-подобных систем и Ubuntu-подобных систем.

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

Удалить старые версии ядра можно через менеджер пакетов Synaptic. В этом деле нам также может помочь Ubuntu Tweak, но я всё же предпочитаю встроенные инструменты системы, поэтому опишу работу Synaptic.

В качестве примера использую симпатичную мне Lubuntu.

Как удалить старые версии ядра в Ubuntu и Debian

Отображение результата поиска в Synaptic

Версия 3.13.0-52 мне уже не нужна. Для её удаления мне нужно удалить три пакета: linux-headers-3.13.0-52, linux-headers-3.13.0-52-generic и linux-image-3.13.0-52-generic (он находится в списке ниже, поэтому его не видно на скриншоте).

Для удаления этих пакетов нужно щелкнуть по ним правой кнопкой мыши и Отметить для удаления.

Внимание!

Если Вы пометите пакет для полного удаления, то удалите не только этот пакет, но и все зависимости.

Как удалить старые версии ядра в Ubuntu и Debian

Файлы, помеченные к удалению, выделены красным.

Как удалить старые версии ядра в Ubuntu и Debian

Как удалить старые версии ядра в Ubuntu и Debian

Удаление старых версий ядра через Synaptic

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

Впрочем, если пакетов, действительно, очень много то логичным представляется консольный вариант удаления. Для того, чтобы оставить в системе только последнюю и предпоследнюю версии ядра, введите в терминал следующую команду (всё пишется в одну строку):

система потребует пароль root и спросит ваше согласие на удаление.

Как удалить старые версии ядра в Ubuntu и Debian

Удаление старых версия ядра через терминал Linux

После очередного обновения убунты, я понял что меня вконец замучал растущий список загрузки в grub (это особенно актуально, если альтернативная ОС остается где-то внизу списка). Удалять вручную — это как-то неправильно, поэтому я решил заморочиться об автоматическом способе.

На хабре найти нужный топик мне не удалось, потому, покопавшись в интернете, я нашел рецепт, единственный минус которого было использование временных файлов, что мне не очень понравилось. Сделав пару преобразований, я получил чуть более упрощенный вариант (запускать через sudo).

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

kernels=`dpkg-query -l linux-image-* | grep ^ii | grep -v e-g | head -n -1 | gawk -F" " '< print $2 >'`

Поскольку мои познания в написании скриптов под shell можно считать нулевыми, я закомментировал неспосредственно строчку с удалением, на случай если где-то допустил критическую ошибку :) Просьба хабражителей высказать свое мнение насчет надежности кода — и тогда я уберу комментарий. Кроме того, мне кажется можно и этот код упросить до одной команды (что у меня, к сожалению, не получилось).

Надеюсь, кому-нибудь пригодится.

Убедительная просьба: перед первым запуском команды, запустите ее без хвоста "| xargs apt-get -y purge" и убедитесь, что вы получаете корректный список ядер на удаление.

UPD: Хабраюзеры Messie и ValdikSS подсказали более корректный и однострочный вариант:

dpkg -l linux-image-* | grep ii | grep -v [a-z]-generic | grep -v `uname -r` | awk '< print $2 >' | xargs apt-get -y purge

UPD2: Вариант из скрипта ubucleaner от Steve_32:

dpkg -l | grep ii | awk '' | grep -E 'linux-(image|headers|ubuntu-modules|restricted-modules)' | grep -vE 'linux-(image|headers|restricted-modules)-(generic|i386|server|common|rt|xen)' | grep -v $(uname -r|sed 's/-*[a-z]//g'|sed 's/-386//g') | xargs apt-get -y purge

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