Dual-Boot

配置 grub 以處理兩個 nixos 安裝

  • May 25, 2019

我正在嘗試安裝和雙重引導兩個 nixos 系統,但我無法理解如何正確配置 GRUB 以使其工作。

我想雙啟動兩個 nixos 系統可能看起來很奇怪,但原因是我想要一個核心設置為 CONFIG_PREEMPT_RT https://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 以使其同時顯示兩個系統?我想我也將面臨如何顯示兩個系統的世代的挑戰,並且仍然能夠區分哪個是哪個……

您可以在系統配置文件中向 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設置 old-nixos 根分區的 UUID,然後使用新配置更新您的系統。

# nixos-rebuild switch

引用自:https://unix.stackexchange.com/questions/515663