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


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

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


258
2017-09-14 19:41


происхождения


См. Ubuntu Community Wiki - jarno


ответы:


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

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

uname -r

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

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

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

sudo apt-get remove linux-image-VERSION

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

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

sudo apt-get autoremove

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

sudo update-grub

313
2017-09-14 20:34



командная строка работала как шарм, спасибо! - koba101
sudo dpkg --list 'linux-image*' | grep ^ii упрощает просмотр только установленных ядер. Также я считаю, что update-grub является безобидным, но не обязательно необходимым, который запускается автоматически при удалении ядра. - Nelson
использование sudo dpkg --list 'linux-image*' | grep ^ii | awk '{print $2}' | sort | egrep "[0-9]-generic" | head -n -3 | tr '\n' ' '; echo "" для получения списка имен пакетов, которые будут использоваться с sudo apt-get remove, head -n -3 используется для хранения 3 последних ядер, оставшихся в системе. - Sithsu
sudo apt-get autoremove (обычно оставляя вас с последними 3 ядрами) - mbx
Это хороший ответ, но я сомневаюсь, что он может работать в большинстве (если не во всех) случаях: проблема в том, что /boot является полным, поэтому apt-get сбой кода ошибки или другого. Ответ ниже - «хакер» (я должен признаться, что мне пришлось ставить себе вопрос о том, что rm -rf в /boot), но единственное, что может работать в этой ситуации. - Marco


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

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

Получите список изображений ядра и определите, с чем вы можете обойтись. Эта команда покажет установленные ядра, кроме текущего sudo dpkg --list 'linux-image*'|awk '{ if ($1=="ii") print $2}'|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 чтобы очистить то, что делает склонным к частичной установке.

Если вы столкнулись с ошибкой, включающей строку типа «Внутренняя ошибка: не удалось найти изображение (/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, обзор https://help.ubuntu.com/community/AutomaticSecurityUpdates и рассмотрите возможность установки Unattended-Upgrade :: Remove-Unused-Dependencies в true в /etc/apt/apt.conf.d/50unattended-upgrades. Это будет эквивалент запуска autoremove после каждого обновления безопасности, чтобы убедиться, что вы очищаете неиспользуемые ядра, но также удалите другие вещи, которые, по его мнению, не используются, избавят вас от этой проблемы в будущем.


254
2018-03-07 16:54



Таким образом, у меня есть последняя для следующей перезагрузки, а затем первая, прежде чем на всякий случай что-то сломается в этом. Обычно у меня много места, поэтому мне не больно иметь несколько, и это удовлетворяет моей паранойе, поскольку у вас не было достаточно вариантов резервного копирования в любом сценарии. - flickerfly
У меня никогда не было проблем, вызванных автоматическими обновлениями. Я могу представить себе сценарии, где это может быть проблемой, главным образом, в зависимости от того, теряются ли потери на не-deb-упакованных установках. Скажем, вы устанавливаете php, решаете удалить его и установить более новую версию из источника. Эта версия имеет зависимости, предоставленные предыдущей установкой, но apt не знает, что она по-прежнему требуется. В следующий раз, когда вы запустите auto-remove, эти зависимости исчезнут. Если автоматизировать, это может быть немного запутанным. Если вы не устанавливаете вне репозиториев, я считаю, что это абсолютно безопасно. - flickerfly
Увидев это в несколько vsphere virtual servers (где ядра автоматически обновлялись, но потом не удалялись), я написал скрипт python автоматизировать его. Я бы хотел больше смотреть на него - EvanK
Если вы используете dpkg --purge при полной загрузке вы получите следующее $ sudo dpkg --purge linux-image-3.13.0-65-generic dpkg: dependency problems prevent removal of linux-image-3.13.0-65-generic: linux-image-extra-3.13.0-65-generic depends on linux-image-3.13.0-65-generic. dpkg: error processing package linux-image-3.13.0-65-generic (--purge): dependency problems - not removing Errors were encountered while processing: linux-image-3.13.0-65-generic - flickerfly
Это очень полезно. работал на меня. - deepdive


Существует документация об этом на https://help.ubuntu.com/community/RemoveOldKernels

Вкратце: использование

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

44
2017-08-09 09:12



В моем случае apt не работает из-за ожидающего ядра, и предлагаемое исправление является catch-22: - James Bowery
Сначала мне пришлось исправлять сломанные пакеты askubuntu.com/a/304388/284313 После этого ваше решение сработало. - James Bowery
Я думаю, что это должно быть приемлемым решением на данный момент. - Fran Marzoa
это намного безопаснее, чем принятый ответ. я думаю apt-get autoremove --purge должно быть достаточно. - Woodrow Barlow


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

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

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

Удалите (или прокомментируйте) /boot вход в /etc/fstab:

vim /etc/fstab

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

update-grub

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

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


6
2018-04-14 07:43



Это хорошая идея, но не работает, если вы хотите иметь полное шифрование диска для вашего корневого раздела. - Paŭlo Ebermann


Удаление старых ядер (для свободного места в / boot) видеть: http://askubuntu.com/questions/89710/how-do-i-free-up-more-space-in-boot

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

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

sudo apt-get update

3
2017-08-14 14:09



это был единственный, который работал ... большое решение - John
Лучший ответ! Это единственное решение, которое сработало для меня; autoremove - глупо; он пытается переустановить любые ядра с неудовлетворенными зависимостями, прежде чем он их официально удалит. Я снова и снова ходил по кругу, выходя из космоса. Этот ответ - золото. - Lonnie Best


sudo apt-get autoremove

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


2
2017-10-03 16:39





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

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

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

затем

sudo bootnukem --dry-run

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


0
2018-05-04 17:28