Bcachefs: Difference between revisions
imported>Onny Add section on NixOS installation |
imported>Onny mNo edit summary |
||
Line 59: | Line 59: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== NixOS installation on | === NixOS installation on bcachefs === | ||
Using the installation media generated above, continue the installation as usual following the [https://nixos.org/manual/nixos/stable/index.html#ch-installation instructions of the NixOS manual]. | Using the installation media generated above, continue the installation as usual following the [https://nixos.org/manual/nixos/stable/index.html#ch-installation instructions of the NixOS manual]. | ||
Line 75: | Line 75: | ||
<syntaxhighlight lang="console"> | <syntaxhighlight lang="console"> | ||
mkfs.ext4 -L boot /dev/sda1 | # mkfs.ext4 -L boot /dev/sda1 | ||
mkfs.bcachefs -L nixos /dev/sda2 | # mkfs.bcachefs -L nixos /dev/sda2 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 82: | Line 82: | ||
<syntaxhighlight lang="console"> | <syntaxhighlight lang="console"> | ||
mount -t bcachefs /dev/sda2 /mnt | # mount -t bcachefs /dev/sda2 /mnt | ||
mkdir /mnt/boot | # mkdir /mnt/boot | ||
mount /dev/disk/by-label/boot /mnt/boot | # mount /dev/disk/by-label/boot /mnt/boot | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Revision as of 18:56, 15 May 2023
Bcachefs is a next-generation CoW filesystem that aims to provide features from Btrfs and ZFS with a cleaner codebase, more stability, greater speed and a GPL-compatible license. It is built upon Bcache and is mainly developed by Kent Overstreet.
Installation
To enable filesystem support and availability of user-space utils, add following line to the system configuration
/etc/nixos/configuration.nix
boot.supportedFilesystems = [ "bcachefs" ];
Usage
Format and mount a single device
# bcachefs format /dev/sda
# mount -t bcachefs /dev/sda /mnt
Format drive with encryption enabled, unlock and mount it afterwards. Following bcachefs commands will ask for a password:
# bcachefs format --encrypt /dev/sda
# bcachefs unlock /dev/sda
# mount -t bcachefs /dev/sda /mnt
Create a subvolume of a mounted bcachefs filesystem. The snapshot of the filesystem state is accessible in the directory /mnt/snap1
.
# bcachefs subvolume snapshot /mnt /mnt/snap1
Tips and tricks
Generate bcachefs enabled installation media
Use following Nix expression iso.nix
to generate a ISO installation image with a bcachefs enabled kernel
# This module defines a small NixOS installation CD. It does not
# contain any graphical stuff.
{ config, pkgs, lib, ... }:
{
imports = [
# Currently fails to build due to ZFS incompatibility with bcachefs
#<nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix>
<nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-minimal-new-kernel-no-zfs.nix>
];
boot.supportedFilesystems = [ "bcachefs" ];
# kernelPackages already defined in installation-cd-minimal-new-kernel-no-zfs.nix
boot.kernelPackages = lib.mkOverride 0 pkgs.linuxPackages_testing_bcachefs;
isoImage.squashfsCompression = "gzip -Xcompression-level 1";
}
# nix-build '<nixpkgs/nixos>' -A config.system.build.isoImage -I nixos-config=iso.nix
NixOS installation on bcachefs
Using the installation media generated above, continue the installation as usual following the instructions of the NixOS manual.
For a BIOS installation, the partitioning needs to be adjusted as following
# parted /dev/sda -- mklabel msdos
# parted /dev/sda -- mkpart primary 1MB 512MB
# parted /dev/sda -- set 1 boot on
# parted /dev/sda -- mkpart primary 512MB 100%
Formatting the boot partition /dev/sda1
and the root filesystem /dev/sda2
# mkfs.ext4 -L boot /dev/sda1
# mkfs.bcachefs -L nixos /dev/sda2
Mount filesystems
# mount -t bcachefs /dev/sda2 /mnt
# mkdir /mnt/boot
# mount /dev/disk/by-label/boot /mnt/boot
Continue installation as recommended by the NixOS manual.