В настройках системы имеется пункт об удалении ненужных ядер, который доступ при обращении к менеджеру обновлений в разделе "Правка – Параметры – Автоматизация". Если в строке "Автоматическое обслуживание" положение движка установить в положение "Включено", то задание будет выполняться еженедельно от имени суперпользователя.
Однако мне более привычен старый способ удаления лишних ядер и очистки системы от ненужных файлов, который, как показала практика, в Linux Mint 20x не работает. Чтобы он работал в условии необходимо изменить значение vmlinuz* на config*
🔰 Вообще рекомендуют оставлять в системе предыдущее ядро,
чтобы в случае проблем с новым ядром можно было бы с загрузиться с прежним. Но лично у меня за последние годы такой необходимости ни разу не возникло.
Задачу можно выполнять при каждой загрузке системы, для чего создаваемый сценарий sh поместить в автозагрузку. Файл sh должен иметь разрешение на запуск как программы.
Так как операции могут быть выполнены только с правами суперпользователя (напр., sudo /home/user/clean.sh), то самому скрипту ( clean.sh – так называется у меня. Вы можете ему назначить какое угодно имя ) можно назначить запуск от имени суперпользователя без ввода пароля. Для этого выполните в терминале sudo xed /etc/sudoers и добавьте в него строку:
user ALL=NOPASSWD: путь_к_вашему_скрипту (напр., /home/user/clean.sh)
user – это ваш логин в системе.
При запуске сценария производится подсчёт ядер в системе. Если количество ядер будет больше 1, то будет осуществлено удаление всех ядер кроме текущего, а также выполнены команды автоочистки и автоудаления ненужных пакетов. Также в процессе будут удалены неиспользуемые модули ядра из каталога /lib/modules
Текст сценария (на примере моего).
#!/bin/bash
folder=/home/minter
kern=`find /boot -name config* | wc -l`
if [ $kern -gt 1 ];
then
apt purge -y $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | head -n -1)
apt autoclean
apt autoremove -y
rm $folder/.bash_history
> $folder/.bash_history
fi
exit
Обратите внимание на переменную folder, которая указывает на домашнюю папку пользователя, соответствующую логину пользователя в системе (в приводимом примере – minter). Не ошибитесь, иначе вы получите свой "самый чистый домашний каталог в мире".
Если вам нужно протоколирование действий, то добавьте их в протокол событий, например:
#!/bin/bash
folder=/home/minter
log= ... указать расположение файла
kern=`find /boot -name config* | wc -l`
if [ $kern -gt 1 ];
then
echo "$(date '+%H-%M-%S') -- в системе ядер - $kern, удаление ядер." >> $log
apt purge -y $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | head -n -1)
echo "$(date '+%H-%M-%S') -- запуск автоочистки." >> $log
apt autoclean
echo "$(date '+%H-%M-%S') -- запуск автоудаления." >> $log
apt autoremove -y
rm $folder/.bash_history
> $folder/.bash_history
echo "$(date '+%H-%M-%S') -- история bash очищена." >> $log
else
echo "$(date '+%H-%M-%S') -- очистка системы не требуется." >> $log
fi
exit
Пример практического выполнения.
Листинг каталога /boot до работы clean.sh :
config-5.4.0-66-generic
config-5.4.0-67-generic
grub
initrd.img
initrd.img-5.4.0-66-generic
initrd.img-5.4.0-67-generic
initrd.img.old
System.map-5.4.0-66-generic
System.map-5.4.0-67-generic
vmlinuz
vmlinuz-5.4.0-66-generic
vmlinuz-5.4.0-67-generic
vmlinuz.old
Листинг каталога /boot после работы clean.sh :
config-5.4.0-67-generic
grub
initrd.img
initrd.img-5.4.0-67-generic
initrd.img.old
System.map-5.4.0-67-generic
vmlinuz
vmlinuz-5.4.0-67-generic
vmlinuz.old