Bcachefs: Difference between revisions

Onny (talk | contribs)
Update page for NixOS 25.05. Release contains a kernel with bcachefs now
Onny (talk | contribs)
NixOS installation on bcachefs: Cleanup instruction
 
(6 intermediate revisions by 3 users not shown)
Line 57: Line 57:
     --label=hdd.hdd3 /dev/sde \
     --label=hdd.hdd3 /dev/sde \
     --label=ssd.ssd1 /dev/sdf \
     --label=ssd.ssd1 /dev/sdf \
     --label=ssd.ssd2 /dev/sdg
     --label=ssd.ssd2 /dev/sdg \
     --foreground_target=ssd \
     --foreground_target=ssd \
     --promote_target=ssd \
     --promote_target=ssd \
Line 71: Line 71:
     --label=hdd.hdd3 /dev/sde \
     --label=hdd.hdd3 /dev/sde \
     --label=ssd.ssd1 /dev/sdf \
     --label=ssd.ssd1 /dev/sdf \
     --label=ssd.ssd2 /dev/sdg
     --label=ssd.ssd2 /dev/sdg \
     --foreground_target=ssd \
     --foreground_target=ssd \
     --promote_target=ssd \
     --promote_target=ssd \
Line 113: Line 113:


== Tips and tricks ==
== Tips and tricks ==
=== Generate bcachefs enabled installation media ===
Use following Nix [[Flakes|Flake-expression]] to generate a ISO installation image with a bcachefs enabled kernel
{{file|flake.nix|nix|<nowiki>
{
  description = "Bcachefs enabled installation media";
  inputs.nixos.url = "nixpkgs/nixos-25.11";
  outputs = { self, nixos }: {
    nixosConfigurations = {
      exampleIso = nixos.lib.nixosSystem {
        system = "x86_64-linux";
        modules = [
          "${nixos}/nixos/modules/installer/cd-dvd/installation-cd-minimal-new-kernel-no-zfs.nix"
          ({ lib, pkgs, ... }: {
            # Required as a workaround for bug
            # https://github.com/NixOS/nixpkgs/issues/32279
            environment.systemPackages = [ pkgs.keyutils ];
            boot.supportedFilesystems = [ "bcachefs" ];
          })
        ];
      };
    };
  };
}
</nowiki>}}
The following commands will generate the iso-image which will be available in the directory <code>./result/iso</code>
<syntaxhighlight lang="console"># nix build .#nixosConfigurations.exampleIso.config.system.build.isoImage
</syntaxhighlight>


=== NixOS installation on bcachefs ===
=== NixOS installation on bcachefs ===
Line 133: Line 167:
<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
# mkfs.fat -F 32 -n boot /dev/sda1
# mkfs.fat -F 32 -n boot /dev/sda1
# nix shell -p bcachefs-tools
# mkfs.bcachefs -L nixos /dev/sda2
# mkfs.bcachefs -L nixos /dev/sda2
</syntaxhighlight>
</syntaxhighlight>
Line 140: Line 173:


<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
# nix-shell -p keyutils --run 'keyctl link @u @s'
# keyctl link @u @s
# nix-shell -p bcachefs-tools
# bcachefs format --label=nixos --encrypted /dev/sda2
# bcachefs format --encrypted /dev/sda2
# bcachefs unlock /dev/sda2
# bcachefs unlock /dev/sda2
</syntaxhighlight>
</syntaxhighlight>


Mount filesystems
Mount filesystems. Use <code>lsblk -o +uuid,fsType | grep bcachefs</code> to get bcachefs partition uuid.
 
There are two ways to mount a bcachefs filesystem. First, by device:


<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
# mount /dev/sda2 /mnt
# mount /dev/disk/by-uuid/<...> /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>
For better reliability as with any other filesystem, one should mount the filesystem by UUID, by replacing any drive specifiers with it.
When you formatted, there was an external UUID shown, but if you lost it, you can retrieve it using
<syntaxhighlight lang="console">
# lsblk -o +uuid,fsType | grep bcachefs
</syntaxhighlight>
And using it like <code>UUID=<UUID></code> in place of <code>/dev/sda1:/dev/sdb1</code> or even just <code>/dev/sda</code>.
Note: this is currently broken as per this [https://github.com/NixOS/nixpkgs/issues/317901 github issue]. As a workaround, use `/dev/disk/by-uuid/<UUID>` or `/dev/disk/by-id` instead. This seems to work for single device systems atleast, although atleast at the time of this writing I could not get it to work on my 4+ device raid system.


Continue installation as recommended by the [https://nixos.org/manual/nixos/stable/index.html#ch-installation NixOS manual].
Continue installation as recommended by the [https://nixos.org/manual/nixos/stable/index.html#ch-installation NixOS manual].