Ошибка apt в Pop!_OS из-за “Нет места на устройстве” для /boot/efi.

Вопрос или проблема

Ошибка apt в Pop!_OS из-за “Нет места на устройстве” для /boot/efi.

С утра я в основном не могу использовать apt, так как все вызовы приводят к ошибке: kernelstub.Installer : ERROR Не удалось скопировать initrd на ESP!. Я использую Pop!_OS на основе Ubuntu 20.04.2 LTS x86_64. Судя по трассировке стека, проблема следующая:

OSError: [Errno 28] На устройстве нет места: '/boot/initrd.img-5.11.0-7614-generic' -> '/boot/efi/EFI/Ubuntu-22666039-42da-4b29-8575-b464fa505439/initrd.img'

Я попытался удалить старые ядра, используя sudo apt-get autoremove linux-image-5.11.0-7612-generic, как было предложено здесь, и sudo apt --purge autoremove, как было предложено здесь. В обоих случаях попытка обновления заканчивается неудачей.

Вот полный вызов:

update-initramfs: Генерация /boot/initrd.img-5.11.0-7614-generic
cryptsetup: WARNING: Цель восстановления cryptswap использует ключевой файл
kernelstub.Config    : INFO     Ищем конфигурацию...
kernelstub           : INFO     Система информации:

    ОС:..................Ubuntu 20.04
    Корневая раздел:....../dev/nvme0n1p3
    UUID корневой FS:........22666039-42da-4b29-8575-b464fa505439
    Путь к ESP:............/boot/efi
    Раздел ESP:......./dev/nvme0n1p1
    Номер раздела ESP:.....1
    Номер записи NVRAM:.......-1
    Номер переменной загрузки:.....0000
    Опции загрузки ядра:.quiet loglevel=0 systemd.show_status=false splash
    Путь к образу ядра:.../boot/vmlinuz-5.11.0-7614-generic
    Путь к образу Initrd:.../boot/initrd.img-5.11.0-7614-generic
    Принудительное перезапись:.....False

kernelstub.Installer : INFO     Копирование ядра в ESP
kernelstub.Installer : INFO     Копирование initrd.img в ESP
kernelstub.Installer : ERROR    Не удалось скопировать initrd на ESP!
Это критическая ошибка, и мы не можем продолжать. Проверьте свои настройки на наличие опечаток. В противном случае проверьте разрешения и попробуйте снова.
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/kernelstub/installer.py", line 247, in copy_files
    shutil.copy(src, dest)
  File "/usr/lib/python3.8/shutil.py", line 415, in copy
    copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "/usr/lib/python3.8/shutil.py", line 272, in copyfile
    _fastcopy_sendfile(fsrc, fdst)
  File "/usr/lib/python3.8/shutil.py", line 163, in _fastcopy_sendfile
    raise err from None
  File "/usr/lib/python3.8/shutil.py", line 149, in _fastcopy_sendfile
    sent = os.sendfile(outfd, infd, offset, blocksize)
OSError: [Errno 28] На устройстве нет места: '/boot/initrd.img-5.11.0-7614-generic' -> '/boot/efi/EFI/Ubuntu-22666039-42da-4b29-8575-b464fa505439/initrd.img'

Вот вывод df -H:

Файловая система      Размер  Использовано Доступно Использ % Смонтировано на
udev                     17G     0   17G   0% /dev
tmpfs                   3.4G  4.2M  3.4G   1% /run
/dev/nvme0n1p3        483G  226G  233G  50% /
tmpfs                    17G  128M   17G   1% /dev/shm
tmpfs                   5.3M     0  5.3M   0% /run/lock
tmpfs                    17G     0   17G   0% /sys/fs/cgroup
/dev/loop0               34M   34M     0 100% /snap/snapd/11402
/dev/loop2               34M   34M     0 100% /snap/snapd/11588
/dev/loop1               59M   59M     0 100% /snap/core18/1988
/dev/loop3               59M   59M     0 100% /snap/core18/1997
/dev/nvme0n1p2        4.3G  2.6G  1.8G  60% /recovery
/dev/nvme0n1p1        522M  522M     0 100% /boot/efi
/dev/sda1             984G  910G   25G  98% /mnt/data
tmpfs                   3.4G   25k  3.4G   1% /run/user/1000

А вот ядра:

sudo dpkg --list | egrep -i --color 'linux-image|linux-headers'
ii  linux-headers-5.11.0-7612                     5.11.0-7612.13~1617215757~20.04~97a8d1a                   all          Загрузочные файлы, относящиеся к версии ядра Linux 5.11.0
ii  linux-headers-5.11.0-7612-generic             5.11.0-7612.13~1617215757~20.04~97a8d1a                   amd64        Заголовки ядра Linux для версии 5.11.0 на 64-разрядной x86 SMP
ii  linux-headers-5.11.0-7614                     5.11.0-7614.15~1618626693~20.04~ecb25cd                   all          Загрузочные файлы, относящиеся к версии ядра Linux 5.11.0
ii  linux-headers-5.11.0-7614-generic             5.11.0-7614.15~1618626693~20.04~ecb25cd                   amd64        Заголовки ядра Linux для версии 5.11.0 на 64-разрядной x86 SMP
ii  linux-headers-5.8.0-7642                      5.8.0-7642.47~1614007149~20.04~82fb226                    all          Загрузочные файлы, относящиеся к версии ядра Linux 5.8.0
ii  linux-headers-5.8.0-7642-generic              5.8.0-7642.47~1614007149~20.04~82fb226                    amd64        Заголовки ядра Linux для версии 5.8.0 на 64-разрядной x86 SMP
ii  linux-headers-generic                         5.11.0.7614.15~1618626693~20.04~ecb25cd                   amd64        Заголовки общего ядра Linux
rc  linux-image-5.11.0-7612-generic               5.11.0-7612.13~1617215757~20.04~97a8d1a                   amd64        Образ ядра Linux для версии 5.11.0 на 64-разрядной x86 SMP
ii  linux-image-5.11.0-7614-generic               5.11.0-7614.15~1618626693~20.04~ecb25cd                   amd64        Образ ядра Linux для версии 5.11.0 на 64-разрядной x86 SMP
rc  linux-image-5.4.0-7642-generic                5.4.0-7642.46~1598628707~20.04~040157c                    amd64        Образ ядра Linux для версии 5.4.0 на 64-разрядной x86 SMP
rc  linux-image-5.8.0-7630-generic                5.8.0-7630.32~1609193707~20.04~781bb80                    amd64        Образ ядра Linux для версии 5.8.0 на 64-разрядной x86 SMP
rc  linux-image-5.8.0-7642-generic                5.8.0-7642.47~1614007149~20.04~82fb226                    amd64        Образ ядра Linux для версии 5.8.0 на 64-разрядной x86 SMP
ii  linux-image-generic                           5.11.0.7614.15~1618626693~20.04~ecb25cd                   amd64        Образ общего ядра Linux

Есть идеи, как это исправить?

Я только что нашел решение здесь. Проблема заключалась в том, что /boot/efi/EFI было полностью заполнено. Я публикую это здесь, так как связанный ответ не был принят и получил отрицательные оценки. Но это решило мою проблему.

В основном я использовал:

sudo su
cd /boot/efi/EFI
ls

Это обнаружило папку с именем Ubuntu-22666039-42da-4b29-8575-b464fa505439. Поскольку я использую Pop!_OS, я предположил, что она мне не нужна в папке EFI, поэтому я переместил ее:

mv Ubuntu-22666039-42da-4b29-8575-b464fa505439 /home/johannes/Downloads/backup/

Если возникнут проблемы, я смогу вернуть ее обратно, но сейчас все работает нормально.

Ответ или решение

Проблема, с которой вы столкнулись, возникает из-за исчерпания места на разделе EFI (EFI System Partition, ESP), который находится в директории /boot/efi. Это происходит в основном из-за того, что в этой папке накапливаются старые файлы и каталоги, связанные с устаревшими версиями ядра.

Шаги для решения проблемы

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

    df -H

    Если вы видите, что раздел /boot/efi заполнен на 100%, вам следует удалить старые файлы.

  2. Переход в директорию /boot/efi/EFI:
    Используйте команду, чтобы перейти в нужный каталог:

    cd /boot/efi/EFI
  3. Просмотр содержимого:
    Просмотрите содержимое директории, чтобы идентифицировать устаревшие файлы:

    ls
  4. Перемещение или удаление старых папок:
    Если вы видите папку, связанную с предыдущими установками системы, как, например, Ubuntu-22666039-42da-4b29-8575-b464fa505439, вы можете переместить ее в безопасное место на вашем основном разделе (например, в директорию Downloads), чтобы освободить место. Это можно сделать с помощью команд:

    sudo mv Ubuntu-22666039-42da-4b29-8575-b464fa505439 ~/Downloads/backup/

    Если вы хотите удалить папку, вместо перемещения используйте:

    sudo rm -rf Ubuntu-22666039-42da-4b29-8575-b464fa505439
  5. Проверка после удаления:
    После удаления или перемещения старых файлов вернитесь к обновлению системы и проверьте, исчезла ли ошибка. Вы можете попробовать снова выполнить команду:

    sudo apt update
    sudo apt upgrade
  6. Удаление старых версий ядра (при необходимости):
    Чтобы дополнительно освободить место на основном разделе, вы можете удалить старые версии ядра. Для этого используйте следующие команды:

    sudo apt-get autoremove --purge

Заключение

Данная последовательность действий должна помочь вам решить проблемы с нехваткой места на разделах /boot/efi. Если вы столкнётесь с какими-либо проблемами или ошибками, не стесняйтесь искать помощь на форумах или в сообществе, посвящённом вашему дистрибутиву. Убедитесь также, что вы делаете резервные копии важных данных перед удалением любых файлов.

Оцените материал
Добавить комментарий

Капча загружается...