Jump to content

NixOS安装指南

From NixOS Wiki
Revision as of 09:17, 8 October 2025 by Ardenet (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

本指南是官方手册 [1] 的配套指南。它描述了如何将 NixOS 安装为完整的操作系统。有关在现有操作系统中安装 Nix 的说明,请参阅 Nix 安装指南

除了涵盖官方手册中的步骤外,它还提供了针对常见用例的已知有效操作。当官方手册与本指南之间存在差异时,支持用例以手册中描述的为准。

安装目标

NixOS可以安装在越来越多种类的硬件上:

  • 常规(Intel或AMD)台式机, 笔记本电脑, 或是物理可访问的服务器, 该页面包含了它们
  • 单板计算机(如树莓派)和其他ARM开发板, 见 NixOS on ARM
  • 云服务器和远程服务器, 见 NixOS friendly hosters

安装方式

NixOS, 如同绝大部分基于Linux的操作系统一样, 可以通过多种方式进行安装.

  1. 传统方式, 通过安装媒介启动.(会在下面讲述.)
  2. 通过已存在的Linux安装启动媒介

制作安装媒介

从NixOS 14.11开始, 安装程序ISO(镜像文件)是混合型的. 这意味着它通过CD和USB驱动器都可以启动. 它也可以在EFI系统上启动, 如大多数现代主板和苹果系统. 接下来的指导将假设使用复制镜像文件到USB驱动器的标准方式. 当使用CD或者DVD时, 刻录到光盘的通常方式应当也适用于该iso文件.

"刻录"到USB驱动器

首先, 下载一个NixOS ISO镜像 或者 创建一个自定义ISO文件. 接着插入一个空间大到足够容纳镜像的USB. 然后遵循平台的指令:

在Linux上

  1. 通过 lsblkfdisk -l 找到正确的设备. 在接下来的步骤中, 把/dev/sdX 替换为正确的设备.
  2. 复制到设备: cp nixos-xxx.iso /dev/sdX
Note: 不要使用 /dev/sdX1 或硬盘的分区, 请使用整块硬盘 /dev/sdX

也可通过 dd if=nixos.iso of=/dev/sdX bs=4M status=progress conv=fdatasync 写入硬盘镜像

在macOS上

  1. 使用diskutil list找到正确的设备, 比如说diskX.
  2. 使用diskutil unmountDisk diskX取消挂载.
  3. 使用sudo dd if=path_to_nixos.iso of=/dev/diskX进行刻录
🟆︎
Tip: 使用rdiskX而不是diskX可以大幅改变速度. 你可以在另一个终端里使用iostat 2检查写入速度.

在Windows上

  1. 下载USBwriter.
  2. 启动USBwriter.
  3. 选择下载的ISO文件作为'Source'
  4. 选择USB驱动器作为'Target'
  5. 点击'Write'
  6. 当USBWriter完成写入操作后, 安全拔出USB驱动器

可选的安装媒介指导

之前的方式是制作USB安装媒介的受支持方式.

这些方式也同样有记录, 它们可以使用USB驱动器启动多个发行版. 这种方式不被支持, 结果可能因人而异.

启动(Boot)安装媒介

☶︎
This article or section needs to be expanded. Further information may be found in the related discussion page. Please consult the pedia article metapage for guidelines on contributing.

由于安装镜像为混合镜像,因此可在传统 BIOS 模式或 UEFI 模式下启动。

无论使用哪种方式启动安装媒介, 你可能需要修改主板或者电脑的配置, 以允许从光盘驱动器(对于CD/DVD)或者从一个外部的USB驱动器启动.

Legacy bios启动

这是在没有EFI/UEFI的机器上唯一的启动方式.

UEFI启动

安装媒介的EFI引导加载程序未经过签名, 也没有使用经过签名的shim来启动. 这意味着只有禁用了Secure Boot(安全启动)才能启动.

连接到网络

安装过程几乎肯定需要有效的网络连接. 无网络的安装是可行的, 但是可用的软件包集合是受限的.

有线网络

对于内核提供的网络接口, DHCP(动态主机配置协议)解析应当在shell可用之前就已经完成.

有线连接(网络共享)

如果你无法通过网线或者wifi连接到网络, 你可以使用智能手机的网络共享能力. 依赖于你的手机的能力, 只需要内核自带的驱动就可以提供有效的网络连接.

无线网络

NetworkManager 安装在图形化 ISO 镜像上,这意味着可以在命令行上使用 nmtui 命令连接到网络。

使用左上方的"Applications(应用)"标签页或者在底部的启动栏, 打开一个终端应用, 在那里启动 nmtui. 这可以让你'activate(激活)'一个(无线)连接 - 你应该可以在列表里看到你那里的SSID(无线网络名称), 除此之外你还可以添加一个新的连接. 当无线连接处于活动状态, 并且你已经测试过了时, 一开始就启动的安装程序很可能还没有检测到新的连接. 关掉安装程序, 再重新从屏幕底部的启动栏打开它. 这时它应该会检测到新的网络连接而继续.

在最小化 ISO 镜像上,或者您更熟悉 wpa_supplicant,那么您也可以运行 wpa_passphrase ESSID | sudo tee /etc/wpa_supplicant.conf 命令,然后输入您的密码并执行 systemctl restart wpa_supplicant 命令。

Partitioning(分区操作)

要对持久存储进行分区,请运行 sudo fdisk /dev/diskX 并按照 MBR 或 (U)EFI 的说明进行操作。要确定您使用的启动模式,请运行:

$ [ -d /sys/firmware/efi/efivars ] && echo "UEFI" || echo "Legacy"

这里给出了一个非常简单的示例设置。

传统启动(Legacy Boot, MBR)

  • o (dos硬盘标签)
  • n new
  • p primary (4 primary in total)
  • 1 (分区编号[1/4])
  • 2048 first sector (alignment for performance)
  • +500M last sector (引导扇区的大小)
  • rm signature (Y), if ex. => warning of overwriting existing system, could use wipefs
  • n
  • p
  • 2
  • default (填满分区)
  • default (填满分区)
  • w (写入)

UEFI

  • g (gpt硬盘标签)
  • n
  • 1 (分区编号[1/128])
  • 2048 first sector
  • +500M last sector (引导扇区的大小)
  • t
  • 1 (EFI系统)
  • n
  • 2
  • default (填满分区)
  • default (填满分区)
  • w (写入)

格式化分区

以下示例使用 ext4 文件系统格式。如果您希望使用其他文件系统格式,例如 BtrfsZFS

这对于有多个分区设置的情况很有用, 使分区更容易处理

$ lsblk # lists current system block devices
# mkfs.fat -F 32 -n boot /dev/sdX1
# mkfs.ext4 /dev/sdX2 -L nixos
# mount /dev/disk/by-label/nixos /mnt
# mkdir -p /mnt/boot
# mount /dev/disk/by-label/boot /mnt/boot

NixOS 配置

NixOS 通过 声明式配置 文件进行配置。要生成默认配置文件,请运行 Special:MyLanguage/nixos-generate-config

# nixos-generate-config --root /mnt
# nano /mnt/etc/nixos/configuration.nix

有关使用系统配置的信息,请参阅 NixOS 系统配置。有关特定于桌面的配置,请参阅 桌面设备上的 NixOS

最重要的变化:

具有自我说明性的NixOS选项可以在NixOS选项搜索上搜索到.

交换文件

有关配置交换空间的更多方法,请参阅 Swap。以下示例演示了如何创建和启用一个 交换文件

❄︎ /mnt/etc/nixos/configuration.nix
  swapDevices = [{
    device = "/var/lib/swapfile";
    size = 16*1024; # 16 GB
  }];

引导加载程序

NixOS 支持多种 引导加载程序,例如 GNU GRUBSystemd/boot

Systemd-boot 是推荐的引导加载程序。以下示例演示了如何在配置中启用 systemd-boot:

❄︎ /mnt/etc/nixos/configuration.nix
  boot.loader.systemd-boot.enable = true;

您可能还希望配置 安全启动

用户

有关创建和管理用户的信息,请参阅 用户管理NixOS Manual: Chapter - Package Management。请参阅以下示例:

❄︎ /mnt/etc/nixos/configuration.nix
  users.users.alice = {
    isNormalUser = true;
    initialPassword = "pw123";
  };

安装 NixOS

# cd /mnt
# nixos-install

安装后:运行passwd更改用户密码。

如果网络出现问题, 请尝试下面的一种方法:

# nixos-rebuild switch --option substitute false # no downloads
# nixos-rebuild switch --option binary-caches "" # no downloads
  • 设置 wpa_supplicant 标志来连接到 wifi

有关特定硬件的附加说明

这些是有关特定硬件问题的收集到的说明或链接.

  • 博客文章:如何在 Dell 9560 上安装 NixOS
  • 品牌服务器可能需要在 initrd 中包含额外的内核模块(在 configuration.nix 中配置 boot.initrd.extraKernelModules)。例如,HP Proliant 需要“hpsa”模块才能访问磁盘驱动器。