前言 #
NixOS1 是一个声明式配置的系统,整个系统都可以使用声明式的方式来配置。2023 年刚接触 NixOS 的时候,我还不知道 Disko2,系统分区等操作还是需要通过手动执行一些命令来完成。使用了一段时间后我发现了 tmpfs as root 这种玩法,对于我这种有严重强迫症的人来说是极好的,于是把本地的设备都用上了 tmpfs as root。使用了一段时间体验非常好,想着把手里的服务器也换成 NixOS,于是就遇到了这个困扰我几个月的问题。
由于我本地的设备都是 UEFI + systemd-boot 的组合,使用起来一直很正常。但云服务器一般都是 BIOS 启动的,systemd-boot 对于 BIOS 来说有一些问题3,最后选择了 BIOS + GRUB 的组合,这与我本地的配置大不相同。
问题 #
当我执行 rebuild 后就会出现如下报错:
...
updating GRUB 2 menu...
updating GRUB 2 menu...
updating GRUB 2 menu...
Failed to get blkid info (returned 512) for / on tmpfs at /nix/store/nvycxmg4g2q5jyqdxfvkgi95sqs48iw3-install-grub.pl line 212.
warning: error(s) occurred while switching to the new configuration在 GitHub 上搜索相关问题,尝试了很多次也没有解决。经过一个多月的摸索最终找到了解决办法。
解决办法 #
编辑 hardware-configuration.nix 文件,添加如下代码:
boot.loader.grub.enable = true;
boot.loader.grub.efiSupport = true;
boot.loader.grub.efiInstallAsRemovable = true;保存后重新 rebuild,发现已经正常了。