Nixos

如何從 Live CD 重建 NixOS 安裝的配置?

  • May 31, 2018

我按照 NixOS 手冊的“ 2.4. 從另一個 Linux 發行版安裝”部分在另一個分區上從 Ubuntu 安裝了 NixOS 18.03。一切都很順利,但我做了一些愚蠢的事情 $$ ? $$,即:

  • 之前忘記為 Ubuntu 安裝添加額外的 GRUB 引導載入程序條目nixos-install。安裝後添加它作為事後的想法,並重新啟動(當然,沒有 Ubuntu 條目)
  • 沒有啟用任何網路configuration.nix,並且在重新啟動後沒有網路配置命令連接到 wifi。第 22 個問題是nixos-rebuild switch需要網路連接,所以我無法完成任何更改。

所以我的想法是我可以從 NixOS Live CD (17.03) 啟動,連接到我們的 wifi 並以某種方式重建安裝配置。

我很可能遺漏了一些重要的東西,上面有不正確的假設等;在 nix 和 NixOS 上相當新。


編輯:我忘了包括我的分區是如何設置的,以及在成功安裝 NixOS 之前我嘗試了什麼。

分區(來自 Ubuntu 的掛載點):

sda
├─sda1         ntfs     Recovery              # some Win7 artifact
├─sda2         vfat               /boot/efi
├─sda3         vfat     NIXBOOT               # boot partition (esp, boot)
├─sda4         ext4     onyx                  # NixOS data
├─sda5         swap                           # Ubuntu swap
│ └─cryptswap1 swap               [SWAP]
├─sda6         ext4                           # (Arch install)
├─sda7         ext4               /           # Ubuntu install
├─sda8         swap     nixswap   
└─sda9         ext4     home      

我不想弄亂 Ubuntu 引導分區,所以我創建了另一個 ( /dev/sda3)。我的計劃是稍後在 Ubuntu 的 GRUB for NixOS 中包含一個菜單條目,但現在,從 GRUB 控制台(、、、、)安裝、重新啟動set root=...和測試linux ...啟動NixOSinitrd ...``boot

sudo PATH="$PATH" NIX_PATH="$NIX_PATH" `which nixos-install` --root /mnt --no-bootloader

重新啟動後,我在 NixOS 啟動分區上看不到任何內容。回到 Ubuntu,沒有安裝--no-bootloader,記得為 Ubuntu 添加一個條目並重新啟動。(直到這之後我才意識到systemd-boot和 GRUB 是兩個完全不同的東西……)


更新:通過在 BIOS 中選擇 Ubuntu 引導分區作為備用引導設備,我能夠回到 Ubuntu,並且出現了通常的 GRUB 菜單。我可能只是用正確的配置重做安裝。

最簡單的方法是從 LiveCD 安裝。

nixos-generate-config將重新生成硬體配置,但如果它發現configuration.nix已經存在,它將不理會它。並且nixos-install被設計成可以根據需要安全地執行多次。

這意味著您可以使用您已經為 NixOS 創建的文件系統(和配置)遵循主要安裝指南,然後從您離開的地方繼續。

需要注意的一些事項:

  • NixOS 將systemd-boot預設安裝在 EFI 系統上。因此,您最終會得到一個新的 EFI 執行檔以及您已有的執行檔。
  • nixos-install還將嘗試設置systemd-boot為預設引導管理器。我相信你可以通過設置boot.loader.efi.canTouchEfiVariables為 false來禁用它configuration.nix
  • 我建議使用基本配置安裝 NixOS;例如,設置網路、使用者和安裝文本編輯器,但僅此而已。原因是 LiveCD 使用了保存在 RAM 中的 Nix 儲存。您的系統將首先安裝到這個由 RAM 支持的 Nix 儲存,然後復製到磁碟。安裝並啟動後,您可以安全地繼續進行其餘配置。

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