Как удалить старые ядра Ubuntu
В Ubuntu ядро можно обновить несколькими способами. Для версии Ubuntu Desktop, менеджер обновлений программного обеспечения позволяет обновить ядро до самой новой версии в любое удобное время. В серверной версии Ubuntu ядро обновляется автоматически, утилитами из пакета unattended-upgrades, как часть важных обновлений безопасности. Также ядро можно обновить вручную, с помощью утилит управления пакетами apt, aptitude или даже собрав из исходников.
Со временем из-за таких обновлений, в системе накапливается много неиспользуемых образов ядер, которые только занимают дисковое пространство. Каждый образ ядра вместе со связанными заголовочными файлами и файлами модулей занимает около 200-400 мегабайт. Таким образом, удаление старых ядер в ubuntu позволит освободить много дискового пространства.
Посмотреть сколько в вашей системе набралось образов ядер можно с помощью файлового менеджера, открыв каталог /boot или просто выполнив команду в терминале:
Кроме того, в меню загрузчика Grub присутствует пункт для каждого ядра, на случай если вы захотите выбрать его для загрузки:
Для очистки диска можно удалить старые ядра в Ubuntu, если вы их не используете и они вам больше не нужны.
Удалить старые ядра в Ubuntu
1. Терминал
Перед тем как удалить старые ядра Ubuntu вспомните, что рекомендуется иметь в системе две версии ядра — последнюю, используемую на данный момент, и предыдущую, на случай какой-либо неполадки.
Не рекомендуется работать с одним ядром в системе, потому что если вы его повредите, у вас будет намного больше работы для восстановления системы. Важно заметить, что такой вариант не будет работать, если вы устанавливали новые ядра из исходников.
В Ubuntu образы ядра принадлежат к таким пакетам:
- linux-image- — образ ядра
- linux-image-extra- — внешние модули ядра
- linux-headers- — файлы заголовков
Сначала посмотрим какое ядро используется на данный момент в вашей системе:
Смотрим какие версии ядер были установлены:
apt list —installed | egrep «linux-image|linux-headers»
Можно посмотреть список ядер с помощью dpkg:
dpkg —list | egrep «linux-image|linux-headers»
Здесь rc — означает, что пакет был установлен, но уже удален, а ii — что пакет сейчас установлен.
На основе полученного списка вы можете удалить любую версию, например, 4.15.0-91:
sudo apt purge linux-image-4.15.0-66-generic linux-headers-4.15.0-91-generic
Эти команды удалят образ ядра, а также связанные с ним заголовочные файлы и файлы модулей.
Обратите внимание, что при удалении старого ядра, будет автоматически инициирован процесс обновления ядра до последней версии, если вы этого еще не сделали, а также после удаления будет обновлен конфигурационный файл Grub, чтобы убрать лишнюю запись из меню.
Если такое ядро не одно, вы можете удалить старые ядра ubuntu одной командой, используя расширенный синтаксис Bash. Оператор <> будет работать только в Bash и совместимых с ним оболочках:
sudo apt purge linux-image-4.15.0- linux-headers-4.15.0-
После выполнения этих команд будет удаленно три образа ядра 4.15.0-20.21, 4.15.0-50.54, 4.15.0-51.55.
Если конфигурация Grub не обновится по каким-либо причинам, это можно сделать вручную:
Теперь можете перезагрузить компьютер, чтобы убедиться, что меню выбора операционной системы было очищено от лишних ядер.
Скрипт purge-old-kernels, который можно было использовать для удаления старых ядер больше не актуален, потому что он просто ссылается на команду apt. Теперь можно удалить старые ядра с помощью неё:
sudo apt —purge autoremove
Удалить все старые ядра, кроме используемого и предпоследнего, также можно командой:
sudo apt-get purge $(dpkg -l ‘linux-*’ | sed ‘/^ii/!d;/'»$(uname -r | sed «s/\(.*\)-\([^0-9]\+\)/\1/»)»‘/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/7/!d’ | head -n -1)
Затем нужно выполнить команду очистки системы и вручную обновить конфигурацию grub.
sudo apt autoremove
sudo update-grub
2. Synaptic
Synaptic — это графический пакетный менеджер для Ubuntu. Он позволяет устанавливать удалять и обновлять все пакеты в системе. Для его установки выполните:
sudo apt install synaptec
Запустите программу, в левой части выберите пункт Разделы затем Ядро и модули:
Найдите в списке пакеты linux-headers и linux-image, которые не используются и выберите в контекстном меню для них пункт Отметить для полного удаления:
Отметьте так все лишние пакеты и нажмите кнопку Применить на верхней панели чтобы применить изменения к системе. Конфигурация Grub должна обновится автоматически.
3. Ubuntu Cleaner
Это небольшая утилита, которая позволяет вам держать систему в чистоте удаляя старые ядра, ненужные пакеты, кэши браузеров и тому подобные вещи. Для её установки надо добавить PPA:
sudo add-apt-repository ppa:gerardpuig/ppa
Затем установите программу:
sudo apt install ubuntu-cleaner
После завершения установки вы найдёте её в главном меню:
Для очистки ядер выберите Old kernels на левой панели, затем отметьте ядра, которые надо удалить или отметьте пункт Old kernels в правой части окна:
После этого нажмите Clean и подтвердите операцию:
Всё, ваши старые ядра будут удалены.
Выводы
Незачем держать в системе очень много ненужных файлов. Теперь вы знаете, как правильно удалить старые версии ядер Ubuntu и сможете поддерживать свою систему в чистоте и порядке, это очень важно, особенно если вы часто обновляете ядра и тестируете новые версии. Если у вас остались вопросы, спрашивайте в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
How to Delete Old Unused Kernels in Debian and Ubuntu
In our last article, we’ve explained how to delete old unused kernels in CentOS/RHEL/Fedora. In this article, we will explain how to delete old unused kernels in Debian and Ubuntu systems, but before moving further, you may want to install the latest version in order to take advantage of: security fixes, new kernel functions, updated drivers and so much more.
To upgrade your kernel to latest version in Ubuntu and Debian, follow this guide:
Important: It is advisable to keep at least one or two old kernels to fall back to in case there is a problem with an update.
To find out the current version of Linux kernel running on your system, use the following command.
$ uname -sr Linux 4.12.0-041200-generic
To list all installed kernels on your system, issue this command.
$ dpkg -l | grep linux-image | awk '' linux-image-4.12.0-041200-generic linux-image-4.8.0-22-generic linux-image-extra-4.8.0-22-generic linux-image-generic
Remove Old Unused Kernels on Debian and Ubuntu
Run the commands below to remove a particular linux-image along with its configuration files, then update grub2 configuration, and lastly reboot the system.
$ sudo apt remove --purge linux-image-4.4.0-21-generic $ sudo update-grub2 $ sudo reboot
[sudo] password for tecmint: Reading package lists. Done Building dependency tree Reading state information. Done The following additional packages will be installed: linux-generic linux-headers-4.8.0-59 linux-headers-4.8.0-59-generic linux-headers-generic linux-image-4.8.0-59-generic linux-image-extra-4.8.0-59-generic linux-image-generic Suggested packages: fdutils linux-doc-4.8.0 | linux-source-4.8.0 linux-tools Recommended packages: thermald The following packages will be REMOVED: linux-image-4.8.0-22-generic* linux-image-extra-4.8.0-22-generic* The following NEW packages will be installed: linux-headers-4.8.0-59 linux-headers-4.8.0-59-generic linux-image-4.8.0-59-generic linux-image-extra-4.8.0-59-generic The following packages will be upgraded: linux-generic linux-headers-generic linux-image-generic 3 upgraded, 4 newly installed, 2 to remove and 182 not upgraded. Need to get 72.0 MB of archives. After this operation, 81.7 MB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://us.archive.ubuntu.com/ubuntu yakkety-updates/main amd64 linux-headers-4.8.0-59 all 4.8.0-59.64 [10.2 MB] Get:2 http://us.archive.ubuntu.com/ubuntu yakkety-updates/main amd64 linux-headers-4.8.0-59-generic amd64 4.8.0-59.64 [811 kB] Get:3 http://us.archive.ubuntu.com/ubuntu yakkety-updates/main amd64 linux-generic amd64 4.8.0.59.72 [1,782 B] Get:4 http://us.archive.ubuntu.com/ubuntu yakkety-updates/main amd64 linux-headers-generic amd64 4.8.0.59.72 [2,320 B] Get:5 http://us.archive.ubuntu.com/ubuntu yakkety-updates/main amd64 linux-image-4.8.0-59-generic amd64 4.8.0-59.64 [23.6 MB] Get:6 http://us.archive.ubuntu.com/ubuntu yakkety-updates/main amd64 linux-image-extra-4.8.0-59-generic amd64 4.8.0-59.64 [37.4 MB] Get:7 http://us.archive.ubuntu.com/ubuntu yakkety-updates/main amd64 linux-image-generic amd64 4.8.0.59.72 [2,348 B] Fetched 72.0 MB in 7min 12s (167 kB/s) Selecting previously unselected package linux-headers-4.8.0-59. (Reading database . 104895 files and directories currently installed.) Preparing to unpack . /0-linux-headers-4.8.0-59_4.8.0-59.64_all.deb . Unpacking linux-headers-4.8.0-59 (4.8.0-59.64) . Selecting previously unselected package linux-headers-4.8.0-59-generic. Preparing to unpack . /1-linux-headers-4.8.0-59-generic_4.8.0-59.64_amd64.deb . Unpacking linux-headers-4.8.0-59-generic (4.8.0-59.64) . Preparing to unpack . /2-linux-generic_4.8.0.59.72_amd64.deb . Unpacking linux-generic (4.8.0.59.72) over (4.8.0.22.31) . Preparing to unpack . /3-linux-headers-generic_4.8.0.59.72_amd64.deb . Unpacking linux-headers-generic (4.8.0.59.72) over (4.8.0.22.31) . Selecting previously unselected package linux-image-4.8.0-59-generic. Preparing to unpack . /4-linux-image-4.8.0-59-generic_4.8.0-59.64_amd64.deb . Done. Removing linux-image-4.8.0-22-generic (4.8.0-22.24) . Examining /etc/kernel/postrm.d . run-parts: executing /etc/kernel/postrm.d/initramfs-tools 4.8.0-22-generic /boot/vmlinuz-4.8.0-22-generic update-initramfs: Deleting /boot/initrd.img-4.8.0-22-generic run-parts: executing /etc/kernel/postrm.d/zz-update-grub 4.8.0-22-generic /boot/vmlinuz-4.8.0-22-generic Generating grub configuration file . Found linux image: /boot/vmlinuz-4.12.0-041200-generic Found initrd image: /boot/initrd.img-4.12.0-041200-generic Found linux image: /boot/vmlinuz-4.8.0-59-generic done .
Although this method works just fine, it is more reliable and efficient to use a handy script called “byobu” that combines all the commands above into a single program with useful options such as specifying number of kernels to keep on the system.
Install byobu script package which provides a program called purge-old-kernels used for removing old kernels and header packages from the system.
Then remove old kernels like so (the command below allows 2 kernels to be kept on the system).
$ sudo purge-old-kernels --keep 2
You may also like to read these following related articles on Linux kernel.
In this article, we have described how to remove old unused kernel images on Ubuntu and Debian systems. You can share any thoughts via the feedback from below.