Как правильно удалить старые ядра?

Автор CodeBash, 30 августа 2021, 10:34:56

« назад - далее »

0 Пользователи и 3 гостей просматривают эту тему.

CodeBash

Здравствуйте!
Хочу почистить систему и удалить старые не используемые ядра. Всего нашел 7 ядер. Текущее Linux a-pc 4.19.0-17-amd64
Открыть содержимое (спойлер)

a@a-pc:~$ sudo dpkg -l | grep linux-image*
rc  linux-image-4.19.0-10-amd64                   4.19.132-1                              amd64        Linux 4.19 for 64-bit PCs (signed)
rc  linux-image-4.19.0-11-amd64                   4.19.146-1                              amd64        Linux 4.19 for 64-bit PCs (signed)
rc  linux-image-4.19.0-13-amd64                   4.19.160-2                              amd64        Linux 4.19 for 64-bit PCs (signed)
ii  linux-image-4.19.0-14-amd64                   4.19.171-2                              amd64        Linux 4.19 for 64-bit PCs (signed)
ii  linux-image-4.19.0-17-amd64                   4.19.194-3                              amd64        Linux 4.19 for 64-bit PCs (signed)
ii  linux-image-4.19.0-9-amd64                    4.19.118-2+deb10u1                      amd64        Linux 4.19 for 64-bit PCs (signed)
ii  linux-image-amd64                             4.19+105+deb10u12                       amd64        Linux for 64-bit PCs (meta-package)
[свернуть]
Для этого использую скрипт purge-old-kernels из пакета byobu
Открыть содержимое (спойлер)

a@a-pc:~$ sudo apt-get install byobu
Чтение списков пакетов... Готово
Построение дерева зависимостей       
Чтение информации о состоянии... Готово
Уже установлен пакет byobu самой новой версии (5.112-1.1).
a@a-pc:~$ sudo purge-old-kernels --keep 2
No kernels are eligible for removal
[свернуть]
Пытаюсь удалить все ядра кроме текущего и 2х предыдущих.
Но получаю ответ, что ядра не подлежат удалению.

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

endru

ii - установленный пакет
rc - пакет был удален, но остались какие то конфигурационные файлы

собственно чтобы их почистить нужно удалить их с ключем purge
apt purge linux-image-4.19.0-10-amd64 linux-image-4.19.0-11-amd64 linux-image-4.19.0-13-amd64


Тот кто удаляет пакет с ключем purge должен четко понимать что делает, т.к. есть не нулевая возможность удалить нужный конфиг из системы!

Gamliel


dzhoser

Команда удалит все старые ядра, изначально была разработана для Ubuntu и в Debian может удалить все ядра. 
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)
При сообщении что ядро задействовано нужно нажать нет, точное сообщение к сожалению не помню, но по смыслу должно быть понятно.
sudo apt autoremove
sudo update-grub
Ubuntu->Linux mint->Astra Linux SE->Debian 12
Для новичков

Gamliel

Цитата: dzhoser от 05 сентября 2021, 07:09:23Команда удалит все старые ядра, изначально была разработана для Ubuntu и в Debian может удалить все ядра.
$ dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'
linux-image-5.10.0-8-amd64
linux-image-amd64
linux-libc-dev:amd64
$ sudo apt-get autoremove -s
Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Чтение информации о состоянии... Готово         
Обновлено 0 пакетов, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.

CodeBash

#5
Цитата: Gamliel от 05 сентября 2021, 06:50:06Чем не годится  sudo apt-get autoremove?
После autoremove остаются и конфигурационные файлы удаленных ядер, и не используемые ядра. На первом спойлере их видно.

Удалил как посоветовал endru, но сложно nак делать после каждого обновления/ Поэтому сначала пытался использовать скрипт purge-old-kernels, но он не правильно работает.

CodeBash

#6
Цитата: dzhoser от 05 сентября 2021, 07:09:23Команда удалит все старые ядра, изначально была разработана для Ubuntu и в Debian может удалить все ядра.
Код: [Выделить]

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)

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

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

a@a-pc:~/Desktop$ dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | head -n -1
linux-compiler-gcc-8-x86
linux-headers-4.19.0-14-amd64
linux-headers-4.19.0-14-common
linux-headers-4.19.0-17-amd64
linux-headers-4.19.0-17-common
linux-headers-amd64
linux-image-4.19.0-14-amd64
linux-image-4.19.0-17-amd64
linux-image-amd64
linux-kbuild-4.19
[свернуть]
Так будут удалены:
linux-compiler-gcc-8-x86
linux-headers-amd64
linux-image-amd64
linux-kbuild-4.19

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

dzhoser

Самый простой способ через synaptic.
sudo apt install synaptic
su -
synaptic
В поиск номера ядер или по другому критерию
Выбераете в контекстном меню как удалить полностью или нет.
Ubuntu->Linux mint->Astra Linux SE->Debian 12
Для новичков

dzhoser

#8
Цитата: CodeBash от 09 сентября 2021, 08:48:55Оптимально мне нужно удалить все кроме текущего и предыдущего ядра.
И что мешает потом накатить нужное ядро?
Покажите dpkg -l | grep linux-image | awk '{print$2}'
Ubuntu->Linux mint->Astra Linux SE->Debian 12
Для новичков

CodeBash

Цитата: dzhoser от 09 сентября 2021, 08:59:11Цитата: CodeBash от Сегодня в 08:48:55

    Оптимально мне нужно удалить все кроме текущего и предыдущего ядра.

И что мешает потом накатить нужное ядро?

Логика мешает. Зачем удалять все и потом устанавливать, если можно просто не все удалять!  ;)

Цитата: dzhoser от 09 сентября 2021, 08:59:11Покажите
Код: [Выделить]
dpkg -l | grep linux-image | awk '{print$2}'

Я же почистил уже по совету endru,
Открыть содержимое (спойлер)

a@a-pc:~/Desktop$ dpkg -l | grep linux-image | awk '{print$2}'
linux-image-4.19.0-14-amd64
linux-image-4.19.0-17-amd64
linux-image-amd64
a@a-pc:~/Desktop$
[свернуть]

dzhoser

#10
Цель достигнута, ставьте решено в теме
Ubuntu->Linux mint->Astra Linux SE->Debian 12
Для новичков

CodeBash

Цитата: dzhoser от 09 сентября 2021, 15:54:42Цель достигнута, ставьте решено в теме
Цель ни сколько не достигнута.
Цель была быстро и правильно удалить старые неиспользуемые ядра.
Решение endru, не совсем то что нужно. Поскольку делать это в ручном режиме из терминала каждый раз после апгрейда не удобно. Идеально было бы с помощью скрипта, но рабочих не могу найти. А тот что есть работает не правильно.

п.с. Решение от endru, есть в интернете. И если бы я хотел вручную чистить, то просто загуглил, а не стал бы и создавать эту тему.

dzhoser

#12
Сейчас нет под рукой Debian, проверьте пожалуйста наличие пакета  bikenshed
sudo apt search bikenshed
Если пакет присутствует, то
sudo apt-get install bikenshed -y
Удалить старые ядра
sudo purge-old-kernels --keep 3
Где 3 это количество оставляемых ядер.
Ubuntu->Linux mint->Astra Linux SE->Debian 12
Для новичков

yoric

Если проштудируете эту тему, то в этом сообщении рабочее решение. Никаких посторонних пакетов, старые ядра сами удаляются, кроме последних двух.
https://debianforum.ru/index.php/topic,16395.msg123571.html#msg123571

CodeBash

Цитата: dzhoser от 10 сентября 2021, 09:01:20Сейчас нет под рукой Debian, проверьте пожалуйста наличие пакета  bikenshed
Код: [Выделить]

sudo apt search bikenshed
К сожалению, такой пакет отсутствует.
вот что пишет сайт по этому поводу:
Открыть содержимое (спойлер)


Debian -- Результаты поиска пакетов -- bikenshed
Fri Sep 10 2021 17:16:01
https://packages.debian.org/search?suite=all&searchon=names&keywords=bikenshed
Вы искали пакеты, в именах которых есть bikenshed. Были просмотрены все комплекты, все секции и все архитектуры.

Ничего не найдено


[свернуть]