我按照 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 创建的文件系统(和配置)遵循主要安装指南,然后从您离开的地方继续。
需要注意的一些事项:
systemd-boot
默认安装在 EFI 系统上。因此,您最终会得到一个新的 EFI 可执行文件以及您已有的可执行文件。nixos-install
还将尝试设置systemd-boot
为默认引导管理器。我相信你可以通过设置boot.loader.efi.canTouchEfiVariables
为 false来禁用它configuration.nix
为了完整起见添加此答案:理论上,@ Mioriin上面对 ing 的建议
chroot
将是正确的答案,可以通过 command 来实现nixos-enter
。在 Ubuntu 中,将 NixOS 分区安装到
/mnt
:实际上,这不起作用,因为网络无法正常工作(可能是因为我
configuration.nix
一开始就错过了正确的设置),并且收到了一堆错误消息:最后,@ Emmanuel Rosa的答案是正确的,尤其是因为(正如他所指出的)
nixos-install
可以安全地执行多次。