Bcachefs: Difference between revisions

From NixOS Wiki
imported>Onny
mNo edit summary
imported>Onny
Add section on NixOS installation
Line 59: Line 59:
</syntaxhighlight>
</syntaxhighlight>


Continue the installation as usual following the [https://nixos.org/manual/nixos/stable/index.html#ch-installation instructions of the NixOS manual]. Replace the part where the root filesystem gets formatted and mounted with one of the following two commands:
=== 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].  
 
For a BIOS installation, the partitioning needs to be adjusted as following
 
<syntaxhighlight lang="console">
# 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%
</syntaxhighlight>
 
Formatting the boot partition <code>/dev/sda1</code> and the root filesystem <code>/dev/sda2</code>
 
<syntaxhighlight lang="console">
mkfs.ext4 -L boot /dev/sda1
mkfs.bcachefs -L nixos /dev/sda2
</syntaxhighlight>
 
Mount filesystems


<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
# mkfs.bcachefs -L nixos /dev/sda1
mount -t bcachefs /dev/sda2 /mnt
# mount -t bcachefs /dev/sda1 /mnt
mkdir /mnt/boot
mount /dev/disk/by-label/boot /mnt/boot
</syntaxhighlight>
</syntaxhighlight>


Where <code>/dev/sda1</code> is the root filesystem partition created for the NixOS installation. Be carefull using the <code>mkfs.bcachefs</code> command, it will erase all data on the given partition.
Continue installation as recommended by the NixOS manual.


[[Category:Filesystem]]
[[Category:Filesystem]]

Revision as of 18:53, 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.