Ubuntu boot нет места
Мой /boot раздел почти заполнен, и я получаю предупреждение каждый раз, когда перезагружаю свою систему. Я уже удалил старые пакеты ядра (linux-headers . ), фактически я сделал это, чтобы установить более новую версию ядра, которая шла с автоматическими обновлениями.
После установки новой версии раздел снова почти заполнен. Так что еще я могу удалить? Существуют ли другие файлы, связанные со старыми образами ядра?
Вот список файлов, которые находятся на моем /boot разделе:
В настоящее время я использую 3.0.0-14-generic ядро.
Стоит отметить, что не каждая установка Ubuntu будет иметь отдельный раздел / boot - часто это всего лишь один большой раздел. Этот ответ относится к тем, у кого есть отдельный раздел / boot. Те, кто использует LVM или шифрование «на полный диск», нуждаются в отдельном / boot, в противном случае это может быть необязательным. Если у кого-то есть такая же проблема, как у меня: после того, как / boot не осталось места, «apt-get upgrade» завершится неудачно при повторной генерации файлов initrd для установленных ядер или если сценарий update-initramfs считает, что установлены путем изучения содержимое / var / lib / initramfs-tools. В этой ситуации невозможно удалить старые ядра с помощью apt-get, потому что в разделе fscking / boot не осталось места на устройстве. Это можно сделать с помощью «dpkg -P» с последующей очисткой соответствующей записи в / boot (для освобождения места) и / var / lib / initramfs-tools (образ initrd не будет сгенерирован).У вас много неиспользованных ядер. Удалите все ядра, кроме последних:
Это сокращение для:
Удаление linux-image-x.x.x-x пакета также удалит linux-image-x.x.x-x-generic .
Заголовки устанавливаются /usr/src и используются при сборке модулей ядра вне дерева (например, проприетарного драйвера nvidia и virtualbox). Большинству пользователей следует удалять эти пакеты заголовков, если соответствующий пакет ядра ( linux-image-* ) не установлен.
Чтобы вывести список всех установленных ядер, запустите:
Одна команда, чтобы показать все ядра и заголовки, которые можно удалить, кроме текущего работающего ядра:
Он выбирает все пакеты с именами, начинающимися с linux-headers-<some number> или linux-image-<some number> , печатает имена пакетов для установленных пакетов, а затем исключает текущее загруженное / работающее ядро (не обязательно самое последнее ядро!). Это соответствует рекомендации по тестированию более нового ядра перед удалением старых, известных для работы ядер.
Итак, после обновления ядер и перезагрузки для тестирования вы можете удалить все остальные ядра с помощью:
Фантастический ответ. Еще одна информация поможет: как вы можете точно определить, какое из ядер вы используете? Предположительно, вы не можете просто предположить, что это последний . Редактировать : И, похоже, ответ uname -a . Вероятно, лучше всего убедиться, что у вас нет ожидающих отложенного перезапуска для установки нового ядра (как я сделал; но я заметил несоответствие между uname -a «последним» ядром). @freddyb Готово. Обратите внимание, что команды печатают / удаляют ядра, отличные от загруженного / загруженного . Очень подробный ответ, и он все еще работает . и все еще нужен в 2014 году. Что-то смешное, что это все еще не выполняется автоматически инструментами с графическим интерфейсом. @ byf-ferdy Ядро является неотъемлемой частью операционной системы. Если последняя версия почему-то не полностью работает с вашим оборудованием, вы все равно можете выбрать другую для загрузки. Хорошей особенностью, вероятно, будет то, что удаляет все автоматически установленные ядра старше месяца (кроме последних двух).Ваш загрузочный раздел заполнен. Поскольку это обновление ядра, эти файлы будут скопированы в загрузочный раздел, поэтому вам нужно очистить его. Вот запись в блоге , которая покажет вам, как очистить старые образы ядра одной командой. Я дам краткий обзор метода. Используйте эту команду, чтобы распечатать текущую версию вашего ядра:
Затем используйте эту команду, чтобы распечатать все установленные вами ядра, которые не являются вашим новым ядром:
Убедитесь, что вашего текущего ядра нет в этом списке. Обратите внимание, как это большинство из заключительной команды (внизу). Чтобы удалить и удалить эти старые ядра, вам нужно передать следующие аргументы:
Теперь мы можем делать все, что мы хотим, комбинируя эти две последние команды в этот безобразный беспорядок:
И эта одна команда позаботится обо всем для вас. Я подтверждаю, что это работает отлично, но никогда никому не доверяю в Интернете. :) Для получения дополнительной информации в блоге дается очень хорошее объяснение того, что делает каждая часть команды, поэтому прочитайте ее, чтобы убедиться, что она делает то, что вы хотите, чтобы она делала.
что будет причиной непреднамеренного удаления "linux-libc-dev: amd64"? @FrederickNord спасибо за советы. Исправлено это. Это вызвало бы некоторые трудности при компиляции c программ. Команда звучит хорошо, но когда я ее запускаю, я получаю ту же ошибку, что и я, когда хочу что-то установить, и не может этого сделать, потому что загрузка полна: --------------- ----------- Следующие пакеты имеют неудовлетворенные зависимости: 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, но не будет установленЭта команда выполняет работу автоматически.
Как следует из названия, apt-get AUTOremove - это автоматизированная операция, в которой система «догадывается» о том, чего вы пытаетесь достичь. Он не должен использоваться в качестве замены системного администрирования здравого смысла. Проблема с этим подходом: если вы (или обновление) удаляете пакет, который является частью этого списка зависимостей, функция автоматического удаления хочет удалить все другие пакеты в списке зависимостей, оставляя вас в системе без рабочего стола (и иногда даже с полностью сломанной системой). если установлен linux-image-generic, а новые ядра не были установлены явно, это приведет к удалению старых ядер. Здравый смысл заключается в том, чтобы не принимать какие-либо изменения в системе без предварительного их чтения. Если здравый смысл использовался до использования этой команды, то проблем не будет. @Rinzwind - Эта команда освободила 250 МБ моего дискового пространства, удалив старые «заголовки linux» autoremove работает, если используется до того, как возникнет нехватка места. Однако, когда apt не хватает места и прерывает работу (и пользователь, наконец, замечает проблему), уже слишком поздно запускать autremove или любое другое решение на основе apt. Если это так, попробуйте одно из решений на основе dpkg.Диспетчер пакетов Synaptic можно использовать для простого выбора и удаления старых образов ядра.
Если у вас еще не установлен Synaptic:
Запустите приложение и выберите показанные параметры.
Вы должны быть в состоянии выделить все пакеты "linux-" с версией "2.6.x", где x находится между 31 и 38 в соответствии с файлами в вашей папке / boot.
Щелкните правой кнопкой мыши по каждому из этих пакетов Linux и выберите параметр «Пометить для полного удаления». Наконец нажмите кнопку Применить. Это удалит все файлы и все связанные файлы. Ваша /boot папка должна быть немного аккуратнее.
Я на 14.04. В прошлом я справлялся с этой ситуацией через командную строку, но я решил попробовать этот метод сегодня . для меня мои образы Linux были расположены под установленным (ручным), не установленным (локальным или устаревшим) О нет. Я не могу установить Synaptic, потому что на нем нет места /boot ! @JohnMcGehee fsck и parted должны решить эту проблему для вас.Спасибо за ваш подробный пост вашей проблемы, это заставило меня двигаться в правильном направлении. Хотя полезно сохранить предыдущие файлы ядра, вы можете удалить все из них за один раз, проверьте этот пост:
Как удалить все неиспользуемые заголовки ядра Linux, изображения и модули
Сделано через командную строку. Если вы делаете это через удаленный доступ, используйте что-то вроде WINSCP, чтобы открыть терминальную сессию и просто вставить его, очень хорошо работает.
Здесь это скопировано из статьи, я предлагаю вам прочитать статью полностью:
Это новый ответ на старый вопрос, но простой способ убрать эту вещь (и не только) - установить Ubuntu Tweak . Чтобы установить его :
затем вы можете запустить Ubuntu Tweak, перейдя на вкладку «janitor», и отсюда всего три клика:
Для безопасности лучше оставить последнее ядро (вы никогда не знаете) или хорошо известное работающее ядро; но это легко настраивается.
Вы можете использовать один и тот же инструмент для очистки многих вещей - просто помните, что если вы очищаете кэш миниатюр или кэш ТБ, тогда системе придется их перестраивать, если они необходимы.
Я попытался установить твик Ubuntu, а также зашел на сайт репозитория. Это говорит, что это только для 13.10 и раньше. У вас есть обновленная версия для 15.04?Я смог решить проблему с помощью dpkg непосредственного удаления пакетов. Хотя пакеты все еще перечислены dpkg -l , файлы удаляются /boot , освобождая место.
После этого apt-get -f install исправили мои проблемы с зависимостями, и все было хорошо с миром.
Однако я не приму этот ответ, так как мне все еще нужно знать, должен ли я увеличивать свой /boot размер или делать что-то еще.
У вас либо не должно быть отдельного раздела / boot, либо вы должны увеличить его размер, так как 100 МБ слишком мало. Спасибо, я удаляю через: sudo dpkg --remove linux-headers-3.5.0-28* и sudo dpkg --remove linux-image-3.5.0-28* для изображения, проверено через df -h Спасибо, это мне тоже понравилось. Я удалил несколько старых ядер ( не тех, которые я использовал в настоящее время), а затем сделал apt-get -f install . Кроме того, не забудьте позже сделать apt-get autoremove , чтобы возможно удалить другие ненужные.Вы можете прекратить использование отдельного раздела / boot, тогда у вас не будет такого ограниченного пространства там. Для этого размонтируйте раздел, затем смонтируйте его где-нибудь еще и скопируйте все файлы в каталог / boot вашего корневого раздела, затем удалите запись из / etc / fstab и переустановите grub. Например (вам нужно будет использовать правильный раздел):
Затем вы можете использовать gparted для удаления старого / загрузочного раздела и, возможно, расширить корневой раздел, чтобы использовать это пространство. Для расширения корневого раздела вам нужно будет загрузиться с livecd, а свободное место должно быть сразу справа. Если раздел / boot в данный момент находится слева от корневого раздела, вам необходимо сначала переместить корневой раздел влево, а затем расширить его, но это может занять очень и очень много времени, поэтому может не стоить беда.
Перемещение / boot в мой основной раздел не является для меня решением, так как все, кроме / boot, зашифровано. Вы не могли знать это по моему вопросу, извините. @svandragt, в принципе, в наши дни не осталось причин для использования раздела / boot. Единственное, что осталось, - это если ваш биос поврежден и не может видеть весь диск, и ни у одной машины, созданной за последнее десятилетие, такого ограничения нет. Другие устаревшие случаи, такие как использование raid или LVM, теперь обрабатываются grub2 должным образом. Есть несколько причин иметь отдельный загрузочный раздел. Но я не уверен, что преимущества стоят за установку повышенной сложности. 1. ОС может выиграть от более быстрой загрузки через ext2. 2. Безопасность может быть увеличена путем установки / загрузки как RO. (руткиты и т. д.) или даже остаются не подключенными во время работы ОС. 3. У grub (1) есть (были) некоторые проблемы с ext4. 4. Требуется для запуска lvm (grubv1). Хотя это не относится к настройке Ubuntu по умолчанию. lsblk может быть использован для определения того, что это за раздел- uname -a найти работающее ядро.
- dpkg -l linux--\* | grep ^ii список всех установленных на данный момент пакетов, связанных с ядром. Это будет включать работающее ядро.
- sudo apt-get purge linux--3.16.0- удалить старые ядра. Замените xx,yy,zz списком сборок ядра, которые вы хотите удалить - это все сборки, перечисленные предыдущей командой, которые старше, чем работающее в данный момент ядро. Убедитесь, что вы не удаляете работающее в данный момент ядро - ваша система перестанет загружаться . Вам также может потребоваться изменить версию ядра с 3.16.0 той, которая установлена в вашей системе.
- Необязательно, сделайте дополнительно sudo apt-get autoremove - это удалит все оставшиеся зависимости старых ядер, которые больше не нужны текущему ядру, освободив немного больше места.
У вас могут быть заголовочные файлы без установленных версий ядра, или наоборот - просто включите все эти версии в команду. APT будет жаловаться, что некоторые пакеты не могут быть удалены, потому что они не установлены, но это не принесет вреда.
- Если команда не склонная из - за не остались на устройство пространства ошибки, используйте соответствующее DPKG команды вместо: sudo dpkg --purge linux--3.16.0- .
- Если команда dpkg по-прежнему не работает, поскольку linux-image пакеты требуются для linux-headers пакетов той же версии (которую вы также хотите удалить), возможно, dpkg не удалось решить эту проблему. Еще раз проверьте вывод dpkg -l и укажите любые суффиксы имени пакета в командной строке. Например, на одной из моих систем команда, которая в итоге сработала, была sudo dpkg --purge linux--3.16.0--generic-pae .
- Если вы получили какую-либо другую ошибку, обратитесь за помощью - у вас может быть другая проблема, чем вы думали.
Для меня и то apt-get purge и dpkg --remove другое не удалось. Поэтому мне пришлось удалить пару старых образов ядра из / boot с помощью rm -f .
Это не хороший способ удалить пакеты. Хотя этот ответ не очень конкретен о том, почему удалить их правильным способом не удалось, я уверен, что если бы эта информация была предоставлена (в отдельном вопросе, конечно), мы могли бы попытаться выяснить причину проблемы. Я считаю, что это не удалось, потому что /boot раздел был заполнен. Эта No space left on device initrd.img спасибо, это спасательное окончательное решение, когда больше ничего не работает.Список всех ядер:
Показать текущее ядро:
Перечислите все ядра, кроме текущего:
Убедитесь, что вашего текущего ядра нет в этом списке.
Удалите все ядра, кроме текущего:
Очистить другие вещи:
Если он по-прежнему выдает ошибку места на загрузочном диске для установки / удаления файлов, то удалите непосредственно один из старых изображений из каталога / boot,
ПРИМЕЧАНИЕ. Пожалуйста, просмотрите текущий образ ядра еще раз, прежде чем удалять любое изображение.
Я уже удалил старые пакеты ядра (linux-заголовки . )
linux-headers-* не ядра. Пакеты ядра называются linux-image-* . Названные linux-headers-* пакеты являются пакетами разработки для компиляции модулей ядра: они не находятся в каталоге / boot и не требуются для повседневного использования вашей системы.
Файлы, которые вы перечислили в / boot , включают несколько старых образов ядра ( vmlinuz* ) и скомпилированные образы initrd ( initrd.img* ) для этих ядер, что указывает на то, что у вас все еще установлено много старых пакетов ядра.
Вы должны быть в состоянии перечислить ваши установленные ядра с
(Обратите внимание, что это, вероятно, вернет пакеты, которые также не являются ядрами).
Как правило, нет необходимости устанавливать более двух ядер - одно используется в настоящее время, а предыдущее - как запасной вариант. Таким образом, вы можете начать удалять старые по очереди, например так:
Убедитесь, что вы заменили "3.2.0-23-generic" на версию ядра, которую хотите удалить! Кроме того, не удаляйте пакеты, такие как linux-image-generic . Вы должны быть очень осторожны, чтобы не удалить работающее в данный момент ядро, иначе вы не сможете загрузиться (Ubuntu может или не может предупредить вас об этом).
Вы можете найти ваше текущее работающее ядро с:
-
Я удалил сгенерированную старую версию ядра вручную, чтобы освободить место.
Вы будете редактировать текстовый файл конфигурации как суперпользователь, поэтому вставьте в терминал следующее:
Найдите строку update_initramfs=yes и измените ее на update_initramfs=no . Сохраните и выйдите из файла, затем запустите:
Это решило мою проблему. Это было основано на этом блоге
Надеюсь, что все будет хорошо, когда вы перезагрузите компьютер, и позже вы можете попытаться изменить no обратно yes в update-initramfs.conf .
Я показываю, что еще в 2017 году этот вопрос имеет новые комментарии и ответы, но пропускает один ответ, который я считаю очень полезным здесь:
Ubuntu как настольная ОС простого повседневного использования не имеет причин для установки с отдельным \ загрузочным разделом, и что-то вроде этого НЕ будет предлагать что-то «обычному пользователю» . Так что решение - это новая установка без \ загрузочного раздела, и это как у тебя никогда не будет такой проблемы
PS: Мой ответ может быть удален или добавлен в принятый ответ . (думаю, это поможет некоторым людям таким образом)
Но на моем компьютере достаточно свободного места на жестком диске. Кто-нибудь знает, как я это решаю. (Если это уместно, я использую всю функцию шифрования диска альтернативного установочного образа для Ubuntu 12.04).
4 ответа
Чтобы перечислить все ядра:
dpkg --get-selections | grep "linux-image-[[:digit:]].*" | tr "\t" ";" | cut -d ";" -f1
Результаты выглядят примерно так:
Не удаляйте все ядра, только старые!
Далее давайте удалим ядро 3.16,
sudo apt-get purge linux-image-3.16.0-23-generic
а затем все неиспользованные пакеты из системы:
sudo apt-get autoclean && sudo apt-get autoremove
Причиной были действительно старые образы ядра.
Чтобы очистить все, что мне нужно было сделать, это запустить одну строку:
Это автоматически распознало старые ядра и удалило их.
Может быть, что ваш /boot раздел накопил слишком много версий ядра при выполнении обновлений с течением времени. Этот раздел может быть отделен от вашего большого раздела диска (смонтирован как / ). Вы можете проверить /boot разделить пространство следующим образом (ищите строку с /boot):
Короче говоря, проверьте текущую версию ядра, получите список того, что установлено, и затем удалите старые версии с помощью apt-get. На странице также есть "волшебная" однострочная команда, которая сделает все это за вас. Но используйте его на свой страх и риск.
Инструкции более подробно:
Получите текущую версию ядра, которую вы хотите сохранить:
Получить список всех установленных ядер:
Запустите apt-get remove для ядер, которые вы хотите удалить. Не на последнем! Например:
dpkg -l скажет вам состояние пакета (ядра) перед именем пакета. Например:
- "rc" означает, что пакет извлечен и имеет файлы конфигурации. Эти вам больше не нужно удалять.
- "ii" означает, что пакет помечен для установки и установлен
Исходя из этого, вы можете перечислить только те пакеты ядра, которые установлены:
Альтернативное решение, используя инструмент GUI Ubuntu Tweak.
Установите и перейдите в раздел "Компьютерный уборщик", проверьте пакеты "Система" -> "Старое ядро" и "Система" -> "Ненужные" и нажмите "Очистить".
Читайте также: