Сразу к делу: EFI-раздел переполнен, когда на нём кончилось место, и обновления ядра или GRUB падают с ошибкой No space left on device. Лечится это в три шага: проверь занятость (df -h /boot), удали старые ядра и мусор (pacman -Rsn linux-lts, ручная зачистка), а если места всё равно не хватает — увеличь раздел через fdisk или gparted. Ниже каждый шаг разобран по порядку.
ESP (EFI System Partition) — маленький FAT32-раздел, на котором лежат загрузчик и ядра. На старых установках его делали размером 100–300 МБ, и этого хватало ровно до момента, пока в /boot не накопилось несколько ядер с initramfs.
Типичные симптомы:
grub-install падает с No space left on device;linux не записывает новый initramfs-linux.img;pacman ругается на ошибку записи при обновлении ядра;grub-mkconfig отрабатывает, но новые ядра не попадают в меню.Проверка занимает одну команду:
df -h /boot
Если строка /boot показывает 100% занятости — диагноз подтверждён. Если ESP смонтирована в /efi, смотри её:
df -h /efi
Заодно проверь, куда вообще смонтирована ESP:
findmnt /boot
На старых установках ESP монтируют в /boot — тогда ядра лежат прямо на ней. На новых — в /efi, а ядра и initramfs живут на корневом разделе. Во втором случае переполнение ESP почти невозможно, но загрузчик всё равно может не влезть, если раздел совсем крошечный.
Посмотри содержимое:
ls -lh /boot
du -sh /boot/*
Главные пожиратели места:
vmlinuz-linux + initramfs-linux.img. Плюс к каждому ядру идёт initramfs-linux-fallback.img — ещё один образ на случай сбоя. Три ядра — и половина раздела уже занята./boot/grub.bak и /boot/grub.prev — полные копии каталога grub, по десятку мегабайт каждая. Они нужны для отката, но после пары обновлений превращаются в мусор.EFI/. Если загрузчик переустанавливали несколько раз, в EFI/ копятся EFI/Arch, EFI/GRUB, EFI/refind, а при dualboot ещё и EFI/Microsoft. Каждый каталог — отдельная копия загрузчика со своими файлами./boot, и при частых обновлениях их набирается десяток./boot остаются временные файлы от сканирования других систем. Они мелкие, но в сумме с остальным добивают раздел.Сначала посмотри, какие ядра установлены:
pacman -Q linux linux-lts linux-zen
Команда покажет версии установленных ядер. Те, что не используешь, удаляй через pacman — так удалятся и vmlinuz, и initramfs, и хуки mkinitcpio:
pacman -Rsn linux-lts
Флаг -s убирает зависимости, -n — не сохраняет конфиги. После удаления перегенерируй конфиг GRUB:
grub-mkconfig -o /boot/grub/grub.cfg
Какое ядро оставить, а какое выкинуть — разобрано в статье «Какое ядро выбрать: linux, linux-lts, linux-zen или hardened». Если в меню GRUB накопилось много ядер — смотри «Несколько ядер в меню: linux, linux-lts, hardened».
ls -d /boot/grub.bak /boot/grub.prev 2>/dev/null
Если каталоги есть и ты уверен, что текущий /boot/grub рабочий — удаляй:
rm -rf /boot/grub.bak /boot/grub.prev
Про откат GRUB на случай, если свежая версия сломает загрузку, — в статье «Откат обновления GRUB».
ls /boot/EFI
Типичная картина: Arch, GRUB, Microsoft, refind. Оставь только то, чем реально пользуешься. EFI/Microsoft не трогай, если в системе есть Windows — удаление сломает её загрузку. Лишние каталоги удаляй:
rm -rf /boot/EFI/refind
ls -lh /boot
Если в /boot валяются файлы, которых ты не создавал (например, остатки os-prober или старые образы), — удали их. Главное — не трогай vmlinuz-*, initramfs-* и каталог grub, пока не разобрался, что к чему.
Если ESP на btrfs и включён snap-pac, посмотри список снапшотов:
snapper -c root list
Старые снапшоты удаляются через snapper delete. Про настройку btrfs со снапшотами — в статье «Установка Arch Linux с btrfs и снапшотами».
Если после чистки места всё равно мало — раздел нужно растить. ESP обязана быть FAT32, минимальный размер — 300 МБ, но ArchWiki рекомендует сразу делать её в 1 ГБ.
Проще всего это сделать в gparted (графический инструмент):
Уменьшать раздел лучше с live-USB, чтобы он не был смонтирован. Перед операцией проверь файловую систему соседнего раздела — gparted сам предложит это сделать.
Из консоли — через fdisk:
fdisk /dev/nvme0n1
Внутри: p — посмотреть таблицу разделов, d — удалить раздел ESP, n — создать заново с тем же номером и большим размером, t — выставить тип EFI System, w — записать. После этого пересоздай файловую систему и верни файлы:
mkfs.fat -F32 /dev/nvme0n1p1
mount /dev/nvme0n1p1 /mnt
cp -a /boot/. /mnt/
И переустанови загрузчик:
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg
Внимание: fdisk-метод удаляет раздел. Если ошибиться с номером — потеряешь файлы. Перед работой сделай резервную копию /boot на флешку.
После пересоздания раздела проверь, что файлы на месте, и перезагрузись. Если GRUB не стартует — загрузись с live-USB и повтори grub-install из chroot, как описано в статье «grub rescue: что делать».
Если рядом нет места, чтобы растянуть ESP, проще создать новый раздел побольше и перенести содержимое.
fdisk или gparted.mkfs.fat -F32 /dev/nvme0n1p4
mount /dev/nvme0n1p1 /mnt/old
mount /dev/nvme0n1p4 /mnt/new
cp -a /mnt/old/. /mnt/new/
/etc/fstab — подставь UUID нового раздела:blkid /dev/nvme0n1p4
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg
Вместо cp -a можно склонировать раздел целиком через dd — тогда UUID переедет вместе с файлами, и fstab править не придётся. Минус в том, что dd копирует и пустое место, так что на маленькой ESP это лишняя трата времени.
Главное правило — не копить ядра. Держи одно-два ядра, остальные удаляй сразу после обновления.
Для пакетов ядра удобно использовать paccache — он чистит старые версии из кэша pacman:
paccache -rk1
Флаг -r удаляет старые версии, -k1 оставляет одну последнюю. Для ядер этого достаточно: свежая версия уже установлена, а откатиться можно через pacman -U из кэша.
Раз в пару месяцев заглядывай в /boot:
ls -lh /boot
Если видишь лишнее — чисти сразу, пока раздел не заполнился до отказа. После каждого обновления ядра тоже проверяй, что старые файлы не остались висеть. Про общий случай, когда заполняется корневой раздел, — в статье «Корневой раздел заполняется: что делать».
Можно, но pacman будет считать пакет установленным и при следующем обновлении вернёт файлы. Правильный путь — pacman -Rsn linux-lts: так удалятся и пакет, и файлы, и хуки.
Удали одно лишнее ядро через pacman -Rsn, затем grub-mkconfig -o /boot/grub/grub.cfg. Если ядер нет — удали /boot/grub.bak и /boot/grub.prev. После этого grub-install пройдёт.
Достаточно одного рабочего ядра и одного запасного (например, linux + linux-lts). Остальные — мёртвый груз: каждое занимает место на ESP и удлиняет меню GRUB.
Да, это современный стандарт: ядра и initramfs тогда лежат на корневом разделе, а на ESP — только загрузчик. Место на ESP перестаёт быть узким местом. Но это отдельная миграция, в рамках этой статьи не разбирается.
Windows перестанет загружаться. Если Windows не нужна — удаляй, но сначала убедись, что не планируешь возвращаться к dualboot.
Переполненный EFI-раздел — не поломка, а следствие накопленного мусора. Проверь df -h /boot, удали лишние ядра через pacman -Rsn, зачисти резервные копии GRUB и дубли в EFI/. Если места не хватает даже после чистки — увеличь раздел через gparted или fdisk, либо перенеси ESP на новый раздел. А чтобы не возвращаться к этой проблеме, держи одно-два ядра и раз в пару месяцев заглядывай в /boot.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии