Каков безопасный способ очистки / загрузки раздела?

225

У меня есть 200 МБ для раздела /boot . Всякий раз, когда я пытаюсь обновить ядро, я получаю сообщение об ошибке, в котором в основном указано, что /boot заполнено.

Что я могу сделать для очистки /boot и удаления / резервного копирования старых ядер?

    
задан koba101 14.09.2013 в 21:41
источник

7 ответов

276

Метод командной строки:

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

uname -r

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

dpkg --list 'linux-image*' | grep ^ii

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

sudo apt-get remove linux-image-VERSION

Замените VERSION версией ядра, которое вы хотите удалить.

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

sudo apt-get autoremove

И, наконец, вы можете запустить это, чтобы обновить список ядра grub:

sudo update-grub
    
ответ дан PeppeDAlterio 14.09.2013 в 22:34
источник
219

ПРИМЕЧАНИЕ: это только в том случае, если вы не можете использовать apt для очистки из-за 100% полной загрузки /

Если apt-get не работает, потому что ваш / boot на 100%, вам нужно сначала очистить / загрузить. Вероятно, это привело к обновлению ядра в частичной установке, что означает, что apt довольно сильно застыл и будет продолжать указывать apt-get -f install , даже если эта команда продолжает сбой.

Получить список изображений ядра и определить, с чем вы можете обойтись. Эта команда покажет установленные ядра, за исключением текущего sudo dpkg --list 'linux-image*'|awk '{ if (=="ii") print }'|grep -v 'uname -r' . Обратите внимание на две новейшие версии в списке. Вам не нужно беспокоиться о запуске, поскольку он не указан здесь. Вы можете проверить это с помощью uname -r .

Создайте команду, чтобы удалить все файлы в / boot для ядер, которые не имеют значения для вас, с использованием расширения скобок, чтобы вы несли здравый смысл. Не забудьте исключить текущие и два новых изображения ядра. Пример: sudo rm -rf /boot/*-3.2.0-{23,45,49,51,52,53,54,55}-* . Вы также можете использовать диапазон с синтаксисом {80..84}.

sudo apt-get -f install , чтобы очистить то, что делает apump grumpy о частичной установке.

Если вы столкнулись с ошибкой, включающей строку типа «Внутренняя ошибка: не удалось найти изображение (/boot/vmlinuz-3.2.0-56-generic)», запустите команду sudo apt-get purge linux-image-3.2.0-56-generic (с соответствующей версией ).

Наконец, sudo apt-get autoremove , чтобы очистить старые пакеты образа ядра, которые были потеряны при загрузке вручную.

Предложение, запустите sudo apt-get update и sudo apt-get upgrade , чтобы позаботиться о любых обновлениях, которые могут быть скопированы при ожидании обнаружения полного / загрузочного раздела.

Рекомендация2, обзор Ссылка и рассмотрите возможность установки Unattended-Upgrade :: Remove-Unused-Dependencies в true в / etc / кв / apt.conf.d / 50unattended-обновления. Это будет эквивалент запуска autoremove после каждого обновления безопасности, чтобы убедиться, что вы очищаете неиспользуемые ядра, но также удалите другие вещи, которые, по его мнению, не используются, избавляют вас от этой проблемы в будущем.

    
ответ дан flickerfly 07.03.2014 в 17:54
35

Есть документация об этом на Ссылка

Вкратце: используйте

sudo apt-get autoremove --purge
# and/or:
sudo purge-old-kernels

Инструмент purge-old-kernels можно установить через sudo apt install byobu . Вот описание с его man-страницы:

  

Эта программа удалит старые пакеты ядра и заголовка из   системы, освобождая место на диске. Он никогда не удалит   запущенное ядро. По умолчанию он будет содержать как минимум последние 2 ядра,   но пользователь может переопределить это значение, используя параметр --keep .

Если вам требуется решение для копирования-вставки, ReSearchIT Eng предложил следующее:

sudo apt install -y byobu
sudo purge-old-kernels -y --keep 1
sudo apt-get -y autoremove --purge
    
ответ дан peq 09.08.2016 в 11:12
4

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

Сначала переместите ваши данные из загрузочного раздела в root (запустите как sudo -s ):

cp -a /boot /boot2
umount /boot
rmdir /boot
mv /boot2 /boot

Удалить (или прокомментировать) запись /boot в /etc/fstab :

vim /etc/fstab

Обновите grub и убедитесь, что все правильно:

update-grub

apt теперь может обновляться без проблем.

Это оставляет неиспользуемый раздел 200mb (который вы могли бы использовать для чего-то еще, если вы считаете, что это стоит проблемы).

    
ответ дан laktak 14.04.2017 в 09:43
1

Удаление старых ядер (для свободного места в / boot) см .: Ссылка

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

Затем запустите

sudo apt-get update
    
ответ дан Amos Folarin 14.08.2017 в 16:09
0

sudo apt-get autoremove

Это удаляет все, кроме последних двух ядер. Протестировано на Ubuntu 16.04 LTS, когда /boot было на 100%, а apt-get upgrade не удалось обновить последнее обновление ядра. Ядро autoremove является итеративным, поэтому, если у вас есть несколько ядер, они будут удалены по одному за раз. Поэтому будьте терпеливы.

    
ответ дан DeepSpace101 03.10.2017 в 18:39
-1

Зачем это делать вручную, когда вы можете сделать это с помощью инструмента? Вы знаете, что вам понадобится это снова через 30 секунд, потому что для них требуется 30 секунд, чтобы в следующий раз нажать новое обновление ядра = P

Я рекомендую использовать этот инструмент, bootnukem

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

Тогда

sudo bootnukem --dry-run

Удалите --dry-run , как только вы подтвердите, он выглядит безопасно

    
ответ дан Jonathan Leaders 04.05.2017 в 19:28