For the complete documentation index, see llms.txt. This page is also available as Markdown.

构建以 ZFS 为根文件系统的 NixOS

自定义

除非另有说明,否则不建议在重启到新系统之前进行自定义系统配置。

仅支持 UEFI

本指南仅支持 UEFI。请确保你的计算机以 UEFI 模式启动。

准备工作

  1. 下载 NixOS Live 镜像 ,然后从其启动。

    sha256sum -c ./nixos-*.sha256
    
    dd if=input-file of=output-file bs=1M
  2. 连接到互联网。

  3. 设置 root 密码或 /root/.ssh/authorized_keys

  4. 启动 SSH 服务。

    systemctl restart sshd
  5. 从另一台计算机连接。

    ssh root@192.168.1.91
  6. 目标磁盘 使用以下命令列出可用磁盘:

    find /dev/disk/by-id/

    如果使用 virtio 作为磁盘总线,请关闭虚拟机并为磁盘设置序列号。对于 QEMU,使用 -drive format=raw,file=disk2.img,serial=AaBb。对于 libvirt,编辑域 XML。示例参见 此页面

    声明磁盘数组:

    DISK='/dev/disk/by-id/ata-FOO /dev/disk/by-id/nvme-BAR'

    对于单块磁盘安装,使用:

    DISK='/dev/disk/by-id/disk1'
  7. 设置挂载点:

    MNT=$(mktemp -d)
  8. 设置分区大小: 设置 swap 大小(单位 GB),如果不希望 swap 占用过多空间则设为 1。

    SWAPSIZE=4

    设置磁盘末尾保留空间大小,最少 1GB。

    RESERVE=1

系统安装

  1. 对磁盘进行分区。 注意:必须清除目标磁盘上一切既有的分区表和数据结构。 对于基于闪存的存储,可使用下面的 blkdiscard 命令完成:

  2. 仅为本次安装设置临时加密 swap。这在可用内存较小时非常有用:

  3. 仅 LUKS:为根池设置加密的 LUKS 容器:

  4. 创建根池

    • 未加密

    • LUKS 加密

    如果不是多磁盘配置,请移除 mirror

  5. 创建根系统容器:

    创建系统数据集,使用 mountpoint=legacy 管理挂载点:

  6. 格式化并挂载 ESP。仅使用其中一个作为 /boot,之后需要设置镜像:

系统配置

  1. 生成系统配置:

  2. 编辑系统配置:

  3. 设置 networking.hostId

  4. 如果使用 LUKS,将以下命令的输出添加到系统配置中:

  5. 安装系统并应用配置:

    等待出现重置 root 密码的提示。

  6. 卸载文件系统:

  7. 重启:

  8. 设置网络、桌面环境和 swap。

  9. 挂载其他 EFI 系统分区,然后设置服务同步其内容。

最后更新于