NixOS 中 BIOS 启动的系统使用 Disko 管理分区
目录
前言 #
NixOS 是一个声明式配置的系统,整个系统都可以使用声明式的方式来配置。2023 年刚接触 NixOS 的时候,我还不知道 Disko ,那时候系统分区等操作还是需要通过手动执行一些命令来完成。使用了一段时间后我发现了 tmpfs as root 这种玩法,对于我这种又严重强迫症的人来说是极好的,于是我把我本地的设备都用上了 tmpfs as root。使用了一段时间体验非常好,想着把手里的服务器也换成 NixOS ,于是就遇到了这个困扰我几个月的问题。
由于我本地的设备都是 UEFI + systemd-boot 的组合,使用起来一直很正常。云服务器一般都是 BIOS 启动的,systemd-boot 对于 BIOS 来说有一些问题,最后选择了 BISO + 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;
保存,重新 srebuild 发现已经正常了。