Я пытаюсь сделать do-release-upgrade
, но затем получаю:
Недостаточно свободного места на диске
Обновление прервано. Для обновления требуется всего 25,7 М свободного места на диске «/ boot». Пожалуйста, освободите как минимум дополнительные 25,7 М дискового пространства в / boot. Очистите корзину и удалите временные пакеты из предыдущих установок, используя sudo apt-get clean.
blockquote>Вывод
df
:237251272 214797108 10402504 96% / udev 488120 4 488116 1% /dev tmpfs 198676 668 198008 1% /run none 5120 0 5120 0% /run/lock none 496684 0 496684 0% /run/shm /dev/sda1 233191 225867 0 100% /boot
Почему при загрузке не осталось места? Вот выходные данные
ls -as /boot
:total 221839 4 . 4 .. 645 abi-2.6.32-34-generic-pae 698 abi-2.6.35-30-generic-pae 727 abi-2.6.38-12-generic-pae 727 abi-3.0.0-12-generic-pae 727 abi-3.0.0-13-generic-pae 727 abi-3.0.0-14-generic-pae 727 abi-3.0.0-15-generic-pae 727 abi-3.0.0-16-generic-pae 727 abi-3.0.0-17-generic-pae 727 abi-3.0.0-19-generic-pae 761 abi-3.0.0-20-generic-pae 115 config-2.6.32-34-generic-pae 128 config-2.6.35-30-generic-pae 136 config-2.6.38-12-generic-pae 140 config-3.0.0-12-generic-pae 140 config-3.0.0-13-generic-pae 140 config-3.0.0-14-generic-pae 140 config-3.0.0-15-generic-pae 140 config-3.0.0-16-generic-pae 140 config-3.0.0-17-generic-pae 140 config-3.0.0-19-generic-pae 140 config-3.0.0-20-generic-pae 5 grub 10773 initrd.img-2.6.32-34-generic-pae 13619 initrd.img-2.6.35-30-generic-pae 15365 initrd.img-2.6.38-12-generic-pae 16481 initrd.img-3.0.0-12-generic-pae 16487 initrd.img-3.0.0-13-generic-pae 16501 initrd.img-3.0.0-14-generic-pae 16476 initrd.img-3.0.0-15-generic-pae 16481 initrd.img-3.0.0-16-generic-pae 16478 initrd.img-3.0.0-17-generic-pae 12 lost+found 174 memtest86+.bin 176 memtest86+_multiboot.bin 1700 System.map-2.6.32-34-generic-pae 1841 System.map-2.6.35-30-generic-pae 2115 System.map-2.6.38-12-generic-pae 2141 System.map-3.0.0-12-generic-pae 2141 System.map-3.0.0-13-generic-pae 2143 System.map-3.0.0-14-generic-pae 2146 System.map-3.0.0-15-generic-pae 2147 System.map-3.0.0-16-generic-pae 2147 System.map-3.0.0-17-generic-pae 2148 System.map-3.0.0-19-generic-pae 2149 System.map-3.0.0-20-generic-pae 2 vmcoreinfo-2.6.32-34-generic-pae 2 vmcoreinfo-2.6.35-30-generic-pae 2 vmcoreinfo-2.6.38-12-generic-pae 2 vmcoreinfo-3.0.0-12-generic-pae 2 vmcoreinfo-3.0.0-13-generic-pae 2 vmcoreinfo-3.0.0-14-generic-pae 2 vmcoreinfo-3.0.0-15-generic-pae 2 vmcoreinfo-3.0.0-16-generic-pae 2 vmcoreinfo-3.0.0-17-generic-pae 2 vmcoreinfo-3.0.0-19-generic-pae 2 vmcoreinfo-3.0.0-20-generic-pae 4092 vmlinuz-2.6.32-34-generic-pae 4347 vmlinuz-2.6.35-30-generic-pae 4567 vmlinuz-2.6.38-12-generic-pae 4675 vmlinuz-3.0.0-12-generic-pae 4676 vmlinuz-3.0.0-13-generic-pae 4681 vmlinuz-3.0.0-14-generic-pae 4698 vmlinuz-3.0.0-15-generic-pae 4700 vmlinuz-3.0.0-16-generic-pae 4700 vmlinuz-3.0.0-17-generic-pae 4703 vmlinuz-3.0.0-19-generic-pae 4705 vmlinuz-3.0.0-20-generic-pae
Выходные данные
uname -a
:Linux kitsch 3.0.0-17-generic-pae #30-Ubuntu SMP Thu Mar 8 17:53:35 UTC 2012 i686 i686 i386 GNU/Linux
Ваш раздел / boot заполнен старыми ядрами. Иногда это происходит, но не знаю, почему это никогда не исправляется. Вы можете легко удалить старые ядра, если знаете, какие пакеты они входили.
Сначала проверьте uname -a
, чтобы проверить свою текущую версию.
Затем выполните следующую команду:
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'
Эта команда перечислит все пакеты, которые вам больше не нужны. Мне не нравится удалять их автоматически, мне нравится контролировать процесс удаления ядер. Итак, для каждого указанного пакета выполните следующие действия:
sudo apt-get -y purge some-kernel-package
Это промежуточное сообщение более подробно описывает, как работают команды, и пытается исправить проблему с linux-libc-dev: amd64
. Большинство пользователей могут пропустить этот абзац.
dpkg -l 'linux - *'
перечисляет все пакеты, имена которых начинаются с 'linux -' sed '/ ^ ii /! D; удалите все строки, которые * не * начинаются с
ii` uname -r | sed "s /\(.*\)-\([^ 0-9] \ + \) / \ 1 /"
найти текущую версию ядра / '"$ (uname -r | sed "s /\(.*\)-\([^ 0-9] \ + \) / \ 1 /") "'/ d
Удалите все строки, кроме тех, которые содержат номер текущей запущенной версии ядра s / ^ [^] * [^] * \ ([^] * \). * / \ 1 /
Для каждой строки перечисляется только имя пакета / [0-9] /! D
Удалите строки, не содержащие чисел. Чтобы исправить проблему Фредерика Норда Я думаю, что команда может быть изменена следующим образом:
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d;/^linux-\(headers\|image\)/!d'
По сути, она добавляет дополнительный фильтр:
linux-headers
или linux-image
Где some-kernel -package
можно заменить одним из перечисленных пакетов. Просто будьте осторожны, не удаляйте пакеты ядра, которые используются в данный момент (как указано в uname -a
), например. sudo apt-get purge -y linux-headers-3.0.0-12
и т. Д.
Это можно автоматизировать с помощью команды xargs, но мне это не нравится. Это личное дело. Однако вот команда для этого:
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
Вот как выглядит мой / boot
, одно запасное ядро (2.6.38-11) на всякий случай и текущее 3.2.0-24:
$ ls -l /boot
total 59388
-rw-r--r-- 1 root root 730545 Sep 13 2011 abi-2.6.38-11-generic
-rw-r--r-- 1 root root 791023 Apr 25 13:51 abi-3.2.0-24-generic
-rw-r--r-- 1 root root 130326 Sep 13 2011 config-2.6.38-11-generic
-rw-r--r-- 1 root root 140341 Apr 25 13:51 config-3.2.0-24-generic
drwxr-xr-x 3 root root 5120 May 27 17:46 grub
-rw-r--r-- 1 root root 20883146 Oct 1 2011 initrd.img-2.6.38-11-generic
-rw-r--r-- 1 root root 22474219 May 5 09:04 initrd.img-3.2.0-24-generic
drwxr-xr-x 2 root root 12288 Apr 16 2009 lost+found
-rw-r--r-- 1 root root 176764 Nov 27 11:00 memtest86+.bin
-rw-r--r-- 1 root root 178944 Nov 27 11:00 memtest86+_multiboot.bin
-rw------- 1 root root 2656297 Sep 13 2011 System.map-2.6.38-11-generic
-rw------- 1 root root 2884358 Apr 25 13:51 System.map-3.2.0-24-generic
-rw------- 1 root root 1369 Sep 13 2011 vmcoreinfo-2.6.38-11-generic
-rw------- 1 root root 4526784 Sep 13 2011 vmlinuz-2.6.38-11-generic
-rw------- 1 root root 4965776 Apr 25 13:51 vmlinuz-3.2.0-24-generic
И использование файловой системы:
$ df -h /boot
Filesystem Size Used Avail Use% Mounted
/dev/sda5 228M 63M 154M 29% /boot
sudo apt-get autoremove
помог мне, он успешно очистил все неиспользуемые пакеты ядра.
Для удобства командной строки:
https://github.com/erichs/bootnukem
git clone https://github.com/erichs/bootnukem.git
cd bootnukem
sudo ./install.sh
Затем
sudo bootnukem --dry-run
Работает на Linux Mint 18.3 (на основе Ubuntu 16.04).
sudo apt-get purge $ ( dpkg -l 'linux- *' | sed '/ ^ ii /! d; /' "$ (uname -r | sed" s /\(.*\)-\([^ 0-9] \ + \) / \ 1 / ")" '/ d; s / ^ [^] * [^] * \ ([^] * \). * / \ 1 /; / [0-9] /! D' | head - n -1) --assume-yes
Источник: https://ubuntuforums.org/showthread.php?t=2248846&p=13146650#post13146650
Вы можете легко обрабатывать ядра с помощью диспетчера синаптических пакетов.
Но сначала вы должны знать название текущей версии ядра. Вы можете узнать это, запустив uname -r
в приглашении терминала:
linux@linux-desktop:~$ uname -r
4.4.0-75-generic
Так что по крайней мере эту версию вы не должны трогать. Откройте синаптику и начните заполнять заполнитель быстрого фильтра, как показано ниже:
Теперь вы можете выбрать все пакеты, которые хотите удалить, и выполнить:
Отметить для полного удаления> Применить
Я бы посоветовал оставить хотя бы один последний текущий пакет ядра и одно предыдущее ядро. Например, в этом случае вы можете безопасно избавиться от linux-image-4.4.0-66-generic и linux-image-extra-4.4.0-66-generic , но было бы хорошо оставить 4.4.0-72 и, конечно, 4.4.0-75 .
По сравнению с другими ответами графического интерфейса здесь преимущество этого ответа в том, что собственный Ubuntu Bash используется без установки сторонние приложения.
Zenity предоставляет терминалу удобный графический интерфейс для обработки списка и выбора элементов с помощью переключателей :
Текущее ядро, которое вы загруженные с не могут быть удалены и не включены в список. Сообщается размер, который будет сохранен в каталоге / boot
. Больше сохраняется на вашем диске, потому что двоичные файлы ядра также находятся в других областях. Примечание от 27 июля 2017 г .: Каталоги / usr / src / * kernel_version *
и / lib / modules / * kernel_version *
теперь также включены.
Дата изменения обнаруживается с помощью команды stat
. В моей системе эта дата "затрагивается" каждый раз, когда ядро загружается с помощью этого ( Как узнать, когда в последний раз загружалась конкретная версия ядра? ) cron сценарий перезагрузки. Однако в вашей системе датой будет дата выпуска ядра, а не дата последней загрузки.
apt-get purge
дает вам возможность прервать работу У вас есть последняя возможность просмотреть все, что будут очищены и увидят общее дисковое пространство (несколько вводящее в заблуждение), которое будет восстановлено:
The following packages will be REMOVED:
linux-headers-4.7.1-040701* linux-headers-4.7.1-040701-generic*
linux-headers-4.7.2-040702* linux-headers-4.7.2-040702-generic*
linux-headers-4.7.3-040703* linux-headers-4.7.3-040703-generic*
linux-headers-4.8.1-040801* linux-headers-4.8.1-040801-generic*
linux-headers-4.8.10-040810* linux-headers-4.8.10-040810-generic*
linux-headers-4.8.11-040811* linux-headers-4.8.11-040811-generic*
linux-headers-4.8.4-040804* linux-headers-4.8.4-040804-generic*
linux-headers-4.8.5-040805* linux-headers-4.8.5-040805-generic*
linux-image-4.7.1-040701-generic* linux-image-4.7.2-040702-generic*
linux-image-4.7.3-040703-generic* linux-image-4.8.1-040801-generic*
linux-image-4.8.10-040810-generic* linux-image-4.8.11-040811-generic*
linux-image-4.8.4-040804-generic* linux-image-4.8.5-040805-generic*
0 upgraded, 0 newly installed, 24 to remove and 2 not upgraded.
After this operation, 2,330 MB disk space will be freed.
Do you want to continue? [Y/n]
Скопируйте этот код в исполняемый файл с именем rm-kernels
в / usr / local / bin
:
#!/bin/bash
# NAME: rm-kernels
# PATH: /usr/local/bin
# DESC: Provide zenity item list of kernels to remove
# DATE: Mar 10, 2017. Modified Jul 28, 2017.
# NOTE: Will not delete current kernel.
# With 10 kernels on an SSD, empty cache from sudo prompt (#) using:
# # free && sync && echo 3 > /proc/sys/vm/drop_caches && free
# First time for `du` 34 seconds.
# Second time for `du` 1 second.
# PARM: If any parm 1 passed use REAL kernel size, else use estimated size.
# By default `du` is not used and estimated size is displayed.
# Must be running as sudo
if [[ $(id -u) != 0 ]]; then
zenity --error --text "root access required. Use: sudo rm-kernels"
exit 99
fi
OLDIFS="$IFS"
IFS="|"
choices=()
current_version=$(uname -r)
for f in /boot/vmlinuz*
do
if [[ $f == *"$current_version"* ]]; then continue; fi # skip current version
[[ $f =~ vmlinuz-(.*) ]]
v=${BASH_REMATCH[1]} # example: 4.9.21-040921-generic
v_main="${v%-*}" # example: 4.9.21-040921
# Kernel size in /boot/*4.9.21-040921-generic*
s=$(du -ch /boot/*-$v* | awk '/total/{print $1}')
if [[ $# -ne 0 ]] ; then # Was a parameter passed?
if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
# Kernel headers size in /usr/src/*4.9.21-040921*
s2=$(du -ch --max-depth=1 /usr/src/*-$v_main* | awk '/total/{print $1}')
else
s2="0M" # Linux Headers are not installed
fi
# Kernel image size in /lib/modules/4.9.21-040921-generic*
s3=$(du -ch --max-depth=1 /lib/modules/$v* | awk '/total/{print $1}')
else
# Estimate sizof of optional headers at 125MB and size of image at 220MB
if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
s2="125M"
else
s2="0M" # Linux Headers are not installed
fi
s3="220M"
fi
# Strip out "M" provided by human readable option of du and add 3 sizes together
s=$(( ${s//[^0-9]*} + ${s2//[^0-9]*} + ${s3//[^0-9]*} ))
t=$(( t + s ))
s=$s" MB"
d=$(date --date $(stat -c %y $f) '+%b %d %Y') # Last modified date for display
choices=("${choices[@]}" false "$v" "$d" "$s")
done
# adjust width & height below for your screen 640x480 default for 1920x1080 HD screen
# also adjust font="14" below if blue text is too small or too large
choices=(`zenity \
--title "rm-kernels - Total: $t MB excluding: $current_version" \
--list \
--separator="$IFS" \
--checklist --multiple \
--text '<span foreground="blue" font="14">Check box next to kernel(s) to remove</span>' \
--width=640 \
--height=480 \
--column "Select" \
--column "Kernel Version Number" \
--column "Modified Date" \
--column " Size " \
"${choices[@]}"`)
IFS="$OLDIFS"
i=0
list=""
for choice in "${choices[@]}" ; do
if [ "$i" -gt 0 ]; then list="$list- "; fi # append "-" from last loop
((i++))
short_choice=$(echo $choice | cut -f1-2 -d"-")
header_count=$(find /usr/src/linux-headers-$short_choice* -maxdepth 0 -type d | wc -l)
# If -lowlatency and -generic are purged at same time the _all header directory
# remains on disk for specific version with no -generic or -lowlatency below.
if [[ $header_count -lt 3 ]]; then
# Remove all w.x.y-zzz headers
list="$list""linux-image-$choice- linux-headers-$short_choice"
else
# Remove w.x.y-zzz-flavour header only, ie -generic or -lowlatency
list="$list""linux-image-$choice- linux-headers-$choice"
fi
done
if [ "$i" -gt 0 ] ; then
apt-get purge $list
fi
ПРИМЕЧАНИЕ: Вам необходимо разрешение sudo для создания файла, поэтому используйте:
gksu gedit /usr/local/bin/rm-kernels
Чтобы использовать исполняемый файл:
sudo chmod +x /usr/local/bin/rm-kernels
ПРИМЕЧАНИЕ: Для сервера (на основе текста, не GUI) версию этого скрипта см .: Как удалить старые версии ядра, чтобы очистить меню загрузки?
Расчетный размер каждого ядра был взят из / boot / * версия_ядра *
, которые состояли из 5 файлов общим размером ~ 50 МБ. Формула была изменена и теперь включает файлы в / usr / src / * kernel_version *
и / lib / modules / * kernel_version *
. Расчетный размер для каждого ядра теперь составляет ~ 400 МБ. Приведенный выше код для rm-kernels
и rm-kernels-server
был обновлен. Однако приведенные выше примеры экранов еще не отражают эти изменения.
По умолчанию размер файлов для заголовков linux составляет 125 МБ, а для образа linux - 220 МБ, поскольку du
может быть болезненно медленно, если файлы не находятся в кеше. Чтобы получить реальный размер, используя du
, передайте скрипту любой параметр.
Сумма всех размеров ядра (за исключением текущей запущенной версии, которую нельзя удалить) теперь отображается в строке заголовка.
] Диалоговое окно, используемое для отображения даты последнего доступа каждого ядра . Эта дата может быть перезаписана массово для всех ядер во время резервного копирования или аналогичных операций. В диалоговом окне теперь отображается Дата изменения .
Эквивалент принятого ответа -- другим (возможно) более простым способом является установка инструмента ubuntu-tweak
, его можно скачать с here. Перейдите в "Уборщик" и выберите "Старое ядро" для очистки. Это можно сделать за несколько кликов. (протестировано на рабочем столе 14.04)
У меня была аналогичная проблема, когда я пытался выполнить обновление с помощью Software Updater и для меня
sudo apt full-upgrade
сделали свое дело.