- Автоматическое удаление старых ядер
- Удаление неиспользуемых ядер в Linux
- Что такое «неиспользуемые» ядра и почему они накапливаются в системе?
- Удаление ядер с помощью системы управления пакетами
- Удаление сразу нескольких ядер
- Использование специализированных утилит — скрипт purge-old-kernels
- Как удалить старые версии ядра, чтобы очистить меню загрузки?
- 37 ответов
- 16.04 и более новые версии Ubuntu
- 11.10 и более новые версии Ubuntu
- GRUB2 и его отображение всех ядер
- Как навсегда удалить старые ядра
- Рекомендация
- Как удалить старые ядра Ubuntu
- Удалить старые ядра в Ubuntu
- 1. Терминал
- 2. Synaptic
- 3. Ubuntu Cleaner
- Выводы
Автоматическое удаление старых ядер
После очередного обновения убунты, я понял что меня вконец замучал растущий список загрузки в grub (это особенно актуально, если альтернативная ОС остается где-то внизу списка). Удалять вручную — это как-то неправильно, поэтому я решил заморочиться об автоматическом способе.
На хабре найти нужный топик мне не удалось, потому, покопавшись в интернете, я нашел рецепт, единственный минус которого было использование временных файлов, что мне не очень понравилось. Сделав пару преобразований, я получил чуть более упрощенный вариант (запускать через sudo).
Внимание (UPD): рекомендуется использовать не данный код, а код в конце поста, т.к. в отдельных ситуациях он может удалить текущее ядро, оставлен лишь для того, чтобы сохранить топик в исходном виде.
kernels=`dpkg-query -l linux-image-* | grep ^ii | grep -v e-g | head -n -1 | gawk -F» » ‘< print $2 >‘`
for i in $kernels
do
echo «Removing kernel: «$i
# sudo apt-get -y remove $i
done
Поскольку мои познания в написании скриптов под 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 ‘
Источник
Удаление неиспользуемых ядер в Linux
Довольно часто некоторые начинающие (и наблюдательные) пользователи Linux-систем замечают, что со временем на системных разделах заметно уменьшается объём свободного дискового пространства. Причём такие изменения происходят совсем не от установки дополнительного программного обеспечения (ПО). А в результате обновлений системы. Малоопытные пользователи сетуют: ситуация, схожая с тем, как в системах Windows. Новые обновления занимают значительный объём свободного места на системном разделе. Однако, всё совершенно не так, как в Windows. И главной особенностью является то, что в отличие от Windows, ситуацию можно и нужно исправить. Причём абсолютно корректно, полностью вернув утраченное свободное место.
Что такое «неиспользуемые» ядра и почему они накапливаются в системе?
Для системного ядра 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.
Источник
Как удалить старые версии ядра, чтобы очистить меню загрузки?
Каждый раз, когда я устанавливаю новое ядро Linux, оно остается в grub_config, каждый раз делая меню загрузки длиннее.
Я знаю, что могу вручную искать установленные пакеты и удалять их.
Предоставляет ли Ubuntu какой-либо более простой способ очистить их или не показывать в списке загрузки?
37 ответов
16.04 и более новые версии Ubuntu
Эта команда удаляет пакеты, которые были автоматически установлены для разрешения зависимости, но теперь больше не зависят от них. Это включает в себя старые версии linux-headers-* а также linux-image-* , (Это также разумно для этого процесса, оставив одну запасную версию ядра как запасной вариант!)
11.10 и более новые версии Ubuntu
GRUB2 и его отображение всех ядер
Последние версии Grub2, установленные в Ubuntu, автоматически отображают последнее ядро и скрывают старые версии, которые вы, возможно, установили.
Если вы не видите свой grub — не забудьте нажать Shift во время загрузки.
Как видите, отображается только последнее ядро.
Если вы выберете показанную опцию (нажмите Enter ), тогда все старые ядра станут видимыми и доступными для загрузки.
Как навсегда удалить старые ядра
Первая загрузка с последним доступным ядром.
Есть несколько способов удалить старые ядра. Лично я бы не стал трогать Computer Janitor, потому что это, как признается, сломало ваш компьютер своими советами.
синаптические
Альтернативой является Synaptic ( sudo apt install synaptic )
найдите linux-image, щелкните правой кнопкой мыши ядро, выберите полное удаление и, наконец, нажмите кнопку » Применить», чтобы удалить ядро.
Повторите поиск, но на этот раз для linux-header — вы можете удалить связанные заголовки для образа ядра, выбранного ранее.
Synaptic, тем не менее, не будет пытаться проверить, что вы пытаетесь удалить. вы можете непреднамеренно удалить свое новейшее ядро - или даже удалить все ваши ядра с помощью этого инструмента, оставив вам не загружаемую Ubuntu!.
Не забудьте проверить, какое ядро вы используете тип:
Результат будет похож на:
Запомните результат и номер — убедитесь, что вы не удалили соответствующее изображение или заголовок.
Рекомендация
Моя рекомендация — оставить как минимум два или предпочтительно три ядра, включая самое последнее. Причиной рекомендации является то, что у вас будет по крайней мере одно / два других ядра для загрузки, если по какой-либо причине последнее ядро вы не можете загрузить или вводите регрессивную возможность, такую как неисправное беспроводное соединение.
Сначала перезагрузите систему, чтобы убедиться, что она использует новейшее ядро. Затем откройте терминал и проверьте ваше текущее ядро:
НЕ УДАЛЯЙТЕ ЭТОГО ЯДРА!
Затем введите команду ниже, чтобы просмотреть / просмотреть все установленные ядра в вашей системе.
Найдите все ядра, которые ниже вашего текущего ядра. Когда вы знаете, какое ядро удалить, продолжайте ниже, чтобы удалить его. Запустите команды ниже, чтобы удалить ядро, которое вы выбрали.
Наконец, выполните команды ниже, чтобы обновить grub2
Перезагрузите вашу систему.
Мой однострочник для удаления старых ядер (это также освобождает место на диске)
Объяснение (помните, | использует выходные данные предыдущей команды в качестве входных данных для следующей)
- dpkg —list список всех установленных пакетов
- grep linux-image ищет установленные образы Linux
- awk ‘< print $2 >‘ просто выводит 2-й столбец (который является именем пакета)
- sort -V упорядочивает элементы по номеру версии
- sed -n ‘/’`uname -r`’/q;p’ печатает строки перед текущим ядром
- xargs sudo apt-get -y purge удаляет найденные ядра
Разматывать sed вызов:
- -n говорит sed быть спокойным
- `uname -r` выводит текущую установленную версию ядра — мы включаем ее в обратные кавычки, чтобы вывод был включен как часть команды (вы также можете увидеть это как $(uname -r)
- /something/q говорит остановка, когда вы сопоставляете «что-то» (в этом случае что-то выводится uname -r ) — / окружить регулярное выражение
- p это печать
- ; это разделитель команды, так /something/q;p говорит, что выход, когда вы соответствуете что-то, иначе распечатать
в целом, sed -n ‘/’`uname -r`’/q;p’ выводит строки, пока они не совпадут с текущим именем ядра.
Если вы параноик (как я), вы можете сделать последнюю часть xargs echo sudo apt-get -y purge чтобы распечатать команду очистки старых ядер, вы можете проверить, что ничего неожиданного не было добавлено до ее запуска.
Модифицированная версия для удаления заголовков:
Обратите внимание sed вызов изменен. «$(uname -r | sed «s/\([0-9.-]*\)-\([^0-9]\+\)/\1/»)» извлекает только версию (например, «3.2.0-44»), без «-generic» или подобного из uname -r
Версия «все в одном» для удаления изображений и заголовков (объединяет две версии выше):
Источник
Как удалить старые ядра Ubuntu
В Ubuntu ядро можно обновить несколькими способами. Для версии Ubuntu Desktop, менеджер обновлений программного обеспечения позволяет обновить ядро до самой новой версии в любое удобное время. В серверной версии Ubuntu ядро обновляется автоматически, утилитами из пакета unattended-upgrades, как часть важных обновлений безопасности. Также ядро можно обновить вручную, с помощью утилит управления пакетами apt, aptitude или даже собрав из исходников.
Со временем из-за таких обновлений, в системе накапливается много неиспользуемых образов ядер, которые только занимают дисковое пространство. Каждый образ ядра вместе со связанными заголовочными файлами и файлами модулей занимает около 200-400 мегабайт. Таким образом, удаление старых ядер в ubuntu позволит освободить много дискового пространства.
Посмотреть сколько в вашей системе набралось образов ядер можно с помощью файлового менеджера, открыв каталог /boot или просто выполнив команду в терминале:
Кроме того, в меню загрузчика Grub присутствует пункт для каждого ядра, на случай если вы захотите выбрать его для загрузки:
Для очистки диска можно удалить старые ядра в Ubuntu, если вы их не используете и они вам больше не нужны.
Удалить старые ядра в Ubuntu
1. Терминал
Перед тем как удалить старые ядра Ubuntu вспомните, что рекомендуется иметь в системе две версии ядра — последнюю, используемую на данный момент, и предыдущую, на случай какой-либо неполадки.
Не рекомендуется работать с одним ядром в системе, потому что если вы его повредите, у вас будет намного больше работы для восстановления системы. Важно заметить, что такой вариант не будет работать, если вы устанавливали новые ядра из исходников.
В Ubuntu образы ядра принадлежат к таким пакетам:
- linux-image- — образ ядра
- linux-image-extra- — внешние модули ядра
- linux-headers- — файлы заголовков
Сначала посмотрим какое ядро используется на данный момент в вашей системе:
Смотрим какие версии ядер были установлены:
apt list —installed | egrep «linux-image|linux-headers»
Можно посмотреть список ядер с помощью dpkg:
dpkg —list | egrep «linux-image|linux-headers»
Здесь rc — означает, что пакет был установлен, но уже удален, а ii — что пакет сейчас установлен.
На основе полученного списка вы можете удалить любую версию, например, 4.15.0-91:
sudo apt purge linux-image-4.15.0-66-generic linux-headers-4.15.0-91-generic
Эти команды удалят образ ядра, а также связанные с ним заголовочные файлы и файлы модулей.
Обратите внимание, что при удалении старого ядра, будет автоматически инициирован процесс обновления ядра до последней версии, если вы этого еще не сделали, а также после удаления будет обновлен конфигурационный файл Grub, чтобы убрать лишнюю запись из меню.
Если такое ядро не одно, вы можете удалить старые ядра ubuntu одной командой, используя расширенный синтаксис Bash. Оператор <> будет работать только в Bash и совместимых с ним оболочках:
sudo apt purge linux-image-4.15.0- <20.21,50.54,51.55>linux-headers-4.15.0-
После выполнения этих команд будет удаленно три образа ядра 4.15.0-20.21, 4.15.0-50.54, 4.15.0-51.55.
Если конфигурация Grub не обновится по каким-либо причинам, это можно сделать вручную:
Теперь можете перезагрузить компьютер, чтобы убедиться, что меню выбора операционной системы было очищено от лишних ядер.
Скрипт purge-old-kernels, который можно было использовать для удаления старых ядер больше не актуален, потому что он просто ссылается на команду apt. Теперь можно удалить старые ядра с помощью неё:
sudo apt —purge autoremove
Удалить все старые ядра, кроме используемого и предпоследнего, также можно командой:
sudo apt-get purge $(dpkg -l ‘linux-*’ | sed ‘/^ii/!d;/'»$(uname -r | sed «s/\(.*\)-\([^0-9]\+\)/\1/»)»‘/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/6/!d’ | head -n -1)
Затем нужно выполнить команду очистки системы и вручную обновить конфигурацию grub.
sudo apt autoremove
sudo update-grub
2. Synaptic
Synaptic — это графический пакетный менеджер для Ubuntu. Он позволяет устанавливать удалять и обновлять все пакеты в системе. Для его установки выполните:
sudo apt install synaptec
Запустите программу, в левой части выберите пункт Разделы затем Ядро и модули:
Найдите в списке пакеты linux-headers и linux-image, которые не используются и выберите в контекстном меню для них пункт Отметить для полного удаления:
Отметьте так все лишние пакеты и нажмите кнопку Применить на верхней панели чтобы применить изменения к системе. Конфигурация Grub должна обновится автоматически.
3. Ubuntu Cleaner
Это небольшая утилита, которая позволяет вам держать систему в чистоте удаляя старые ядра, ненужные пакеты, кэши браузеров и тому подобные вещи. Для её установки надо добавить PPA:
sudo add-apt-repository ppa:gerardpuig/ppa
Затем установите программу:
sudo apt install ubuntu-cleaner
После завершения установки вы найдёте её в главном меню:
Для очистки ядер выберите Old kernels на левой панели, затем отметьте ядра, которые надо удалить или отметьте пункт Old kernels в правой части окна:
После этого нажмите Clean и подтвердите операцию:
Всё, ваши старые ядра будут удалены.
Выводы
Незачем держать в системе очень много ненужных файлов. Теперь вы знаете, как правильно удалить старые версии ядер Ubuntu и сможете поддерживать свою систему в чистоте и порядке, это очень важно, особенно если вы часто обновляете ядра и тестируете новые версии. Если у вас остались вопросы, спрашивайте в комментариях!
Источник