Как освободить больше места в /boot?

Мой /boot раздел почти заполнен, и я получаю предупреждение каждый раз, когда перезагружаю свою систему. Я уже удалил старые пакеты ядра (linux-headers...), фактически я сделал это, чтобы установить более новую версию ядра, которая шла с автоматическими обновлениями.

После установки новой версии раздел снова почти заполнен. Так что еще я могу удалить? Существуют ли другие файлы, связанные со старыми образами ядра?

Вот список файлов, которые находятся на моем /boot раздел:

:~$ ls /boot/
abi-2.6.31-21-generic         lost+found
abi-2.6.32-25-generic         memtest86+.bin
abi-2.6.38-10-generic         memtest86+_multiboot.bin
abi-2.6.38-11-generic         System.map-2.6.31-21-generic
abi-2.6.38-12-generic         System.map-2.6.32-25-generic
abi-2.6.38-8-generic          System.map-2.6.38-10-generic
abi-3.0.0-12-generic          System.map-2.6.38-11-generic
abi-3.0.0-13-generic          System.map-2.6.38-12-generic
abi-3.0.0-14-generic          System.map-2.6.38-8-generic
boot                          System.map-3.0.0-12-generic
config-2.6.31-21-generic      System.map-3.0.0-13-generic
config-2.6.32-25-generic      System.map-3.0.0-14-generic
config-2.6.38-10-generic      vmcoreinfo-2.6.31-21-generic
config-2.6.38-11-generic      vmcoreinfo-2.6.32-25-generic
config-2.6.38-12-generic      vmcoreinfo-2.6.38-10-generic
config-2.6.38-8-generic       vmcoreinfo-2.6.38-11-generic
config-3.0.0-12-generic       vmcoreinfo-2.6.38-12-generic
config-3.0.0-13-generic       vmcoreinfo-2.6.38-8-generic
config-3.0.0-14-generic       vmcoreinfo-3.0.0-12-generic
extlinux                      vmcoreinfo-3.0.0-13-generic
grub                          vmcoreinfo-3.0.0-14-generic
initrd.img-2.6.31-21-generic  vmlinuz-2.6.31-21-generic
initrd.img-2.6.32-25-generic  vmlinuz-2.6.32-25-generic
initrd.img-2.6.38-10-generic  vmlinuz-2.6.38-10-generic
initrd.img-2.6.38-11-generic  vmlinuz-2.6.38-11-generic
initrd.img-2.6.38-12-generic  vmlinuz-2.6.38-12-generic
initrd.img-2.6.38-8-generic   vmlinuz-2.6.38-8-generic
initrd.img-3.0.0-12-generic   vmlinuz-3.0.0-12-generic
initrd.img-3.0.0-13-generic   vmlinuz-3.0.0-13-generic
initrd.img-3.0.0-14-generic   vmlinuz-3.0.0-14-generic

В настоящее время я использую 3.0.0-14-generic ядро.

22 ответа

Решение

У вас много неиспользованных ядер. Удалите все ядра, кроме последних:

sudo apt-get purge linux-image-{3.0.0-12,2.6.3{1-21,2-25,8-{1[012],8}}}

Это сокращение для:

sudo apt-get purge linux-image-3.0.0-12 linux-image-2.6.31-21 linux-image-2.6.32-25 linux-image-2.6.38-10 linux-image-2.6.38-11 linux-image-2.6.38-12 linux-image-2.6.38-8

Удаление linux-image-x.x.x-x пакет также удалит linux-image-x.x.x-x-generic,

Заголовки установлены в /usr/src и используются при сборке модулей ядра вне дерева (например, проприетарного драйвера nvidia и virtualbox). Большинство пользователей должны удалять эти пакеты заголовков, если совпадает пакет ядра (linux-image-*) не установлен.

Чтобы вывести список всех установленных ядер, запустите:

dpkg -l linux-image-\* | grep ^ii

Одна команда, чтобы показать все ядра и заголовки, которые можно удалить, кроме текущего работающего ядра:

kernelver=$(uname -r | sed -r 's/-[a-z]+//')
dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve $kernelver

Он выбирает все пакеты, имена которых начинаются с linux-headers-<some number> или же linux-image-<some number>, печатает имена пакетов для установленных пакетов и затем исключает текущее загруженное / работающее ядро (не обязательно самое последнее ядро!). Это соответствует рекомендации по тестированию более нового ядра перед удалением старых, известных для работы ядер.

Итак, после обновления ядер и перезагрузки для тестирования вы можете удалить все остальные ядра с помощью:

sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')")

Ваш загрузочный раздел заполнен. Поскольку это обновление ядра, эти файлы будут скопированы в загрузочный раздел, поэтому вам нужно очистить его. Вот запись в блоге, которая покажет вам, как очистить старые образы ядра одной командой. Я дам краткий обзор метода. Используйте эту команду для распечатки текущей версии вашего ядра:

uname -r

Затем используйте эту команду, чтобы распечатать все установленные вами ядра, которые не являются вашим новым ядром:

dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]'

Убедитесь, что вашего текущего ядра нет в этом списке. Обратите внимание, как это большинство из заключительной команды (внизу). Чтобы удалить и удалить эти старые ядра, вам нужно передать следующие аргументы:

sudo apt-get -y purge

Теперь мы можем делать все, что мы хотим, комбинируя эти две последние команды в этот безобразный беспорядок:

dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]' | xargs sudo apt-get -y purge

И эта одна команда позаботится обо всем для вас. Я подтверждаю, что это работает отлично, но никогда никому не доверяю в Интернете.:) Для получения дополнительной информации в блоге дается очень хорошее объяснение того, что делает каждая часть команды, поэтому прочитайте ее, чтобы убедиться, что она делает то, что вы хотите, чтобы она делала.

sudo apt-get autoremove

Эта команда выполняет работу автоматически.

Диспетчер пакетов Synaptic можно использовать для простого выбора и удаления старых образов ядра.Снимок экрана менеджера пакетов Synaptic

Если у вас еще не установлен Synaptic:

sudo apt-get install synaptic

Запустите приложение и выберите показанные параметры.

Вы должны быть в состоянии выделить все пакеты "linux-" с версией "2.6.x", где x находится между 31 и 38 в соответствии с файлами в вашей папке /boot.

Щелкните правой кнопкой мыши по каждому из этих пакетов Linux и выберите параметр "Пометить для полного удаления". Наконец нажмите кнопку "Применить". Это удалит все файлы и все связанные файлы. Ваш /boot папка должна быть немного аккуратнее.

Спасибо за ваш подробный пост вашей проблемы, это заставило меня двигаться в правильном направлении. Хотя полезно сохранить предыдущие файлы ядра, вы можете удалить их все за один раз, проверьте этот пост:
Как удалить все неиспользуемые заголовки ядра Linux, изображения и модули

Сделано через командную строку. Если вы делаете это через удаленный доступ, используйте что-то вроде WINSCP, чтобы открыть терминальную сессию и просто вставить его, очень хорошо работает.

Здесь это скопировано из статьи, я предлагаю вам прочитать статью полностью:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

Список всех ядер:

dpkg --list 'linux-image*'

Показать текущее ядро:

uname -r

Перечислите все ядра, кроме текущего:

dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]'

Убедитесь, что вашего текущего ядра нет в этом списке.

Удалите все ядра, кроме текущего:

dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]' | xargs sudo apt-get -y purge

Очистить другие вещи:

sudo apt-get autoremove

Если он по-прежнему выдает ошибку места на загрузочном диске для установки / удаления файлов, то удалите непосредственно один из старых изображений из каталога /boot,

ls -lh /boot/*-3.13.0-119*;

rm /boot/*-3.13.0-119*; 

ПРИМЕЧАНИЕ. Пожалуйста, просмотрите текущий образ ядра еще раз, прежде чем удалять любое изображение.

Это новый ответ на старый вопрос, но простой способ убрать эту вещь (и не только) - установить Ubuntu Tweak. Чтобы установить это:

sudo add-apt-repository ppa:tualatrix/ppa
sudo apt-get update
sudo apt-get install ubuntu-tweak

затем вы можете запустить Ubuntu Tweak, перейдя на вкладку "janitor", и отсюда всего три клика:

Ubuntu твик дворник для старых ядер

Для безопасности лучше оставить последнее ядро ​​(вы никогда не знаете) или хорошо известное работающее ядро; но это легко настраивается.

Вы можете использовать один и тот же инструмент для очистки многих вещей - просто помните, что если вы очищаете кэш миниатюр или кэш ТБ, тогда системе придется их перестраивать, если они необходимы.

Я смог решить проблему с помощью dpkg удалить пакеты напрямую. Хотя пакеты все еще перечислены в dpkg -lфайлы удаляются из /boot, освобождая пространство.

phrogz@planar:/boot$ sudo dpkg --remove linux-image-2.6.32-30-server
(Reading database ... 145199 files and directories currently installed.)
Removing linux-image-2.6.32-30-server ...
Running postrm hook script /usr/sbin/update-grub.
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-35-server
Found linux image: /boot/vmlinuz-2.6.32-34-server
Found initrd image: /boot/initrd.img-2.6.32-34-server
Found linux image: /boot/vmlinuz-2.6.32-33-server
Found initrd image: /boot/initrd.img-2.6.32-33-server
Found linux image: /boot/vmlinuz-2.6.32-32-server
Found initrd image: /boot/initrd.img-2.6.32-32-server
Found linux image: /boot/vmlinuz-2.6.32-31-server
Found initrd image: /boot/initrd.img-2.6.32-31-server
Found memtest86+ image: /memtest86+.bin
done

# Repeat for kernels -31 and -32 and -33, up to (but not including)
# the version listed by `uname -a`

После этого, apt-get -f install исправил мои проблемы с зависимостями, и все было хорошо с миром.

Однако я не приму этот ответ, поскольку мне все еще нужно знать, стоит ли мне увеличивать /boot размер или делать что-то еще.

Вы можете прекратить использование отдельного раздела /boot, тогда у вас не будет такого ограниченного пространства там. Для этого размонтируйте раздел, затем смонтируйте его где-нибудь еще и скопируйте все файлы в каталог /boot вашего корневого раздела, затем удалите запись из /etc/fstab и переустановите grub. Например (вам нужно будет использовать правильный раздел):

sudo -s
umount /boot
mount /dev/sda2 /mnt
cp -a /mnt/* /boot/
umount /mnt
gedit /etc/fstab
grub-install /dev/sda

Затем вы можете использовать gparted для удаления старого / загрузочного раздела и, возможно, расширить корневой раздел, чтобы использовать это пространство. Для расширения корневого раздела вам нужно будет загрузиться с livecd, а свободное место должно быть сразу справа. Если раздел /boot в данный момент находится слева от корневого раздела, вам необходимо сначала переместить корневой раздел влево, а затем расширить его, но это может занять очень и очень много времени, поэтому может не стоить беда.

Принимая лучшее из ответов выше, мой проверенный подход заключается в следующем:

  • uname -a найти работающее ядро.
  • dpkg -l linux-{headers,image}-\* | grep ^ii список всех установленных на данный момент пакетов, связанных с ядром. Это будет включать работающее ядро.
  • sudo apt-get purge linux-{image,headers}-3.16.0-{xx,yy,zz} удалить старые ядра. замещать xx,yy,zz со списком сборок ядра, которые вы хотите удалить - это все сборки, перечисленные предыдущей командой, которые старше, чем текущее работающее ядро. Убедитесь, что вы не удаляете работающее в данный момент ядро ​​- ваша система перестанет загружаться. Вам также может понадобиться изменить версию ядра с 3.16.0 к тому, что установлено в вашей системе.
  • По желанию, сделать дополнительный sudo apt-get autoremove - это удалит все оставшиеся зависимости старых ядер, которые больше не нужны текущему ядру, освобождая немного больше места.

У вас могут быть заголовочные файлы без установленных версий ядра, или наоборот - просто включите все эти версии в команду. APT будет жаловаться, что некоторые пакеты не могут быть удалены, потому что они не установлены, но это не принесет вреда.

Если что-то не получается...

  • Если команда apt не выполнена из-за отсутствия свободного места на ошибке устройства, используйте вместо нее соответствующую команду dpkg: sudo dpkg --purge linux-{image,headers}-3.16.0-{xx,yy,zz},
  • Если команда dpkg по-прежнему не работает, потому что linux-image пакеты требуются linux-headers пакеты той же версии (которую вы также хотите удалить), dpkg, возможно, не удалось решить это. Пересмотреть вывод dpkg -l и укажите любые суффиксы имени пакета в командной строке. Например, на одной из моих систем команда, которая в итоге сработала, была sudo dpkg --purge linux-{image,headers}-3.16.0-{xx,yy,zz}-generic-pae,
  • Если вы получили какую-либо другую ошибку, обратитесь за помощью - у вас может быть другая проблема, чем вы думали.

Для меня обоих apt-get purge а также dpkg --remove оба не удалось. Поэтому мне пришлось удалить пару старых образов ядра из /boot с rm -f,

Я показываю, что еще в 2017 году этот вопрос имеет новые комментарии и ответы, но пропускает один ответ, который я считаю очень полезным здесь:

Ubuntu как настольная ОС простого повседневного использования не имеет причин для установки с отдельным \ загрузочным разделом, и что-то вроде этого НЕ будет предлагать что-то "обычному пользователю"... Так что решение - это новая установка без \ загрузочного раздела, и это как у тебя никогда не будет такой проблемы

PS: Мой ответ может быть удален или добавлен в принятый ответ... (думаю, это поможет некоторым людям таким образом)

Я уже удалил старые пакеты ядра (linux-заголовки...)

linux-headers-* не ядра. Пакеты ядра называются linux-image-*, Названные linux-headers-* являются пакетами разработки для компиляции модулей ядра: они не находятся в каталоге /boot и не требуются для повседневного использования вашей системы.

Файлы, которые вы перечислили в /boot , содержат несколько старых образов ядра (vmlinuz*) и скомпилированные изображения initrd (initrd.img*) для этих ядер, что свидетельствует о том, что у вас все еще установлено много старых пакетов ядра.

Вы должны быть в состоянии перечислить ваши установленные ядра с

aptitude search ~ilinux-image

(Обратите внимание, что это, вероятно, вернет пакеты, которые также не являются ядрами).

Как правило, нет необходимости устанавливать более двух ядер - одно используется в настоящее время, а предыдущее - как запасной вариант. Таким образом, вы можете начать удалять старые по очереди, например так:

sudo apt-get autoremove linux-image-3.2.0-23-generic

Убедитесь, что вы заменили "3.2.0-23-generic" на версию ядра, которую хотите удалить! Кроме того, не удаляйте такие пакеты, как linux-image-generic, Вы должны быть очень осторожны, чтобы не удалить работающее в данный момент ядро, иначе вы не сможете загрузиться (Ubuntu может или не может предупредить вас об этом).

Вы можете найти ваше текущее работающее ядро ​​с:

uname -r

Я написал этот сценарий bash для выборочной очистки старых ядер сразу:

Весь код bash и инструкции включены в ссылку.

linux-purge utility is made for the purpose:

Install the utility from Launchpad; you can find instructions from there.

Run:

sudo linux-purge --clear-boot --keep=1 --optimize

If that does not work, run

sudo linux-purge --fix

and re-try.

If you find a bug in the software, you can report it in Launchpad. See man linux-purge for more details.

У меня была эта проблема и больше, поскольку я удалил некоторые initrd-img-xxx файлы вручную из / boot, и у меня возникла проблема с тем, что эти старые версии продолжают генерироваться и заполняются /boot папка. Чтобы это исправить, я следовал следующему:

  • Я удалил сгенерированную старую версию ядра вручную, чтобы освободить место.
  • Вы будете редактировать текстовый файл конфигурации как суперпользователь, поэтому вставьте в терминал следующее:

    sudo gedit /etc/initramfs-tools/update-initramfs.conf
    
  • Найдите строку update_initramfs=yes и изменить его на update_initramfs=no, Сохраните и выйдите из файла, затем запустите:

    sudo dpkg --configure -a
    

Это решило мою проблему. Это было основано на этом блоге

Надеюсь, что все будет хорошо при перезагрузке, а позже вы можете попробовать изменить no вернуться к yes в update-initramfs.conf,

/boot раздел иногда может быть немного странным

не начинайте напрямую удалять файлы Kernal.

Шаги, чтобы следовать

  1. Проверьте, используется ли установленный в данный момент kernal системой linux

    uname -r

    это должно дать вам имя установленного в данный момент образа ядра в системе

  2. Теперь начните удалять дополнительные файлы, кроме одного, установленного в вашей системе.

    apt-get remove linux-image-XXXXX

  3. Также удалите заголовочный файл, а также

    apt-get remove linux-headers-XXXXX

  4. Также может быть условие, когда apt перестал работать, в этом случае переключитесь на /boot

    cd /boot

  5. Начните удалять файлы вручную, но очень осторожно и помните, не удаляя installed one's Kernel файлы из вашей системы.

    rm linux-image-XXXXX

    rm linux-image-extra-XXXXXX

  6. После удаления правильных файлов очистки частичные установки, если таковые имеются

    apt-get -f install

  7. Удалите лишние файлы, сидящие там, так как загрузочные файлы очищены вручную

    apt-get autoremove

  8. Обновление grub

    update-grub

  9. Последнее обновление ваших системных пакетов

    apt-get update

Супер полезная утилита, которая очистит ваш загрузочный раздел

git clone https://github.com/erichs/bootnukem.git
cd bootnukem
sudo ./install.sh

Используйте на свой страх и риск, но у меня это сработало

sudo bootnukem

Сохранить этот скрипт как /usr/local/bin/remove_kernels.sh (не забудьте дать разрешения на выполнение sudo chmod 755 /usr/local/bin/remove_kernels.sh):

#!/bin/sh
if test $(id -u) != 0; then
 echo Error: You must be root to run this script!
 exit 1
fi
apt purge $( dpkg --list | grep -P -o "linux-image-\d\S+" | grep -v $(uname -r | grep -P -o ".+\d") )
update-grub

Затем, чтобы удалить все старые ядра, просто наберите: sudo remove_kernels.sh

[Как новичок AskUbuntu, я не могу комментировать, пока репутация не = 50, поэтому не голосуйте из-за этого.]

Мой сервер тоже этим занимался. Буквально ни один из ожидаемых ответов здесь не сработал, поскольку для их завершения требуется некоторая рабочая комната на /boot. Если загрузочный раздел заполнен, он внезапно завершится без удаления каких-либо образов.

Единственное, что сработало для меня, - это просмотреть текущее изображение, а затем вручную sudo rm filename для самых старых файлов изображений (у каждого было -3.16.0-30 в их именах). Как только это будет сделано, тогда sudo apt-get autoremove У меня была комната для маневра, в которой он нуждался для своей работы. Он выделил некоторые ошибки, связанные с этой версией, например: "depmod: FATAL: не удалось загрузить /boot/System.map-3.16.0-30-generic: нет такого файла или каталога", но этого и следовало ожидать.

Когда закончено, df вернул 42% использования для /boot, чтобы указать, что он снова здоров.

В aptitude или synaptic есть раздел "старый или установленный вручную". Там должны быть старые пакеты Linux.

Есть скрипт bash, который я написал ниже, который делает этот процесс более удобным для пользователя.

YMMV - это было сделано для Mint 14. Все еще изучаю BASH, так что это, вероятно, немного неуклюже. Используйте на свой страх и риск, но у меня это работает!

#!/bin/bash

endCol='\e[0m'
bold_red='\e[1;31m'
bold_green='\e[1;32m'
bold_yellow='\e[1;33m'

title_color='\e[0;30;47m'

function show_kernel_info {
clear
current_kernel=$(uname -r)
echo "Current ACTIVE kernel is:"
echo -e "  "$bold_yellow$current_kernel$endCol
echo "This kernel will be TOTALLY EXCLUDED from all actions in this script."
echo "Also, one fallback non-active kernel will be always left untouched."
echo ""
echo "These are the non-active kernels stored in /boot:"
count_of_old_kernels_in_boot=$(ls -o /boot/initrd* | grep -c -v "$current_kernel")
if [ $count_of_old_kernels_in_boot = 0 ]; then
  echo " * No non-active kernels found! *"
else
  ls -o /boot/initrd* | grep -v "$current_kernel"
fi
echo ""
list_of_old_kernels=$(dpkg --list | grep linux-image | awk -F' ' '{ print $2 }' | grep -v "$current_kernel" | grep -v "linux-image-generic")
current_old_kernel=$(dpkg --list | grep linux-image | awk -F' ' '{ print $2 }' | grep -v "$current_kernel" | grep -v "linux-image-generic" | head -n 1)
count_of_old_kernels_installed=$(dpkg --list | grep linux-image | awk -F' ' '{ print $2 }' | grep -v "$current_kernel" | grep -c -v "linux-image-generic")
echo "Listing of all unused kernels still installed in the system (these may not exist in /boot):"
if [ $count_of_old_kernels_installed = 0 ]; then
  echo " * No unused kernel installs found! *"
else
  dpkg --list | grep linux-image | awk -F' ' '{ print $2 }' | grep -v "$current_kernel" | grep -v "linux-image-generic"
fi
echo ""
}

function exit_script {
free_space_after=$(df -BM /boot | tail -n 1 | awk -F' ' '{ print $4 }' | tr -d M)
let freed_space=$free_space_after-$free_space_before
echo ""
echo "Results (in MB)"
echo "---------------"
echo "Free space in /boot before script was run: "$free_space_before
echo "Free space now: "$free_space_after
echo ""
echo "Amount of space freed up = "$freed_space
echo ""
echo "Press any key to exit."
read -s -n 1
echo ""
exit
}

# Main code
echo ""
echo -e $title_color" --------------------------- "$endCol
echo -e $title_color" -   Kernel Cleanup v1.0   - "$endCol
echo -e $title_color" --------------------------- "$endCol
echo ""
echo "Maximise this window for readability."
echo "Press any key to continue."
read -s -n 1
echo ""
echo "This script will remove old unused kernels, but it will prompt you before removing each one."
echo "It will never remove the current running kernel, and will also leave one fallback kernel."
echo "It can also remove source files from /usr/src for each kernel removed."
echo "This is normally safe to do and will free up lots more space."
echo ""
echo "Do you want that done as well? (y/n, enter=yes)"
valid_input=0
while [ "$valid_input" = "0" ]; do
  read -s -n 1 YesNo_input
  if [ "$YesNo_input" = "" ]; then
    YesNo_input="y"
  fi
  case $YesNo_input
  in
    y)
    RemoveSource="y"
    valid_input=1
    ;;

    Y)
    RemoveSource="y"
    valid_input=1
    ;;

    n)
    RemoveSource="n"
    valid_input=1
    ;;

    N)
    RemoveSource="N"
    valid_input=1
    ;;
  esac
done

free_space_before=$(df -h /boot | tail -n 1 | awk -F' ' '{ print $4 }' | tr -d M)
show_kernel_info
while [ $count_of_old_kernels_in_boot -gt 1 ]; do
  # failsafe check if somehow the current kernel is about to be removed!
  if [ "$current_old_kernel" = "$current_kernel" ]; then
    echo -e $bold_red"ERROR!"$endCol" Somehow the current kernel has crept into the removal process!"
    echo "I refuse to do that! Aborting script."
    exit_script
  fi
  # failsafe check if somehow a linux-image-generic entry is about to be removed
  if [ "$current_old_kernel" = "linux-image-generic" ]; then
    echo -e $bold_red"ERROR!"$endCol" Somehow one of the linux-image-generic entries has crept into the removal process!"
    echo "I refuse to do that! Aborting script."
    exit_script
  fi
  echo "Command about to be executed is:"
  echo "  $ sudo apt-get purge \"$current_old_kernel\""
  check_in_boot=$(echo $current_old_kernel | sed 's/linux-image/initrd.img/g')
  if [ -e /boot/$check_in_boot ]; then
    echo -e $bold_yellow"Note:"$endCol" This kernel exists in /boot but it NON-active, so it's OK to remove."
  else
    echo -e $bold_green"Totally safe to remove:"$endCol" This kernel does NOT exist in /boot."
  fi
  echo ""
  echo "Are you sure you want to remove this kernel?"
  echo "(*upper case* Y=yes / any other key will exit the script)"
  read -s -n 1 yes_no
  echo ""
  # Only entering a single upper case Y will work!
  if [ "$yes_no" != "Y" ]; then
    echo "Aborting script."
    exit_script
  fi
  echo "Removing kernel "$current_old_kernel"..."
  sleep 1
  sudo apt-get -y purge $current_old_kernel
  if [ "$RemoveSource" = "y" ]; then
    current_old_source=$(echo $current_old_kernel | sed 's/linux-image/linux-headers/g')
    current_old_source=$(echo $current_old_source | sed 's/-generic//g')
    current_old_source=$(echo $current_old_source | sed 's/-pae//g')
    sudo apt-get -y purge $current_old_source
  fi
  show_kernel_info
done

if [ $count_of_old_kernels_in_boot = 0 ]; then
  echo -e $bold_red"There are no NON-active kernels to remove!"$endCol
else
  echo -e $bold_red"There is only one NON-active kernel left in /boot!"$endCol
  echo "This script will not remove the last non-active kernel so that you have at least one backup kernel."
fi
echo "Aborting script."
exit_script

Если вы не можете удалить больше неиспользуемых файлов и если у вас есть другой раздел с / или свободным пространством на том же устройстве, вы можете изменить размер /boot раздела с помощью parted/ gparted. (Он также включен в установочный носитель.)

Внимание: изменение размера раздела - опасная операция, сохраните ваши важные данные на другом носителе, прежде чем делать это!

Другие вопросы по тегам