![配置 grub 来处理两个 nixos 安装](https://linux22.com/image/152570/%E9%85%8D%E7%BD%AE%20grub%20%E6%9D%A5%E5%A4%84%E7%90%86%E4%B8%A4%E4%B8%AA%20nixos%20%E5%AE%89%E8%A3%85.png)
我正在尝试安装和双重启动两个 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