配置 grub 来处理两个 nixos 安装

配置 grub 来处理两个 nixos 安装

我正在尝试安装和双重启动两个 nixos 系统,但我无法理解如何正确配置 GRUB 使其工作。

我想要双启动两个 nixos 系统似乎很奇怪,但原因是我想要其中一个系统的内核设置为 CONFIG_PREEMPT_RThttps://github.com/musnix/musnix。而另一个系统我只想作为普通内核。

我创建了一个包含 EFI 分区 ( nvme0n1p1) 和加密 LVM 分区 ( nvme0n1p2) 的分区设置:

NAME                              MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
nvme0n1                           259:0    0 953.9G  0 disk  
├─nvme0n1p1                       259:1    0   512M  0 part  
└─nvme0n1p2                       259:2    0 953.4G  0 part  
  └─root                          254:0    0 953.4G  0 crypt 
    ├─virtual--group-swap         254:1    0    16G  0 lvm   [SWAP]
    ├─virtual--group-normal--root 254:2    0   172G  0 lvm   
    ├─virtual--group-rt--root     254:3    0   172G  0 lvm   /
    └─virtual--group-shared--home 254:4    0 593.4G  0 lvm   /home

我已经在两个系统上成功安装了 nixos,normal-root并且rt-root每个系统上都有自己的 configuration.nix 和 hardware-configuration.nix。shared-home只是作为两个系统的主目录安装。

在两个系统的 hardware-configuration.nix 文件中,我都指向fileSystems."/boot"EFI 分区。在两个系统的 configuration.nix 文件中,我都进行了以下 grub 配置:

  boot.loader = {
    grub = {
      enable = true;
      efiSupport = true;
      enableCryptodisk = true;
      device = "nodev";
      useOSProber = true;
    };
    efi.canTouchEfiVariables = true;
  };

现在的问题是 grub 菜单只显示最后安装的系统,而不显示两个系统。

对于 grub 菜单中显示的给定系统,一切都工作得很好,我可以很好地启动它。但是,我不明白如何配置 grub 以使其显示两个系统?。我想我还将面临如何显示两个系统的代数并且仍然能够区分哪个系统是哪个系统的挑战......

答案1

您可以在系统配置文件中向 grub 添加自定义菜单项/etc/nixos/configuration.nix

boot.loader.grub.extraEntries = ''
  menuentry "Nix-OS custom configuration" {
    search --set=myroot --fs-uuid <UUID-HERE>
    configfile "($myroot)/boot/grub/grub.cfg"
  }
'';

用于blkid设置旧 nixos 根分区的 UUID,然后使用新配置更新系统。

# nixos-rebuild switch

相关内容