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

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

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

274
задан 31.05.2016, 18:53

7 ответов

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

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

uname -r

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

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

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

sudo apt-get remove linux-image-VERSION

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

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

sudo apt-get autoremove

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

sudo update-grub
335
ответ дан 10.10.2019, 10:25
  • 1
    sudo dpkg --list 'linux-image*' | grep ^ii делает немного легче видеть просто установленные ядра. Также я думаю эти update-grub, безопасно, но не строго необходим, который выполняется автоматически, когда Вы удаляете ядро. – Community 05.03.2014, 18:15
  • 2
    Используйте 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 новых ядер оставленными в системе. – Ingrid Cooper 16.11.2014, 08:31
  • 3
    мое простое один лайнер: apt-get remove `dpkg --list 'linux-image*' |grep ^ii | awk '{print $2}'\ | grep -v \`uname -r\`` – mente 01.03.2015, 22:49
  • 4
    sudo apt-get autoremove должен быть достаточным (обычно отъезд Вас с последними 3 ядрами) – hemu 24.02.2016, 18:01
  • 5
    Это - хороший ответ, но я сомневаюсь, что он может работать в большинстве (если не все) случаи: проблема - то, что /boot полно, таким образом apt-get перестанет работать с некоторым кодом ошибки или другим. Ответ ниже является небольшим " hackier" (я должен признаться, что имел к стали сам для издания этого rm -rf в /boot), но единственный, который, вероятно, будет работать в этой ситуации. – gak 20.09.2016, 09:55

ПРИМЕЧАНИЕ: это только если вы не можете использовать 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. д / 50unattended-обновление. Это будет эквивалентно запуску автоматического удаления после каждого обновления безопасности, чтобы быть уверенным, что вы очистите неиспользуемые ядра, но также удалит другие вещи, которые, по его мнению, не используются, спасая вас от этой проблемы в будущем.

284
ответ дан 10.10.2019, 10:25
  • 1
    Таким образом, у меня есть последнее для следующей перезагрузки и затем той прежде на всякий случай, что-то прерывает тот. Обычно у меня есть много комнаты так это doesn' t повреждают иметь некоторых, и это удовлетворяет мою паранойю для того, чтобы не иметь достаточно резервных опций ни в каком данном сценарии. – dentex 22.04.2014, 09:32
  • 2
    Мне никогда не вызывали проблему необслуживаемые обновления. Я могу вообразить сценарии, где это могло быть проблемой главным образом вокруг зависимостей, потерянных на упакованных установках non-deb, Говорят, что Вы устанавливаете php, решаете удалить его и установить более новую версию из источника. Этой версии обеспечила зависимости предыдущая установка, но склонный не знает, что это все еще требуется. В следующий раз Вы работаете, автоудаляют те зависимости, закончится. Если автоматизировано, это могло бы немного сбивать с толку. Если Вы don' t устанавливают возле репозиториев, я полагаю, что он полностью безопасен. – Michael 15.04.2015, 16:08
  • 3
    После наблюдения этого в несколько vsphere виртуальные серверы (где ядра автоматически обновлялись, но не удалялись позже), я записал сценарий Python для автоматизации его. I' d любят иметь больше глаз на него – dentex 30.09.2015, 02:39
  • 4
    Если Вы используете dpkg --purge на полной начальной загрузке you' ll получают следующий $ 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 – mrstif 13.02.2016, 00:58
  • 5
    После чистки / склонная начальная загрузка - получают установку-f все еще wouldn' t работа. Используя df -i я узнал, что у меня также заканчивался inodes на / из-за огромной суммы файлов для исходного кода более старых ядер в /usr/src – Community 25.05.2016, 12:37

Документация по этому вопросу имеется на https://help.ubuntu.com/community/RemoveOldKernels

. В целом: используйте

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

[112 ] инструмент может быть установлен через 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
51
ответ дан 10.10.2019, 10:25

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

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

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

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

[111 ]

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

update-grub

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

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

7
ответ дан 10.10.2019, 10:25

sudo apt-get autoremove

Удаляет все ядра, кроме последних 2. Протестировано на Ubuntu 16.04 LTS, когда /boot был загружен на 100%, а apt-get upgrade не прошел его последнее обновление ядра. Автоматическое удаление ядра является итеративным, поэтому, если у вас есть несколько ядер, они будут удалены по одному за раз. Так что наберитесь терпения.

3
ответ дан 10.10.2019, 10:25

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

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

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

Затем

sudo bootnukem --dry-run

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

1
ответ дан 10.10.2019, 10:25

Теги

Похожие вопросы