Вопрос Как освободить больше места в / 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 ядро.


524
2017-12-22 10:06


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


Стоит отметить, что не каждая установка Ubuntu будет иметь отдельный / загрузочный раздел - часто это будет всего лишь один большой раздел. Этот ответ применяется для тех, у кого есть отдельный / загрузочный раздел. Те, кто использует шифрование LVM или «полного диска», нуждаются в отдельной загрузке, иначе это может быть необязательно. - thomasrutter
Если у кого-то еще такая же проблема, как у меня: после того, как / boot не осталось места, «apt-get upgrade» не удастся при повторной генерации файлов initrd для установленных ядер или если скрипт update-initramfs установлен, содержимое / var / lib / initramfs-tools. В этой ситуации нельзя удалить старые ядра с помощью apt-get, потому что раздел fscking / boot не имеет места на устройстве. Это можно сделать с помощью «dpkg -P», за которым следует очистка соответствующей записи в / boot (до свободного места) и / var / lib / initramfs-tools (изображение initrd не будет сгенерировано). - wojci
Ключевым моментом для правильных ответов является то, что они говорят вам удалить пакеты содержащий более старые версии ядра. Многие веб-страницы, которые решают эту проблему, рекомендуют файлы в разделе / ​​boot; которые могут работать некоторое время, но вы можете в конечном итоге обновить пакет, который повторно создает файлы, которые отсутствуют для версий ядра, которые имеют пакеты, тем самым выбегая из космоса. - kgrittn
help.ubuntu.com/community/RemoveOldKernels - jarno


ответы:


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

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 и виртуальный бокс). Большинство пользователей должны удалить эти пакеты заголовков, если соответствующий пакет ядра (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]+//')")

600
2017-12-24 14:34



Фантастический ответ. Еще одна часть информации поможет: Как вы можете сказать (что) о том, какие из ядер вы используете? Предположительно, вы не можете просто предположить, что это последний ... редактировать: И это выглядит как ответ uname -a, Вероятно, лучше всего убедиться, что вы не ожидаете ожидающего перезапуска-установки-нового ядра (как и я, но я заметил несоответствие между uname -a и «последнее» ядро). - T.J. Crowder
@freddyb Сделано. Обратите внимание, что команды печатают / удаляют ядра, отличные от загруженного / загруженного, - Lekensteyn
Если apt-get purge терпит неудачу из-за неудовлетворенных зависимостей, вы можете следовать рекомендациям в askubuntu.com/questions/171209/... - svandragt
Очень тщательный ответ и по-прежнему работает ... и все еще нужен в 2014 году. Нелепо, что это все еще не выполняется автоматически с помощью инструментов GUI. - allprog
@ byf-ferdy Ядро является неотъемлемой частью ОС, если новейшая версия каким-то образом не полностью работает с вашим оборудованием, тогда вы можете выбрать другую для загрузки. Хорошей функцией, вероятно, будет то, что удаляет все автоматически установленные ядра старше месяца (за исключением последних двух). - Lekensteyn


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

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

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


200
2018-02-21 03:38



Это отлично поработало, спасибо. - Michael Durrant
это также соответствует linux-libc-dev: amd64 - Frederick Nord
что приведет к непреднамеренному удалению «linux-libc-dev: amd64»? - ConfusedStack
@FrederickNord благодарит за головы. Исправлено это. Это создало бы трудности с компиляцией программ c. - dward
Команда хорошо звучит, но когда я запускаю ее, я получаю ту же ошибку, которую получаю, когда хочу что-то установить, и она не может этого сделать, потому что загрузка полна: --------------- ----------- Следующие пакеты имеют неудовлетворенные зависимости: linux-image-extra-4.2.0-27-generic: Зависит от linux-image-4.2.0-27-generic, но он не собирается для установки linux-image-extra-4.2.0-30-generic: Зависит от linux-image-4.2.0-30-generic, но он не будет установлен - Alex


sudo apt-get autoremove

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


94
2017-11-05 05:58



Как следует из названия, apt-get AUTOremove - это автоматизированная операция, когда система берет «лучшее предположение», чего вы пытаетесь достичь. Он не должен использоваться в качестве замены для администрирования системы здравого смысла. Проблема с этим подходом: если вы (или обновление) удалили пакет, входящий в этот список зависимостей, функция автоматического удаления хочет удалить все остальные пакеты в списке зависимостей, оставив вам систему без рабочего стола (а иногда даже с полностью сломанной системой). - Rinzwind
Ссылка: 1 из многих источников для этого комментария выше: linuxquestions.org/questions/debian-26/... - Rinzwind
если linux-image-generic установлен и новые ядра не установлены явно, это приведет к удалению старых ядер. Здравый смысл состоит в том, чтобы не принимать какие-либо изменения в системе, не читая их в первую очередь. Если здравый смысл использовался до использования этой команды, тогда никаких проблем не возникнет. - mchid
@Rinzwind - эта команда освободила 250 МБ дискового пространства, удалив старые «заголовки Linux», - Chinmaya B
autoremove работает, если используется до существует условие отсутствия пространства. Однако, как только apt закончит работу и прекратит работу (и пользователь, наконец, замечает проблему), слишком поздно запускать autremove или любое другое решение на основе apt. Если это так, попробуйте один из решений на основе dpkg. - user535733


Менеджер Synaptic Package Manager может использоваться для простого выбора и удаления старых изображений ядра. Screenshot of Synaptic Package Manager

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

sudo apt-get install synaptic

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

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

Щелкните правой кнопкой мыши каждый из этих пакетов linux и выберите опцию «Mark for Complete Removal». Наконец нажмите кнопку «Применить». Это приведет к удалению всех файлов и любых связанных файлов. Ваш /boot папка теперь должна быть немного более аккуратной.


38
2017-12-24 14:34



Я на 14.04. Я обработал эту ситуацию в прошлом через командную строку, но сегодня решил попробовать этот метод ... для меня мои изображения Linux были расположены под установленным (ручным), не установленным (локальным или устаревшим) - Ryan
О нет. Я не могу установить Synaptic, потому что нет места на /boot! - John McGehee
@JohnMcGehee fsck и parted должны решить эту проблему для вас. - FlipMcF


Благодарим вас за подробный пост вашей проблемы, и это заставило меня двигаться в правильном направлении. Хотя полезно сохранить предыдущие файлы ядра, вы можете удалить их все за один раз, отметьте это сообщение:
Как удалить все неиспользуемые заголовки, изображения и модули ядра ядра 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

24
2018-06-01 12:53





Это новый ответ на старый вопрос, но простой способ очистить эту вещь (и многое другое) - это установить Ubuntu Tweak, к установить его:

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

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

Ubuntu tweak janitor for old kernels

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

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


22
2017-11-25 13:11



Я попытался установить Ubuntu, а также перейти на сайт репозитория. Он говорит, что это только для 13.10 и раньше. У вас есть обновленная версия для 15.04? - JayCouture.com
@ JayCouture.com Версия на сайте - 14.04 («для 13.10 и раньше» - это ссылка на старые версии). Я игнорирую, если есть версия для 14.10 или 15.04. - Rmano


Я смог решить проблему, используя 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 размер или делать что-то еще.


17
2017-12-03 18:47



Вы должны либо не иметь отдельный / загрузочный раздел в первую очередь, либо увеличить размер, так как 100 МБ слишком малы. - psusi
Спасибо, я удаляю через: sudo dpkg --remove linux-headers-3.5.0-28* - TiloBunt
а также sudo dpkg --remove linux-image-3.5.0-28* для изображения, df -h - TiloBunt


Вы можете прекратить использование отдельного / загрузочного раздела, тогда у вас не будет такого ограниченного места. Для этого отключите раздел, затем смонтируйте его в другом месте и скопируйте все файлы в каталог / 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 находится в данный момент слева от корневого раздела, вам нужно сначала переместить корневой раздел влево, а затем расширить его, но это может занять очень много времени, поэтому, возможно, не стоит беда.


11
2017-12-22 16:38



Перемещение / загрузка моего основного раздела для меня не является решением, так как все, кроме / boot, зашифровано. Вы не могли это знать, из моего вопроса, извините. - user6722
Это хорошее решение, если вышеприведенные решения не работают из-за отсутствия свободного места на загрузочном томе или если у вас неоднократно возникает проблема «вне места». Сначала прочитайте, почему иногда требуется иметь раздел / boot: (help.ubuntu.com/community/DiskSpace) - svandragt
@svandragt, в принципе, в наши дни нет необходимости в необходимости раздела / boot. О единственном, что осталось, это если ваша биография сломана и не может увидеть весь диск, и любая машина, созданная в последнее десятилетие, не имеет такого ограничения. Другие устаревшие случаи, такие как использование рейда или LVM, теперь корректно обрабатываются grub2. - psusi
Существует несколько причин наличия отдельного загрузочного раздела. Но я не уверен, что преимущества стоят сложной настройки. 1. ОС может выиграть от более быстрой загрузки через ext2. 2. Безопасность может быть увеличена путем установки / загрузки как RO. (руткиты и т. д.) или даже не размонтированы во время выполнения os. 3. grub (1) имеет (имел) некоторые проблемы с ext4. 4. Требуется для запуска lvm (grubv1). Хотя это не относится к настройке ubuntu по умолчанию. - David Cahill
lsblk может использоваться для определения того, какой раздел - Mr Purple