ZFS: Difference between revisions
m replace urls with {{nixos:...}} templates |
Add more kind notes for the guide |
||
| Line 144: | Line 144: | ||
'''Let's use variables from now on for simplicity. | '''Let's use variables from now on for simplicity. | ||
Get the device ID in <code>/dev/disk/by-id/</code>, in our case here it is <code>nvme-SKHynix_HFS512GDE9X081N_FNB6N634510106K5O</code> | Get the device ID in <code>/dev/disk/by-id/</code> (using {{ic|blkid}}), in our case here it is <code>nvme-SKHynix_HFS512GDE9X081N_FNB6N634510106K5O</code> | ||
''' | ''' | ||
<syntaxhighlight lang=bash> | <syntaxhighlight lang=bash> | ||
| Line 151: | Line 151: | ||
DISK=/dev/disk/by-id/nvme-SKHynix_HFS512GDE9X081N_FNB6N634510106K5O-part3 | DISK=/dev/disk/by-id/nvme-SKHynix_HFS512GDE9X081N_FNB6N634510106K5O-part3 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{note|It is often recommended to specify the drive using the device ID/UUID to prevent incorrect configuration, but it is also possible to use the device name (e.g. /dev/sda). See also: [[#Zpool created with bus-based disk names]], [https://wiki.archlinux.org/title/Persistent_block_device_naming Persistent block device naming - ArchWiki]}} | |||
'''Make a ZFS pool with encryption and mount points''' | '''Make a ZFS pool with encryption and mount points''' | ||
| Line 168: | Line 170: | ||
zfs create zpool/home | zfs create zpool/home | ||
# Mount root | |||
mkdir -p /mnt | mkdir -p /mnt | ||
mount -t zfs zpool/root /mnt -o zfsutil | mount -t zfs zpool/root /mnt -o zfsutil | ||
# Mount nix, var, home | |||
mkdir /mnt/nix /mnt/var /mnt/home | mkdir /mnt/nix /mnt/var /mnt/home | ||
mount -t zfs zpool/nix /mnt/nix -o zfsutil | mount -t zfs zpool/nix /mnt/nix -o zfsutil | ||
mount -t zfs zpool/var /mnt/var -o zfsutil | mount -t zfs zpool/var /mnt/var -o zfsutil | ||
| Line 204: | Line 208: | ||
'''Installation''' | '''Installation''' | ||
<syntaxhighlight lang="bash"> | |||
# Mount boot | # Mount boot | ||
mkdir -p /mnt/boot | mkdir -p /mnt/boot | ||
mount $BOOT /mnt/boot | mount $BOOT /mnt/boot | ||
| Line 219: | Line 223: | ||
Now edit the configuration.nix that was just created in <code>/mnt/etc/nixos/configuration.nix</code> and make sure to have at least the following content in it. | Now edit the configuration.nix that was just created in <code>/mnt/etc/nixos/configuration.nix</code> and make sure to have at least the following content in it. | ||
{{file|/mnt/etc/nixos/configuration.nix|diff|3= | |||
{ | { | ||
... | ... | ||
| Line 226: | Line 230: | ||
# for local disks that are not shared over the network, we don't need this to be random | # for local disks that are not shared over the network, we don't need this to be random | ||
networking.hostId = "8425e349"; | # without this, "ZFS requires networking.hostId to be set" will be raised | ||
+ networking.hostId = "8425e349"; | |||
... | ... | ||
} | |||
}} | |||
Now check the hardware-configuration.nix in <code>/mnt/etc/nixos/hardware-configuration.nix</code> and add whats missing e.g. <code>options = [ "zfsutil" ]</code> for all filesystems except boot and <code>randomEncryption = true;</code> for the swap partition. Also change the generated swap device to the partition we created e.g. <code>/dev/disk/by-id/nvme-SKHynix_HFS512GDE9X081N_FNB6N634510106K5O-part2</code> in this case and <code>/dev/disk/by-id/nvme-SKHynix_HFS512GDE9X081N_FNB6N634510106K5O-part1</code> for boot. | Now check the hardware-configuration.nix in <code>/mnt/etc/nixos/hardware-configuration.nix</code> and add whats missing e.g. <code>options = [ "zfsutil" ]</code> for all filesystems except boot and <code>randomEncryption = true;</code> for the swap partition. Also change the generated swap device to the partition we created e.g. <code>/dev/disk/by-id/nvme-SKHynix_HFS512GDE9X081N_FNB6N634510106K5O-part2</code> in this case and <code>/dev/disk/by-id/nvme-SKHynix_HFS512GDE9X081N_FNB6N634510106K5O-part1</code> for boot. | ||
{{file|/mnt/etc/nixos/configuration.nix|diff|3= | |||
{ | |||
... | ... | ||
fileSystems."/" = { | fileSystems."/" = { | ||
| Line 238: | Line 245: | ||
fsType = "zfs"; | fsType = "zfs"; | ||
# the zfsutil option is needed when mounting zfs datasets without "legacy" mountpoints | # the zfsutil option is needed when mounting zfs datasets without "legacy" mountpoints | ||
+ options = [ "zfsutil" ]; | |||
}; | }; | ||
| Line 244: | Line 251: | ||
device = "zpool/nix"; | device = "zpool/nix"; | ||
fsType = "zfs"; | fsType = "zfs"; | ||
+ options = [ "zfsutil" ]; | |||
}; | }; | ||
| Line 250: | Line 257: | ||
device = "zpool/var"; | device = "zpool/var"; | ||
fsType = "zfs"; | fsType = "zfs"; | ||
+ options = [ "zfsutil" ]; | |||
}; | }; | ||
| Line 256: | Line 263: | ||
device = "zpool/home"; | device = "zpool/home"; | ||
fsType = "zfs"; | fsType = "zfs"; | ||
+ options = [ "zfsutil" ]; | |||
}; | }; | ||
| Line 265: | Line 272: | ||
swapDevices = [{ | swapDevices = [{ | ||
+ device = "/dev/disk/by-id/nvme-SKHynix_HFS512GDE9X081N_FNB6N634510106K5O-part2"; | |||
+ randomEncryption = true; | |||
}]; | }]; | ||
} | } | ||
}} | |||
Now you may install NixOS with <code>nixos-install</code>. | Now you may install NixOS with <code>nixos-install</code>. | ||