跳到主要内容
  1. 所有文章/

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

·408 字·1 分钟

前言 #

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