Дата поста: 22-01-2018
Для LVM, зашифрованных или ограниченных по размеру хранилища систем вам необходимо периодически удалять старые, неиспользуемые ядра операционной системы, чтобы не получать ошибки о нехватке места (это так же не даёт нормально обновлять и остальные пакеты в некоторых случаях). В этом посте я покажу несколько способов как можно легко почистить /boot
сектор.
Удаление старых ядер можно сделать самостоятельно не боясь убить систему, или можно заставить систему саму удалять ненужные ядра. Начнём с этого, автоматического способа, который работает как на десктоп версии так и с серверной версией Ubuntu.
Для начала запустим консоль комбинацией горячих клавиш Ctrl+Alt+T
и следуйте следующим шагам:
Удаление автоматически установленных ядер:
- Для удаления ядер, которые были автоматически установлены при обновлении системы в терминале наберите команду:
sudo apt autoremove --purge
Далее от вас потребуется пароль от пользователя с правами Sudo из под которого запускается команда. После этого старые ядра должны быть удалены, которые не используются.
- Для включения автоматического удаления неиспользуемых старых ядер нужно сделать следующее:
Включение автоматического удаления ядер может вызвать проблемы если вдруг с пакетным менеджером случится беда и он вдруг затупит, баг известный, можете посмотреть информацию о нём на баг трекере Ubuntu.
Запустите команду ниже для включения режима unattended upgrades. Для Desktop версии Ubuntu 16.04 эта опция включена по умолчанию.
sudo dpkg-reconfigure unattended-upgrades
Отредактируйте конфигурационный файл через команду (для начала установите программу gksu через sudo apt install gksu
):
gksudo gedit /etc/apt/apt.conf.d/50unattended-upgrades
После открытия файла раскомментируйте строку из примера ниже и установите значение в true
:
//Unattended-Upgrade::Remove-Unused-Dependencies "false";
Должно выглядеть как-то так:
Удаление ядер установленных вручную:
Если вы устанавливаете последние ядра из Kernel PPA, или собираете ядра сами с вашими патчами, вам может помочь скрипт purge-old-kernels
, который позволяет с лёгкостью находить и удалять неиспользуемые старые ядра.
- Данный скрипт доступен в рамках пакета
byobu
- установите его командой из примера ниже:
sudo apt install byobu
- Теперь вы можете периодически запускать команду из примера ниже, чтобы чистить систему от старых kernels:
sudo purge-old-kernels
Удаление старых Kernels через DPKG
Если ваш /boot сектор уже забит и не позволяет установить новые пакеты, например для использования скрипта из примера выше, и apt
не может решить сломанные зависимости, в этом примере вы сможете освободить место через DPKG:
- Выполните команду для того, чтобы узнать какое ядро сейчас используется И НЕ УДАЛЯЙТЕ ЕГО!:
uname -r
- Получите список всех ядер за исключением текущего загруженного:
dpkg -l | tail -n +6 | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)
Пример вывода команды:
rc linux-image-4.4.0-15-generic 4.4.0-15.31 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii linux-image-4.4.0-18-generic 4.4.0-18.34 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
rc linux-image-4.6.0-040600rc3-generic 4.6.0-040600rc3.201604120934 amd64 Linux kernel image for version 4.6.0 on 64 bit x86 SMP
В данном выводе может быть 3 статуса образов ядер:
- rc: - означает, что ядро уже удалено.
- ii: - означает, что ядро установлено и может быть удалено.
- iU: - ЭТО НЕЛЬЗЯ УДАЛЯТЬ. Это означает, что ядро не установлено, но требуется его установка в apt.
- Удаляем старые ядра со статусом
ii
, в примере ниже этоlinux-image-4.4.0-18-generic
:
sudo dpkg --purge linux-image-4.4.0-18-generic
Если команда завершается с ошибкой, удалите зависимые пакеты, которые будут выведены, командой sudo dpkg --purge PACKAGE
.
Так же попробуйте удалить пакеты заголовочных файлов для старых ядер (Если команда выводит ошибки можете не обращать на это внимание):
sudo dpkg --purge linux-image-4.4.0-18-header linux-image-4.4.0-18
Теперь можно исправвить зависимости командой ниже:
sudo apt -f install
Ну, собственно и всё, профит.
Примеры найдены на просторах буржуйского интернета.