- Новая прикольная тема для Астры. Удаление неиспользуемых ядер ОС Astra Linux SE и установка новых.
- Удаление неиспользуемых ядер в Linux
- Что такое «неиспользуемые» ядра и почему они накапливаются в системе?
- Удаление ядер с помощью системы управления пакетами
- Удаление сразу нескольких ядер
- Использование специализированных утилит — скрипт purge-old-kernels
- Похожие записи:
- Установка ядер серии 5.*
- Получение списка установленных ядер
- Получение версии загруженного ядра
- Обновление ядер и удаление неиспользуемых ядер
Новая прикольная тема для Астры. Удаление неиспользуемых ядер ОС Astra Linux SE и установка новых.
Дорогие друзья, сегодня проверил интересную и полезную штуку, по очистке неиспользуемых ядер ОС. Для этого нужно всего лишь написать отдельный простенький скрипт.
pkgs=`dpkg -l 2> /dev/null | egrep «^ii\s*linux-image-5\.[[:digit:]]+\.[[:digit:]]+-[[:digit:]]+-» | cut -d » » -f3 | grep -v ^linux-image-$(uname -r | cut -d ‘-‘ -f1-2)`
Есть пару интересных условий для его использования:
- Не пытайтесь добавить его в один большой скрипт как отдельный пункт в меню, для этого лучше использовать отдельную команду или функцию для его запуска. Вот пример такой функции:
- Как вы поняли из функции, описанной выше, данный скрипт необходимо запускать с правами супер пользователя и дать ему разрешение на выполнение, при этом необходимо запустить ОС именно под тем ядром, которое необходимо оставить.
Ну и как же удалять ядра, если не поставить новые? Так вот, установка ядер, зависит от версии ОС и ее обновлений. Так, например в Астра 1.7, существуют три основных версий ядер, которые можно поставить самим, вот список версий ядер для разных версий ОС:
Причем при обновлении той или иной версии до следующей, версии ядер, меняются, но не до самой новой версии. Для установки новых ядер ОС я использую следующие команды:
При обновлении ядер с 5.10 до 5.15 ПО не страдает, о чем не могу сказать при обновлении с версии 5.4 (Касперский точно слетает, и требует переустановки). И самое главное, это настраивать загрузчик grub и Fly после каждого обновления ядер, но это уже совсем другая история, которую я опишу в одной из следующих статей. Чтобы их не пропустить, подписывайтесь на канал, ставьте лайки и задавайте свои вопросы в комментариях.
Удаление неиспользуемых ядер в 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:
$ dpkg --list | grep linux-image $ dpkg --list | grep linux-headers
Для первой команды вывод может быть примерно таким:
ii linux-image-4.15.0-43-generic 4.15.0-43.23 amd64 Signed kernel image generic ii linux-image-4.15.0-46-generic 4.15.0-46.15 amd64 Signed kernel image generic ii linux-image-4.15.0-47-generic 4.15.0-47.50 amd64 Signed kernel image generic ii linux-image-4.18.0-18-generic 4.18.0-18.19~18.04.1 amd64 Signed kernel image generic ii linux-image-generic-hwe—18.04 4.18.0-18.68 amd64 Generic Linux kernel image
Похожий вывод даст вторая команда, но с тем лишь отличием, что в наименовании пакетов будет указано «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, следует выполнить следующие команды:
$ sudo apt-get purge linux-image-4.15.0-43-generic $ sudo apt-get purge linux-headers-4.15.0-43-generic $ sudo apt-get purge linux-image-4.15.0-46-generic $ sudo apt-get purge linux-headers-4.15.0-46-generic
Во время удаления этих пакетов конфигурация загрузчика GRUB будет автоматически перенастроена, ничего вручную для этого делать не нужно. Следует отметить, что в системе также могут присутствовать версии ядер без «generic» в наименовании пакетов. Если такие ядра не нужны, то и их также рекомендуется удалить. Изменения для GRUB можно заметить при следующей перезагрузке системы. В меню загрузчика (если в его конфигурации включен вывод меню выбора) будут отсутствовать пункты для соответствующих удалённых ядер.
Удаление сразу нескольких ядер
Нередко старых ядер накапливается довольно много. И при их удалении одной командой apt-get purge не совсем удобно перечислять наименования пакетов всех ядер. Чтобы сделать команду удаления ядер более удобочитаемой, а также сэкономить время на её составление. Можно воспользоваться некоторыми возможностями командной строки. Такими как регулярные выражения. В этом случае для удаления двух ядер версий 4.15.0-43 и 4.15.0-46. Включая их образы и заголовочные файлы запись соответствующих команд будет выглядеть следующим образом:
$ sudo apt-get purge linux-image-4.15.0- $ sudo apt-get purge linux-headers-4.15.0-
Следует отметить, что данный синтаксис возможен только при использовании командных интерпретаторов Bash, а также ему подобных.
Использование специализированных утилит — скрипт purge-old-kernels
Некоторые пользователи могут и не решиться на такие действия как удаления ядер в силу малоопытности. Для подобных ситуаций во многих дистрибутивах Linux в арсенале стандартного репозитория имеются специализированные утилиты, которые позволяют безопасно выполнять самые ответственные действия с системой. Одной из таких утилит является bikeshed, которую можно установить из одноимённого пакета:
$ sudo apt-get install bikeshed
В набор этой утилиты входит скрипт purge-old-kernels для безопасной очистки системы от неиспользуемых ядер. Скрипту можно передавать параметр, указывающий, сколько ядер самых свежих версий оставить в системе. Например, для того, чтобы оставить только два самых свежих ядра:
$ sudo purge-old-kernels --keep 2
Как и в случае с удалением ядер с помощью СУП, беспокоиться о перенастройке GRUB не стоит, поскольку данный скрипт это также умеет делать. Но если вдруг конфигурация загрузчика не была обновлена, то можно это сделать вручную, выполнив команду:
В заключение следует отметить, что использование скрипта purge-old-kernels является наиболее предпочтительным способом очистить систему от старых ядер. Главным преимуществом данного способа является его надёжность и универсальность, поскольку этот скрипт корректно удаляет даже те ядра, которые устанавливались в систему вручную путём сборки из исходных кодов.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Похожие записи:
Установка ядер серии 5.*
Установка актуальных версий ядер серии 5.* (модификации 5.4, 5.10, 5.15) возможна с помощью метапакетов linux-5.x с номером, соответствующим номеру модификации ядра:
Метапакеты для каждой модификации ядра представлены в трех вариантах:
- linux-5.* — установка ядра в вариантах generic и hardened;
- linux-5.*-generic — установка ядра в варианте generic;
- linux-5.*-hardened — установка ядра в варианте hardened;
- linux-5.*-lowlatency — установка ядра в варианте lowlatency (для обновлений, в которых такой вариант присутствует).
При установке любого из этих метапакетов будут установлены новейшие версии указанной модификации ядра и соответствующие им пакеты, необходимые для автоматической интеграции нового ядра с пакетами Astra Linux.
- Для установки ядер не следует использовать пакеты linux-image-5.*, так как нужные зависимости автоматически устанавливаются только при установке пакетов linux-5.*;
- Для того, чтобы установленные пакеты с ядрами обновлялись автоматически при установке обновлений необходимо установить метапакет linux-5.*. При установке метапакетов linux-5.*-generic или linux-5.*-hardened автоматическое обновление выполняться не будет.
Метапакеты могут быть установлены с помощью Графический менеджер пакетов synaptic или из командной строки командой apt с указанием названия устанавливаемого метапакета, например, для ядра 5.10:
Получение списка установленных ядер
Получить список установленных ядер можно командой:
Получение версии загруженного ядра
Получить версию и вариант ядра, загруженного в работающей ОС, можно командой:
На момент последнего обновления настоящей статьи:
- В составе Astra Linux Special Edition РУСБ.10015-01:
- В Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) без установленных оперативных обновлений доступно ядро модификации 5.4;
- Ядро модификации 5.10 доступно после установки обновления БЮЛЛЕТЕНЬ № 2021-1126SE17 (оперативное обновление 1.7.1);
- Ядро модификации 5.15 доступно после установки обновления БЮЛЛЕТЕНЬ № 2022-0819SE17 (оперативное обновление 1.7.2);
- В Astra Linux Special Edition РУСБ.10152-01 (очередное обновление 4.7) без установленных оперативных обновлений доступно ядро модификации 5.4;
- Ядро модификации 5.10 доступно после установки обновления БЮЛЛЕТЕНЬ № 2021-0915SE47MD (оперативное обновление 4.7.1);
- Ядро модификации 5.15 доступно после установки обновления БЮЛЛЕТЕНЬ № 2022-0926SE47 (оперативное обновление 4.7.2);
- Ядро модификации 5.4 доступно начиная с обновления 2.12.40;
- Ядро модификации 5.10 доступно начиная с обновления 2.12.43;
- Ядро модификации 5.15 доступно начиная с обновления 2.12.45;
Обновление ядер и удаление неиспользуемых ядер
При установке обновлений автоматическое обновление установленных ядер выполняется в пределах одной модификации. То есть, например, установленное ядро модификации 5.4 и версии 54 (linux-image-5.4.0-54-hardened) будет обновлено до версии 110 (linux-image-5.4.0-110-hardened), но не до ядра 5.10 или 5.15.
При установке обновлений с помощью astra-update для каждой модификации автоматически удаляются старые версии ядер кроме двух последних версий и загруженного ядра.
После загрузки с использованием нового ядра для удаления неиспользуемых ядер серий 4.* и 5.* можно использовать следующий сценарий:
pkgs=`dpkg -l 2> /dev/null | egrep «^ii\s*linux-image-[45]\.[[:digit:]]+\.[[:digit:]]+-[[:digit:]]+-» | cut -d » » -f3 | grep -v ^linux-image-$(uname -r | cut -d ‘-‘ -f1-2)`
[ -n «$pkgs» ] && apt remove $pkgs
rm -f /boot/old-*