跳过正文
  1. 所有文章/

NixOS 中 BIOS 启动的系统使用 Disko 管理分区

·430 字·1 分钟·
Aaron
作者
Aaron
I only know that I know nothing.
目录

前言
#

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,发现已经正常了。