EFI-раздел переполнен: чистка и рост
Коротко: EFI-раздел переполнен, когда на нём кончилось место, и обновления ядра или GRUB падают с ошибкой No space left on device. Лечится это в три шага: проверь занятость (df -h /boot), удали старые ядра и мусор (pacman -Rsn linux-lts, ручная зачистка), а если места всё равно не хватает, увеличь раздел через fdisk или gparted. Ниже каждый шаг разобран по порядку.
Как понять, что EFI-раздел переполнен?
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 почти невозможно, но загрузчик всё равно может не влезть, если раздел совсем крошечный.
Что занимает место на ESP?
Посмотри содержимое:
ls -lh /boot
du -sh /boot/*
Главные пожиратели места:
- Старые ядра. Каждое ядро с initramfs занимает порядка сотни мегабайт:
vmlinuz-linux+initramfs-linux.img. Плюс к каждому ядру идётinitramfs-linux-fallback.img: ещё один образ на случай сбоя. Три ядра, и половина раздела уже занята. - Резервные копии GRUB. После обновления GRUB оставляет
/boot/grub.bakи/boot/grub.prev: полные копии каталогаgrub, по десятку мегабайт каждая. Они нужны для отката, но после пары обновлений превращаются в мусор. - Дубли в
EFI/. Если загрузчик переустанавливали несколько раз, вEFI/копятсяEFI/Arch,EFI/GRUB,EFI/refind, а при dualboot ещё иEFI/Microsoft. Каждый каталог: отдельная копия загрузчика со своими файлами. - Снапшоты. Если ESP сделана на btrfs и включён snap-pac, снапшоты тоже съедают место. Каждый снапшот хранит копии файлов
/boot, и при частых обновлениях их набирается десяток. - Остатки os-prober. Иногда в
/bootостаются временные файлы от сканирования других систем. Они мелкие, но в сумме с остальным добивают раздел.
Как почистить EFI-раздел?
Удали лишние ядра через pacman
Сначала посмотри, какие ядра установлены:
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».
Удали старые резервные копии GRUB
ls -d /boot/grub.bak /boot/grub.prev 2>/dev/null
Если каталоги есть и ты уверен, что текущий /boot/grub рабочий, удаляй:
rm -rf /boot/grub.bak /boot/grub.prev
Про откат GRUB на случай, если свежая версия сломает загрузку, в статье «Откат обновления GRUB».
Разберись с дублями в EFI/
ls /boot/EFI
Типичная картина: Arch, GRUB, Microsoft, refind. Оставь только то, чем реально пользуешься. EFI/Microsoft не трогай, если в системе есть Windows, удаление сломает её загрузку. Лишние каталоги удаляй:
rm -rf /boot/EFI/refind
Удали случайные файлы
ls -lh /boot
Если в /boot валяются файлы, которых ты не создавал (например, остатки os-prober или старые образы), удали их. Главное, не трогай vmlinuz-*, initramfs-* и каталог grub, пока не разобрался, что к чему.
Проверь снапшоты на btrfs
Если ESP на btrfs и включён snap-pac, посмотри список снапшотов:
snapper -c root list
Старые снапшоты удаляются через snapper delete. Про настройку btrfs со снапшотами в статье «Установка Arch Linux с btrfs и снапшотами».
Как увеличить EFI-раздел?
Если после чистки места всё равно мало, раздел нужно растить. ESP обязана быть FAT32, минимальный размер: 300 МБ, но ArchWiki рекомендует сразу делать её в 1 ГБ.
Проще всего это сделать в gparted (графический инструмент):
- Уменьши соседний раздел, освободив место сразу после ESP. Выдели его, выбери «Resize/Move» и потяни правую границу влево.
- Выдели ESP и растяни её на свободное место: «Resize/Move» и тяни правую границу вправо.
- Нажми «Apply» и дождись завершения.
Уменьшать раздел лучше с 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 на больший раздел?
Если рядом нет места, чтобы растянуть ESP, проще создать новый раздел побольше и перенести содержимое.
- Создай новый раздел (например, 1 ГБ) в конце диска через
fdiskилиgparted. - Сделай на нём FAT32:
mkfs.fat -F32 /dev/nvme0n1p4
- Скопируй файлы со старой ESP:
mount /dev/nvme0n1p1 /mnt/old
mount /dev/nvme0n1p4 /mnt/new
cp -a /mnt/old/. /mnt/new/
- Обнови
/etc/fstab, подставь UUID нового раздела:
blkid /dev/nvme0n1p4
- Переустанови GRUB с указанием нового раздела и перегенерируй конфиг:
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
Если видишь лишнее, чисти сразу, пока раздел не заполнился до отказа. После каждого обновления ядра тоже проверяй, что старые файлы не остались висеть. Про общий случай, когда заполняется корневой раздел, в статье «Корневой раздел заполняется: что делать».
Частые вопросы
Можно ли просто удалить файлы ядра вручную из /boot?
Можно, но pacman будет считать пакет установленным и при следующем обновлении вернёт файлы. Правильный путь, pacman -Rsn linux-lts: так удалятся и пакет, и файлы, и хуки.
Что делать, если grub-install падает с No space left on device прямо сейчас?
Удали одно лишнее ядро через pacman -Rsn, затем grub-mkconfig -o /boot/grub/grub.cfg. Если ядер нет, удали /boot/grub.bak и /boot/grub.prev. Затем grub-install пройдёт.
Нужно ли хранить несколько ядер?
Достаточно одного рабочего ядра и одного запасного (например, linux + linux-lts). Остальные, мёртвый груз: каждое занимает место на ESP и удлиняет меню GRUB.
Можно ли смонтировать ESP в /efi вместо /boot?
Да, это современный стандарт: ядра и initramfs тогда лежат на корневом разделе, а на ESP только загрузчик. Место на ESP перестаёт быть узким местом. Но это отдельная миграция, в рамках этой статьи не разбирается.
Что будет, если удалить EFI/Microsoft?
Windows перестанет загружаться. Если Windows не нужна, удаляй, но сначала убедись, что не планируешь возвращаться к dualboot.
Полезные ресурсы
- EFI system partition, ArchWiki: требования к размеру и разметке ESP.
- Pacman/Tips and tricks, ArchWiki: paccache и другие приёмы чистки.
Заключение
Переполненный EFI-раздел: не поломка, а следствие накопленного мусора. Проверь df -h /boot, удали лишние ядра через pacman -Rsn, зачисти резервные копии GRUB и дубли в EFI/. Если места не хватает даже после чистки, увеличь раздел через gparted или fdisk, либо перенеси ESP на новый раздел. А чтобы не возвращаться к этой проблеме, держи одно-два ядра и раз в пару месяцев заглядывай в /boot.
Не получилось? Поможем настроить
Задай вопрос в чате — отвечаем быстро, по делу и без воды.

Комментарии