AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 446501
Accepted
toraritte
toraritte
Asked: 2018-05-29 07:22:45 +0800 CST2018-05-29 07:22:45 +0800 CST 2018-05-29 07:22:45 +0800 CST

如何从 Live CD 重建 NixOS 安装的配置?

  • 772

我按照 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 菜单。我可能只是用正确的配置重做安装。

nixos
  • 2 2 个回答
  • 7151 Views

2 个回答

  • Voted
  1. Best Answer
    Emmanuel Rosa
    2018-05-29T18:29:08+08:002018-05-29T18:29:08+08:00

    最简单的方法是从 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 存储,然后复制到磁盘。安装并启动后,您可以安全地继续进行其余配置。
    • 6
  2. toraritte
    2018-05-31T21:58:40+08:002018-05-31T21:58:40+08:00

    为了完整起见添加此答案:理论上,@ Mioriin上面对 ing 的建议chroot将是正确的答案,可以通过 command 来实现nixos-enter。

    在 Ubuntu 中,将 NixOS 分区安装到/mnt:

    $ sudo $(which nixos-enter)
    ...
    [root@nixos:/]# nixos-rebuild switch
    

    实际上,这不起作用,因为网络无法正常工作(可能是因为我configuration.nix一开始就错过了正确的设置),并且收到了一堆错误消息:

    warning: Nix search path entry '/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs' does not exist, ignoring
    warning: Nix search path entry '/nix/var/nix/profiles/per-user/root/channels' does not exist, ignoring
    error: file 'nixpkgs/nixos' was not found in the Nix search path (add it using $NIX_PATH or -I), at (string):1:13
    System has not been booted with systemd as init system (PID 1). Can't operate.
    building Nix...
    warning: Nix search path entry '/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs' does not exist, ignoring
    warning: Nix search path entry '/nix/var/nix/profiles/per-user/root/channels' does not exist, ignoring
    error: file 'nixpkgs/nixos' was not found in the Nix search path (add it using $NIX_PATH or -I)
    warning: Nix search path entry '/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs' does not exist, ignoring
    warning: Nix search path entry '/nix/var/nix/profiles/per-user/root/channels' does not exist, ignoring
    error: file 'nixpkgs' was not found in the Nix search path (add it using $NIX_PATH or -I)
    warning: unable to download 'https://cache.nixos.org/nix-cache-info': Couldn't resolve host name (6); retrying in 293 ms
    ^Cwarning: download of 'https://cache.nixos.org/nix-cache-info' was interrupted
    don't know how to build these paths:
      /nix/store/z6avpvg24f6d1br2sr6qlphsq3h4d91v-nix-2.0.2
    error: interrupted by the user
    warning: don't know how to get latest Nix
    

    最后,@ Emmanuel Rosa的答案是正确的,尤其是因为(正如他所指出的)nixos-install可以安全地执行多次。

    • 1

相关问题

  • 将 $NIX_PATH 指向 ~/.nix-defexpr/channels

  • 仅检测一次扫描仪

  • 使用完整的根分区清理 nixos 上的包管理器缓存

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve