2024-06-29: 更新分区方案,增加备用密钥,不再使用 tmpfs
最近换到 NixOS 了,安装记录写太长干脆多写一点分段发布。
目录
- 硬盘分区 (you are here)
- 系统配置
- 程序配置
准备
接 上文,我有一个安装了 Ventoy 的移动硬盘。
从 NixOS 网站下载 Minimal ISO image (64-bit Intel/AMD),放入文件夹并进入 LiveCD 环境。
配置
这里从 Disko 提供的 LUKS Btrfs Subvolumes 示例配置 开始。
首先对它(的上半部分)进行一些基础更改:
- 本次使用
/dev/nvme0n1
作为系统盘。 - 虽然 512M 的 ESP 很合理,但是 1G 可以给我更多安全感。(2T 的盘不差这点)
- cryptroot 命名更常见(个人喜好)
LUKS
我使用 U 盘分区中的密钥文件。因为尝试 systemd-cryptenroll
FIDO2 翻车了
预先 FAT32 格式化,通过 ls -l /dev/disk/by-id
查看一下分区 ID;
这里假设为 /dev/disk/by-id/usb-primary_key-part1
。
挂载并写入一个 8192 长度的 os.key
文件:
如果你有多余的 U 盘,还可以作为备用密钥(只需要将 os.key
文件拷贝一份即可)。
修改配置:
preOpenCommands / postOpenCommands 部分我参考了 NixOS Wiki。
无状态
我从一开始就准备使用 Impermanence,
简单来说只需要两个 Btrfs 子卷——/nix
和 /persist
。
接上面的 content
,替换 subvolumes
:
persist 子卷需要设置 neededForBoot,添加在配置末尾。
为什么删掉 swap?因为我觉得我用不到。
透明压缩
可以看到上面 Btrfs 子卷的 mountOptions 是 "compress=zstd" "noatime"
我将 compress=zstd
改成 compress-force=zstd:1
,强制使用压缩并增加压缩级别。
应用配置
运行一下 mount | grep /mnt
会发现已经挂载分区。