18 июня 2016

Самый безопасный способ удаления старых ядер в Ubuntu

Команда разработчиков Ubuntu Kernel каждый месяц выпускает новые обновления ядра, исправления ошибок и патчи системы безопасности. Если вы постоянный пользователь Ubuntu и регулярно обновляете свою систему, то в вашей системе постепенно накапливается больше количество неиспользованных старых ядер.
Таким образом, есть вероятность того, что загрузочный  раздел /boot на жестком диске будет заполнен в определенный период времени. Если ваш раздел /boot полон, вы не сможете больше обновить систему или не можете даже обновить ядро до любой последней доступной версии. В этом случае очень важно регулярно обновлять ядро и программное обеспечение. Для этого вы должны иметь достаточно свободного пространства в разделе /boot. Чтобы система Ubuntu функционировала правильно, вы должны иметь достаточно свободного места в загрузочном /boot и корневом /root разделах.

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

sudo apt-get autoremove
sudo apt-get autoclean


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

Одним из разработчиков Ubuntu - Dustin Kirkland, отвечающим за развитие и стратегию продукта, была создана утилита purge-old-kernels, которая самым безопасным образом удаляет из системы неиспользованные пакеты ядер из десктопных и серверных систем Ubuntu.

Как использовать утилиту purge-old-kernels?

Утилита purge-old-kernels поставляется в Ubuntu 16.04 LTS по умолчанию, но прежде нужно установить утилиту byobu.  В более старших версиях Ubuntu, вы должны прежде установить дополнительно утилиту bikeshed.

 Для предыдущих дистрибутивов Ubuntu

sudo apt-get install bikeshed

В Ubuntu 16.04

sudo apt-get install byobu

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

sudo purge-old-kernels

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

Чтение списков пакетов ... Готово
Построение дерева зависимостей
Чтение информации о состоянии ... Готово
был автоматически установлен следующий пакет и больше не требуется:
 linux-headers-4.4.0-21

Используйте sudo apt-get autoremove, чтобы удалить его.
Следующий пакеты, которые будут УДАЛЕНЫ:
 linux-headers-4.4.0-21-generic* linux-image-4.4.0-21-generic* linux-image-extra-4.4.0-21-generic*обновлено 0, установлено 0 новых пакетов, 3 для удаления, и 0 пакетов обновлено.
После этой операции будет освобождено 224 Мб дискового пространства.
Вы хотите продолжить? [Y/n]

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

Как видно, в приведенном выше выводе команды, старые ядра занимали 224 Мб на ж/диске моей Ubuntu 16.04.

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


No kernels are eligible for removal (Нет ядер для удаления).

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

Например, чтобы удалить все старые ядра, за исключением 3-х последних, выполните следующую команду:

sudo purge-old-kernels --keep 3 -qy

Для получения более подробной информации об утилите purge-old-kernels, посмотрите мануал (руководство пользователя):

man purge-old-kernels

Источник: Dustin Kirkland blog

Удачи.

37 комментариев :

  1. У меня не работает. пишет: No kernels are eligible for removal. Хотя много старых ядер в системе.
    Я по старинке удаляю все накопившиеся ядра одной, хоть и длинной но надежной и проверенной временем командой:
    dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

    ОтветитьУдалить
    Ответы
    1. А система какая? И устанавливал ли пере этим дополнительные утилиты byobu или bikeshed.

      sudo apt-get install bikeshed

      или

      sudo apt-get install byobu

      Удалить
    2. Систему ставил с MinimalCD (Ubuntu 16.04) А потом накатил Cinnamon. Может в этоv проблема?

      Удалить
    3. Скорее всего. Гибриды - не самое лучшее решение для рабочей и безглючной системы.

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

      Удалить
    5. Да уж... Вы знаете толк в извращениях.) А Unity или Linux Mint Cinnamon чем не угодили?;)

      Удалить
    6. Сударь, не понимаю о каких таких извращениях вы изволите говорить? Мне удобней удалить все старые ядра одной командой, без установки дополнительных утилит. Особенно, если по работе имеются десятки компьютеров с различными версиями Linux.
      >>А Unity или Linux Mint Cinnamon чем не угодили?;)<<
      Да будет вам известно, многоуважаемый Сергей, что Unity — свободная оболочка для среды рабочего стола GNOME. А Linux Mint Cinnamon — дистрибутив операционной системы Linux. Как они связаны между собой, и почему именно они должны мне "угодить" ума не приложу.

      "Кто на ком стоял? - Крикнул Филипп Филиппович, - потрудитесь излагать ваши мысли яснее."©

      Напоследок. Позвольте мне самому решать какую OS и каким "извращенным" образом устанавливать. Я вполне самостоятельный пользователь Unix-like систем с 2006г. И если устанавливаю систему с MinimalCD, поверьте, знаю что делаю.
      P.S. Linux в отличии от Win и тем более OS X, обладает поистине огромным потенциалом и большими возможностями. Только не надо мне ничего навязывать коллега. Хорошо?

      Удалить
    7. "Систему ставил с MinimalCD (Ubuntu 16.04) А потом накатил Cinnamon" Это разве не извращение? Ладно, умного учить - только портить. Удаляюсь.)))

      Удалить
    8. Сергей Вам иногда лучше прмолчать, за умного сойдешь. Если не в теме, не пиши глупости. Удались лучше навсегда.)))

      Удалить
    9. Просто не люблю в дебри лезть. Особенно, когда "тема" выеденного яичка не стоит.)

      Удалить
    10. На том и закончили, удачи!

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

      Удалить
    12. Два чая господину Eduards Shlapins.

      Удалить
  2. sudo apt-get purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | head -n -1)\
    я это использую и нормально все..

    ОтветитьУдалить
    Ответы
    1. ruslan@ruslan-System-Product-Name:~$ uname -romi
      4.6.0-040600-generic x86_64 x86_64 GNU/Linux
      У меня это последнее ядро , кроме него остались в синаптике куча старых, спасибо что напомнили поудалять их,
      Согласен с вами тоже в помощь ,только у меня в конце вот этот слеш \ не ставлю
      sudo apt-get purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | head -n -1)

      Удалить
    2. Ну и ещё sudo apt-get autoremove после выше описаного сделал , и всё ядер нет, но кстати счас через синоптик удалял, так быстрей ,просто комадны не всегда под рукой

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

    ОтветитьУдалить
    Ответы
    1. Хотя в 14.04 надо кучу хрени всякой доставить)) Обойдусь как-нибудь.

      обновлено 0, установлено 65 новых пакетов, для удаления отмечено 0 пакетов, и 1 пакетов не обновлено.
      Необходимо скачать 58,8 MБ архивов.
      После данной операции, объём занятого дискового пространства возрастёт на 101 MB.
      Хотите продолжить? [Д/н] n

      Удалить
  4. $ man purge-old-kernels
    Нет справочной страницы для purge-old-kernels

    $ sudo apt install purge-old-kernels
    Чтение списков пакетов… Готово
    Построение дерева зависимостей
    Чтение информации о состоянии… Готово
    E: Не удалось найти пакет purge-old-kernels

    $ uname -romi
    4.4.0-24-generic x86_64 x86_64 GNU/Linux

    Стоит Ubuntu 16.04 Gnome. В её составе нет данного приложения. В источниках тоже ничего нет.

    ОтветитьУдалить
    Ответы
    1. В 16.04 необходимо установить пакет byobu
      sudo apt-get install byobu

      Удалить
  5. А мне понравился способ, после установки Лайта с ядром 4.2, обновил до 4.6 и применил данный способ, после нехитрых манипуляций, было предложено удалить 4.2 =) удалил не задумываясь. Всё отлично работает!

    ОтветитьУдалить
  6. > Утилита purge-old-kernels поставляется в Ubuntu 16.04 LTS по умолчанию.
    > В более старших версиях Ubuntu,вы должны прежде установить
    > дополнительные утилиты byobu или bikeshed.

    Прошу прощения, но это не совсем так. Цитата из блога автора утилиты:

    > You'll already have the purge-old-kernels command in Ubuntu 16.04 LTS (and later),
    > as part of the byobu package.
    > In earlier releases of Ubuntu, you might need to install bikeshed...

    То есть, в Ubuntu 16.04+ этой утилиты по умолчанию нет. Для её появления необходимо установить пакет byobu. А в более ранних версиях Ubuntu нужен пакет bikeshed.

    Утилита удобная. Спасибо за информацию!

    ОтветитьУдалить
  7. А на Хubuntu 16.04 LTS эту утилиту установить можно?

    ОтветитьУдалить
    Ответы
    1. А почему нет-то? Попробуйте sudo apt-get install byobu и сами увидите.

      Удалить
    2. Максим спасибо, получилось, всё вычистил. Отличная утилита!

      Удалить
  8. sudo apt autoremove
    sudo apt autoclean
    Интересно только у меня в 16.04 эти команды работают только после sudo su?

    ОтветитьУдалить
  9. sudo apt-get purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | head -n -1) --assume-yessudo apt-get purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | head -n -1) --assume-yes Самая лчщая команда удаления

    ОтветитьУдалить
  10. Почистил на системнике, даже не подозревал что 2.19 со времен Нади осталось, еще нашел 3.12 и 3.16, сейчас на родном 3.19 Mint 17.3/ выше 3.19 решил не лезть, пробовал, откатывался. То одно не хочет работать, то другое,

    ОтветитьУдалить
  11. Все сработало. Наконец-то есть что-то, благодаря чему не надо скрещивать пальцы :) Как всегда актуально Владимир, спасибо!

    ОтветитьУдалить
  12. Можно конечно встать и апплодировать стоя.Но.Можно и просто не ставать. Вариантов всегда два. Результат , правда всегда один..Владимр, Вы не нуждаетесь в апплодисментах..Браво..

    ОтветитьУдалить
  13. Ubuntu Tweak чем плох для удаления старых ядер?

    ОтветитьУдалить
    Ответы
    1. ==Ubuntu Tweak чем плох для удаления старых ядер?== Никто и не говорит, что Ubuntu Tweak - плох. Просто статью нужно внимательней читать:
      "Тем не менее, можно использовать некоторые сторонние программы, такие как Ubuntu Tweak для безопасного удаления неиспользуемых ядер, пакетов и их зависимостей, которые больше не нужны. Но Ubuntu Tweak это графическая программа, которая не может быть использована на серверах, которые не имеет графического режима."

      Удалить
    2. В общем-то, конечно, ничем. Кроме тех обстоятельств, что:
      1) purge-old-kernels - утилита непосредственно от разработчиков системы, чего не скажешь об Ubuntu Tweak. Какая-никакая, а гарантия безопасности.
      2) Ubuntu Tweak в дистрибутивах вроде Xubuntu, Lubuntu, UbuntuMate и тому подобных, по сути, смотрится как образцовое "нинужно" :). А старые ядра нужно чистить и там.
      3) Ubuntu Tweak сегодня есть, а завтра заброшен. Разработчик уже не раз терял интерес к проекту на моей памяти :).

      Удалить
    3. Действительно не внимательно читал.

      Удалить
  14. Спасибо,хорошая утилита,в Neon KDE работает все четко...

    ОтветитьУдалить