`nixos-rebuild switch` 失败,显示“设备上没有剩余空间”

`nixos-rebuild switch` 失败,显示“设备上没有剩余空间”

我不断填充/boot旧内核,此时nixos-rebuild switch --upgrade会下载一堆派生版本,最终在安装新内核(或 initrd)时失败,因为空间不足/boot

一种选择是运行nix-collect-garbage -d,但这可能非常慢,并且可能导致需要重新下载新下载的版本。

有时删除旧内核似乎有帮助(直到/boot再次填满),而其他时候,手动挑选几代进行删除ls /nix/var/nix/profiles/system-??-link效果更好。

有没有更好的方法来解决/boot填充问题?(特别是当我想立即升级并使用新系统时。)

答案1

长期以来错误报告关于这个问题的评论已经/boot满了。情况已经改善了,但阅读所有评论需要一段时间,所以我将尝试总结一下。

如果你使用 GRUB,设置boot.loader.grub.configurationLimit = 42;(或根据 中的空间大小选择一个更好的数字/boot),以便自动清理较旧的内核。现有的旧内核将在下一次 中被清理nixos-rebuild switch,但您可能需要先手动删除一些,因为安装-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 和相关选项

相关内容