«Том загрузки имеет только 0 байтов свободного места на диске»

32

После недавнего обновления я получаю предупреждение:

The volume boot has only 0 bytes disk space remaining

Но на моем компьютере достаточно свободного места на жестком диске. Кто-нибудь знает, как я это решаю. (Если это уместно, я использую всю функцию шифрования диска альтернативного установочного образа для Ubuntu 12.04).

user924731
источник
Это действительно зависит от того, как вы установили Ubuntu на свою машину. Можете ли вы "sudo fdisk -l" в терминале и проверить, есть ли небольшой раздел, который почти заполнен?
Паулюс Шукис
4
Более того, пожалуйста, запустите команду 'df -H -x tmpfs -x devtmpfs' без кавычек и вставьте вывод здесь.
fabricator4
Этот вопрос и ответы связаны с проблемой и могут помочь.
elomage
очевидно известная проблема для зашифрованного раздела. ответ askubuntu.com/a/230942/231504 отличный - у меня работает. Также, пожалуйста, увеличьте
pestophagous

Ответы:

48

Чтобы перечислить все ядра:
dpkg --get-selections | grep "linux-image-[[:digit:]].*" | tr "\t" ";" | cut -d ";" -f1

Результаты выглядят примерно так:

linux-image-3.19.0-7-generic 
linux-image-3.18.0-13-generic  
linux-image-3.16.0-23-generic

Не удаляйте все ядра, только старые!

Далее давайте удалим ядро ​​3.16,
sudo apt-get purge linux-image-3.16.0-23-generic

а затем все неиспользованные пакеты из системы:
sudo apt-get autoclean && sudo apt-get autoremove

Paradiesstaub
источник
У меня extraтоже есть некоторые , например, linux-image-3.13.0-40-genericи linux-image-extra-3.13.0-40-generic. Могу ли я удалить те с extra?
Мадс Скьерн
Это было чрезвычайно полезно, но не полностью решило мою проблему (очистка старого ядра все еще не удавалась). Мне пришлось вручную удалить некоторые старые файлы ядра. Я нашел несколько больших, используя find /boot/ -type f | xargs du | sort -n. Мой в настоящее время работает ядро 3.13.0-66-generic, поэтому я осторожен , чтобы не удалить все связанные с этим, но я удалить следующее: sudo rm /boot/initrd.img-3.13.0-63-generic /boot/initrd.img-3.13.0-65-generic /boot/vmlinuz-3.13.0-65-generic /boot/vmlinuz-3.13.0-63-generic. Наконец, запуск очистки на старом ядре завершается успешно.
Блонг
4
если у вас действительно 0 свободных байтов, это не сработает, как сказал @blong. Вы должны вручную удалить какой-то старый файл vmlinuz прежде, потому что процесс очистки должен создать несколько файлов, и, если осталось 0 байт, это не удастся.
помарк
1
Как узнать, какие ядра старые? Мой вывод: linux-image-4.10.0-42-generic linux-image-4.13.0-26-generic linux-image-4.13.0-32-generic linux-image-4.13.0-37-generic linux-image -4.13.0-38-generic linux-image-4.13.0-39-generic linux-image-4.13.0-41-generic linux-image-4.13.0-43-generic linux-image-4.8.0-36 -генерический
Джекоб
25

Причиной были действительно старые образы ядра.
Чтобы очистить все, что мне нужно было сделать, это запустить одну строку:

sudo apt-get autoclean && sudo apt-get autoremove

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

Села
источник
9

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

df -h

Есть хорошая страница о том, как удалить старые ядра .

Короче говоря, проверьте текущую версию ядра, получите список того, что установлено, и затем удалите старые версии с помощью apt-get. На странице также есть «волшебная» однострочная команда, которая сделает все это за вас. Но используйте это на свой страх и риск.

Инструкции более подробно:

  1. Получите текущую версию ядра, которую вы хотите сохранить :

    uname -r
    
  2. Получить список всех установленных ядер:

    dpkg -l | grep linux-image-
    
  3. Запустите apt-get remove для ядер, которые вы хотите удалить. Не на последнем ! Например:

    sudo apt-get remove linux-image-2.6.32-22-generic
    

Больше примечаний:

  • dpkg -lскажет вам состояние пакета (ядра) перед именем пакета. Например:

    rc  linux-image-3.13.0-39-generic  ...
    ii  linux-image-3.13.0-40-generic  ...
    
    • «гс» означает , что пакет г emoved и имеет с onfiguration файлов. Эти вам больше не нужно удалять.
    • «II» означает , что пакет помечен для я становки и я ленная

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

    dpkg -l | grep "ii.*linux-image-"
    

Альтернативное решение , используя инструмент GUI Ubuntu Tweak .

Установите и перейдите в раздел «Компьютерный уборщик», проверьте пакеты «Система» -> «Старое ядро» и «Система» -> «Ненужные» и нажмите «Очистить».

elomage
источник
3

Используйте этот скрипт, чтобы удалить все остальные старые ядра, оставив текущую версию и предыдущую (последняя версия ядра 1)

KERNELMAGES=`ls -lRt /boot/vmlinuz-*| awk -F/ '{print $3}' | grep -v $(uname -r) | sed 1d | sed -e 's/vmlinuz/linux-image/g'`

KERNELHEADERS=`ls -lRt /boot/vmlinuz-*| awk -F/ '{print $3}' | grep -v $(uname -r) | sed 1d | sed -e 's/vmlinuz/linux-headers/g'`

for PURGEKERNEL in `echo $KERNELMAGES $KERNELHEADERS`; do

apt-get autoremove -y && apt-get purge $PURGEKERNEL -y

done
PKumar
источник
Работал отлично, даже когда я не мог сделать ответ «Paradiesstaub» из командной строки.
дерзкий
Я получаю "Отказано в доступе" ...
Ричард Харди