Введение / Зачем это нужно
После обновлений системы в Linux накапливается множество старых версий ядра. Каждое ядро занимает 100–300 МБ на системном разделе /boot. Со временем это может привести к заполнению раздела, что вызовет ошибки при установке обновлений или даже помешает загрузке системы. Удаление ненужных ядер:
- Освобождает место на диске.
- Снижает риски безопасности, так как в старых ядрах могут оставаться уязвимости.
- Упрощает меню загрузчика, оставляя только актуальные варианты.
В этом гайде вы научитесь безопасно удалять старые ядра в дистрибутивах на базе Debian/Ubuntu (а также получите общие рекомендации для других систем).
Требования / Подготовка
Перед началом убедитесь, что:
- У вас есть доступ к терминалу с правами sudo (или root).
- Вы знаете текущую версию ядра (см. шаг 2), чтобы не удалить его.
- Рекомендуется оставить хотя бы одно предыдущее ядро на случай, если новое ядро вызовет проблемы с оборудованием или драйверами.
Пошаговая инструкция
Шаг 1: Проверьте установленные ядра
Сначала просмотрите список всех установленных ядер. Для дистрибутивов на базе Debian/Ubuntu выполните:
dpkg --list | grep linux-image
Пример вывода:
ii linux-image-5.4.0-100-generic 5.4.0-100.112 amd64 Signed kernel image generic
ii linux-image-5.4.0-99-generic 5.4.0-99.111 amd64 Signed kernel image generic
Для Fedora/CentOS/RHEL используйте:
rpm -qa | grep kernel
Обратите внимание на версии ядер (например, 5.4.0-100-generic). Это пакеты, которые можно удалить.
Шаг 2: Определите текущее ядро
Чтобы не удалить активное ядро, узнайте его версию:
uname -r
Пример вывода:
5.4.0-100-generic
Запишите эту версию. Удалять пакет с такой версией нельзя, иначе система не запустится.
Также можно проверить, какие ядра доступны в меню GRUB, но это необязательно.
Шаг 3: Удалите старые ядра
Способ A: Использование apt autoremove (Ubuntu/Debian)
Команда apt autoremove удаляет пакеты, установленные как зависимости и больше не нужные. Иногда она удаляет и старые ядра:
sudo apt autoremove --purge
Флаг --purge также удаляет конфигурационные файлы. После выполнения проверьте, остались ли старые ядра (шаг 1). Если да — перейдите к способу B.
Способ B: Ручное удаление через dpkg/apt purge
Удалите конкретные пакеты старых ядер и соответствующие заголовки (headers). Например, для версии 5.4.0-99:
sudo apt-get purge linux-image-5.4.0-99-generic linux-headers-5.4.0-99-generic
Важно: не удаляйте пакеты текущего ядра (из шага 2). Также рекомендуется оставить хотя бы одно резервное ядро (например, предыдущую версию).
Если нужно удалить все ядра, кроме текущего, можно использовать такой скрипт (для Debian/Ubuntu):
#!/bin/bash
# Получаем текущую версию ядра (без архитектуры)
current_kernel=$(uname -r | grep -oE '^[0-9]+\.[0-9]+\.[0-9]+-[0-9]+')
# Получаем список установленных версий ядер (из пакетов linux-image)
installed_kernels=$(dpkg --list | grep linux-image | awk '{print $2}' | grep -oE '[0-9]+\.[0-9]+\.[0-9]+-[0-9]+')
# Удаляем все, кроме текущего
for kernel in $installed_kernels; do
if [ "$kernel" != "$current_kernel" ]; then
sudo apt-get purge -y "linux-image-$kernel-generic" "linux-headers-$kernel-generic"
fi
done
Для других дистрибутивов:
- Fedora:
sudo dnf remove kernel-версия - Arch Linux:
sudo pacman -R linux-версия
Шаг 4: Обновите конфигурацию загрузчика
После удаления ядер обновите конфигурацию GRUB, чтобы меню загрузки не содержало удалённых записей:
sudo update-grub
Для систем, использующих systemd-boot, обновление может не потребоваться, но проверьте конфигурацию в /boot/loader/entries/.
Шаг 5: Перезагрузите систему
Перезагрузите компьютер, чтобы убедиться, что система загружается с текущего ядра:
sudo reboot
После перезагрузки проверьте, что система работает корректно (сеть, графический интерфейс и т.д.).
Проверка результата
- Освобождённое место: проверьте, сколько места теперь занимает раздел
/boot:df -h /boot
Вы должны увидеть значительное увеличение свободного места. - Список ядер: убедитесь, что старые ядра удалены:
dpkg --list | grep linux-image # Debian/Ubuntu rpm -qa | grep kernel # Fedora/CentOS - Текущее ядро: проверьте, что активное ядро не изменилось:
uname -r - Меню загрузчика: при следующей перезагрузке убедитесь, что в меню GRUB нет удалённых версий ядра.
Возможные проблемы
Проблема: Случайное удаление текущего ядра
Симптом: система не загружается, появляется ошибка grub rescue> или no such device.
Решение:
- Перезагрузите компьютер и в меню GRUB выберите предыдущее ядро (если оно есть).
- Загрузитесь с ним и переустановите нужное ядро, например:
sudo apt install linux-image-5.4.0-100-generic - Обновите GRUB (
sudo update-grub) и перезагрузитесь.
Если предыдущего ядра нет, потребуется загрузка с LiveCD, монтирование корневой файловой системы и chroot для восстановления.
Проблема: GRUB не обновляется
Симптом: после удаления ядер в меню загрузки всё ещё отображаются удалённые записи.
Решение:
- Убедитесь, что вы выполнили
sudo update-grub. - Проверьте, что пакет
grub-commonустановлен. - В редких случаях может потребоваться переустановка GRUB:
sudo apt install --reinstall grub-pc sudo update-grub
Проблема: Ошибки зависимостей при удалении
Симптом: команда удаления завершается с ошибками о неудовлетворённых зависимостях.
Решение:
- Удаляйте ядра вместе с заголовками (headers) и модулями (modules), как показано выше.
- После ручного удаления запустите
sudo apt autoremove --purge, чтобы очистить оставшиеся зависимости. - Если проблема persists, используйте
sudo apt-get -f installдля исправления.
Проблема: Раздел /boot снова заполняется
Симптом: через некоторое время после очистки раздел /boot снова заполняется.
Решение:
- Это нормально: новые обновления ядра будут устанавливаться. Настройте регулярную проверку (например, раз в месяц).
- Для автоматизации можно использовать инструменты вроде
byobu(с опциейpurge-old-kernels), но будьте осторожны — настройте их на сохранение хотя бы одного резервного ядра.
Проблема: Удаление ядер в нестандартных конфигурациях
Если вы используете кастомные ядра или нестандартные пути, убедитесь, что удаляете правильные пакеты. Вместо dpkg можно удалять файлы вручную из /boot, но это крайне не рекомендуется — лучше использовать менеджер пакетов.