Назад | Перейти на главную страницу

`nixos-rebuild switch` завершается с ошибкой" На устройстве не осталось места "

Я продолжаю наполняться /boot со старыми ядрами, после чего nixos-rebuild switch --upgrade загрузит кучу производных только для того, чтобы в конечном итоге выйти из строя при установке нового ядра (или initrd), потому что на нем недостаточно места /boot.

Один из вариантов - запустить nix-collect-garbage -d, но это может быть очень медленным и может привести к необходимости заново загружать новые загруженные версии.

Иногда кажется, что помогает удаление старых ядер (пока /boot заполняется снова), в то время как в других случаях вручную выбирая несколько поколений для удаления из ls /nix/var/nix/profiles/system-??-link работал лучше.

Есть ли лучший подход к /boot заправка? (Особенно когда я хочу обновить и сразу же использовать новую систему.)

Есть давний отчет об ошибке об этой проблеме, когда /boot заполняет. Ситуация улучшилась, но чтение всех комментариев требует времени, поэтому я попытаюсь подвести итог.

Если вы используете GRUB, устанавливать boot.loader.grub.configurationLimit = 42; (или выберите лучшее число в зависимости от того, сколько у вас места в /boot), так что старые ядра будут автоматически очищены. Существующие старые ядра будут очищены на следующем nixos-rebuild switch, хотя вам может потребоваться сначала удалить некоторые вручную, поскольку install-grub.pl сценарий сначала попытается скопировать новые ядра перед удалением старых.

Если вы используете systemd-boot (ранее Gummiboot), начиная с NixOS 19.03 (спасибо domenkozar), устанавливать boot.loader.systemd-boot.configurationLimit = 42; (или выберите подходящее число в зависимости от того, сколько у вас места в /boot), а следующий nixos-rebuild switch должен автоматически очищать старые ядра.

Обратите внимание, что вы захотите запустить nix-collect-garbage в конце концов, до (или когда) /nix заполняет. Его также можно настроить на автоматический запуск, установив nix.gc.automatic = true и связанные варианты.