Поиск ошибок и различных проблем. Помощь в решении
Ubuntu ошибка при обновлении ядра
🔍 Простой поиск по базе знаний
Практически все провайдеры VPS/VDS использующие виртуализацию KVM предоставляют пользователям виртуальные машины с директорией /boot в отдельном разделе и практически все выделяют под этот раздел 92M.
Хорошо это или плохо — сейчас говорить не будем, так как в сети достаточно споров по этому поводу. Но одно неудобство налицо — нужно ручками убирать старые ядра, так как
sudo apt-get autoremove
в этом случае не работает.
Убедиться в такой разбавке диска и посмотреть свободное место для /boot можно командой df:
В этом случае диск (раздел) /dev/vda1 размером 92M смонтирован в /boot. Посмотрим сколько там сейчас ядер:
$ ls /boot
abi-3.13.0-39-generic config-3.13.0-39-generic grub initrd.img-3.13.0-39-generic lost+found System.map-3.13.0-39-generic vmlinuz-3.13.0-39-generic
Сейчас там одно ядро — 3.13.0-39 занимающее 35M. Еще одно обновление ядра сделать можно, но при следующем на
sudo apt-get dist-upgrade
выдается ошибка, что-то вроде:
Not enough free disk space. The upgrade needs a total of 34,6 M free space on disk ‘/boot’. Please free at least an additional 8 859 k of disk space on ‘/boot’. Empty your trash and remove temporary packages of former installations using ’sudo apt-get clean’.
Можно конечно руками почистить все лишние файлы, но проще и надежнее удалить средствами системы (apt-get) все, что относится к предыдущему ядру:
После удаления предыдущих ядер, появится предупреждение, что-то типа:
you may need to re-run your boot loader[grub]
Нужно обновить (перестроить) загрузчик grub:
sudo update-grub
В принципе можно не дожидаться сообщения об ошибке, а делать эту процедуру после каждого обновления ядра и перезагрузки (это обязательно — иначе удалится новое ядро!!!).
Тема: Не устанавливает новое ядро и не удаляет старое ядро (Прочитано 1105 раз)
0 Пользователей и 1 Гость просматривают эту тему.
MaXFe
Здравствуйте! Недавно такая проблема возникла на Ubuntu 20.04. После попытки обновления ядра до 5.4.0-78 и перезагрузки система отказывалась загружаться, загружалась как-то странно только с 5.4.0-74, но потом после запуска системы показывало, что установлено 5.4.0-75 и всегда теперь просит удалить старое ядро 5.4.0-74, но не получается, выдает ошибку такую:
root@server:/home/server# apt-get autoremove Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: linux-image-5.4.0-74-generic 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. 1 not fully installed or removed. After this operation, 11.8 MB disk space will be freed. Do you want to continue? [Y/n] Y (Reading database ... 252225 files and directories currently installed.) Removing linux-image-5.4.0-74-generic (5.4.0-74.83) ... Failed to create or replace /boot/vmlinuz.old: Structure needs cleaning at /usr/bin/linux-update-symlinks line 72. dpkg: error processing package linux-image-5.4.0-74-generic (--remove): installed linux-image-5.4.0-74-generic package post-removal script subprocess returned error exit status 117 dpkg: too many errors, stopping Errors were encountered while processing: linux-image-5.4.0-74-generic Processing was halted because there were too many errors. E: Sub-process /usr/bin/dpkg returned an error code (1) Как это исправить? Также это мешает теперь установить и другие программы. И ещё теперь больше почему то не показывает, что есть новое ядро для загрузки и установки 5.4.0-78
Ещё выдает это du -ah /boot/:
du: cannot access '/boot/vmlinuz-5.4.0-78-generic': Structure needs cleaning du: cannot access '/boot/vmlinuz.old': Structure needs cleaning
« Последнее редактирование: 27 Июня 2021, 11:37:18 от MaXFe »
Что именно объяснить? Выше же написал и указал ошибку, не получается удалить старое ядро «linux-image-5.4.0-74-generic» и не получается установить новое ядро «du: cannot access ‘/boot/vmlinuz-5.4.0-78-generic’: Structure needs cleaning»
shamanhuev
Что именно объяснить?
Необьяснимую привычку работать от рута. Загрузиться с флешки или из режима восстановления и сделать fsck .
MaXFe
Все, пофиксилось, прошелся fsck.
Необьяснимую привычку работать от рута.
Это называется уже ломик взял в руки и пошел решать проблему, но увы не помогло тот раз. Обычно не из под рута работаю.
Heider
Вроде пишет, что не может симлинк на старое ядро обновить. Там у Вам переполнение, наверное (Structure needs cleaning). /boot, случаем, не на отдельном разделе расположен? Покажите:
I’ve gone to upgrade my machine as I do every day and I’ve received the following errors:
$ sudo apt-get update && sudo apt-get upgrade
Hit:1 http://ftp.uk.debian.org/debian buster InRelease
Hit:2 http://security.debian.org/debian-security buster/updates InRelease
Hit:3 http://ftp.uk.debian.org/debian buster-updates InRelease
Hit:4 https://updates.signal.org/desktop/apt xenial InRelease
Hit:5 https://packagecloud.io/AtomEditor/atom/any any InRelease
Reading package lists... Done
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Setting up linux-image-4.19.0-8-amd64 (4.19.98-1+deb10u1) ...
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-4.19.0-8-amd64
pigz: abort: write error on <stdout> (No space left on device)
E: mkinitramfs failure cpio 141 pigz 28
update-initramfs: failed for /boot/initrd.img-4.19.0-8-amd64 with 1.
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
dpkg: error processing package linux-image-4.19.0-8-amd64 (--configure):
installed linux-image-4.19.0-8-amd64 package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
linux-image-4.19.0-8-amd64
needrestart is being skipped since dpkg has failed
E: Sub-process /usr/bin/dpkg returned an error code (1)
I believe the following line might be the cause of the issue, but I’m unsure how to fix:
pigz: abort: write error on <stdout> (No space left on device)
Приветствую. Перестало обновляться ядро системы, хедеры тянет нормально, а вот самих кернелов нет в списке на обновление. sudo apt-get update && sudo apt-get upgrade — не решает…
Репозитории стоят стоковые, добавлены только репы коньков, кайро-дока, вайна, вебмина… Ничего такого, что могло повредить обновление ядра…
Помогите разобраться с проблемой. Спасибо откликнувшимся!
0
dyug — 26 Май, 2013 — 17:15
вывод «sudo apt-get upgrade», точнее, начало его в студию под кат.
но прежде стоит попробовать sudo apt-get dist-upgrade
скорее всего ему нужно поставить новые пакеты, которые не установлены, а apt-get upgrade не соглашается это делать.
ответить
делается все вместе:
1. обновляет индексные файлы, кэш и показзывает работающие репы
2. собственно производит обновление.
ответить
+1
dyug — 26 Май, 2013 — 21:18
Извини, ты кому и что сейчас говорил? Мне? Тогда я тебя пожалуй еще раз пошлю чего либо почитать, но в данном случае не о пакерах виндовс бинарников, а о понимании и разнице процесса выполняемых по apt-get upgrade и по apt-get dist-upgrade
ответить
Прошу прощения, температурю, пакет linux-image-generic не стоял…
ответить
0
dyug — 26 Май, 2013 — 20:14
А куда он делся? он по умолчанию ставится.
ответить
0
surok — 30 Май, 2013 — 08:37
Всем привет! По ядрам вопрос. Ведь должны оставаться последние два, правильно? Сегодня в Мионе посмотрела — еще одно осталось после чистки системы. Сижу думаю — удалить? Или оно нужно, раз осталось? Вот
Развернуть/свернуть скрытый текст.
ответить
Я бы предложил не париться, пока место на /boot или / не станет заканчиваться.
ответить
+1
surok — 30 Май, 2013 — 08:52
Вопрос снят, помогло опять вот
Развернуть/свернуть скрытый текст.
OLD=$(ls -tr /boot/vmlinuz-* | head -n -2 | cut -d- -f2- | \
awk ‘»‘»‘{print «linux-image-» $0}'»‘»‘ )
if [ -n «$OLD» ]; then
sudo apt-get -qy remove —purge $OLD
fi
sudo apt-get -qy autoremove —purge
, это что раньше мне товарищ dm подсказывал. Осталось два последних ядра.
ответить
Загружаемся с нужным ядром (последней версии или стабильным) и выполняем данный код в консоле: dpkg -l | grep ii | awk '{print $2}' | grep -E 'linux-(image|headers|ubuntu-modules|restricted-modules)' | grep -vE 'linux-(image|headers|restricted-modules)-(generic|i386|server|common|rt|xen)' | grep -v $(uname -r|sed 's/-*[a-z]//g'|sed 's/-386//g') | xargs apt-get -y purge