В мире DevOps автоматизация рутинных задач — это не просто удобство, а необходимость. Если вы используете Ubuntu, то наверняка сталкивались с тем, что старые ядра Linux постепенно заполняют диск, особенно раздел /boot. В этой статье я расскажу, как настроить автоматическую очистку старых ядер с помощью встроенных возможностей apt и планировщика cron, а также покажу ручной метод с использованием команды apt purge. Это отличная практика для десктопов, но для серверов я рекомендую действовать осторожнее и предпочесть ручной режим.
Зачем чистить ядра?
Каждое обновление ядра оставляет предыдущую версию на случай проблем с новым релизом. Это полезно для отката, но со временем ненужные файлы накапливаются, а раздел /boot может переполниться, что приведёт к ошибкам при обновлении системы. Автоматизация или упрощённый ручной процесс помогают поддерживать порядок.
Вариант 1: Автоматизация с apt и cron
Современные версии Ubuntu (начиная с 22.04 и новее) интегрировали очистку старых ядер в apt, что делает процесс проще и надёжнее.
Шаг 1: Проверка текущего ядра
Узнаем, какое ядро активно, чтобы случайно не удалить его:
uname -r
Пример вывода: 5.15.0-73-generic. Это ядро трогать не будем.
Шаг 2: Используем apt для очистки
Команда apt autoremove автоматически удаляет неиспользуемые пакеты, включая старые ядра:
sudo apt autoremove --purge
Флаг --purge также удаляет конфигурационные файлы. После выполнения проверьте, какие ядра остались:
dpkg --list | grep linux-image
Шаг 3: Настройка cron для автоматизации
Для десктопов автоматизация через cron — отличный выбор. Откройте редактор cron от имени root:
sudo crontab -e
Добавьте задание, например, для ежемесячной очистки 1-го числа в 3:00 утра:
0 3 1 * * /usr/bin/apt autoremove --purge -y >> /var/log/kernel-clean.log 2>&1
-yавтоматически подтверждает действия.>> /var/log/kernel-clean.log 2>&1перенаправляет вывод в лог для отладки.
Сохраните изменения (в nano: Ctrl+O, Enter, Ctrl+X).
Шаг 4: Проверка
После выполнения cron-задания или ручного запуска убедитесь, что остались только нужные ядра:
dpkg --list | grep linux-image
Вариант 2: Ручная очистка с apt purge
Для серверов или если вы хотите больше контроля, используйте точечное удаление:
sudo apt purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | head -n -1)
Как это работает?
dpkg -l 'linux-*'— список всех пакетов, связанных с ядрами.sed '/^ii/!d'— фильтрует только установленные пакеты.'/"$(uname -r | sed ...)"'/d'— исключает текущее ядро.s/.../\1/— извлекает имена пакетов.head -n -1— оставляет одно запасное ядро.sudo apt purge— удаляет отфильтрованные ядра.
После этого обновите GRUB:
sudo update-grub
Десктопы vs Серверы
- Десктопы: Автоматизация с
cronиapt— идеальная практика. Обновления частые, риски минимальны, а место экономится без лишних усилий. - Серверы: Здесь лучше ручной режим. Ошибка в новом ядре может оставить сервер без загрузки, если старые версии уже удалены. Используйте
apt purgeвручную после тестирования, оставляя минимум два запасных ядра:
sudo apt purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | head -n -2)
Полезные советы
- Проверяйте место на диске:
df -h
- Если
apt autoremoveне удаляет ядра, проверьте, не помечены ли они как «вручную установленные»:
sudo apt-mark auto linux-image-*
Затем повторите apt autoremove.
Итог
Для десктопов автоматизация через apt и cron — это DevOps-стиль: минимум рутины, максимум порядка. Для серверов выбирайте ручной контроль с apt purge, чтобы избежать сюрпризов. Держите /boot в чистоте и наслаждайтесь стабильной системой!