如何從 Live CD 重建 NixOS 安裝的配置?
我按照 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 儲存,然後復製到磁碟。安裝並啟動後,您可以安全地繼續進行其餘配置。