github编辑

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

自定义

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

仅支持 UEFI

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

准备工作

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

    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. 从另一台计算机连接。

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

    find /dev/disk/by-id/

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

    声明磁盘数组:

    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 系统分区,然后设置服务同步其内容。

最后更新于