Skip to content

Instantly share code, notes, and snippets.

@artizirk
Last active October 20, 2023 15:07
Show Gist options
  • Save artizirk/c5cd29b56c713257754c to your computer and use it in GitHub Desktop.
Save artizirk/c5cd29b56c713257754c to your computer and use it in GitHub Desktop.

Arch Linux btrfs install

0. Prerequisites

  1. Latest Arch Linux install iso because those have newer kernels and more bugfixes in btrfs.
  2. Have previous experience with installing Arch (like you can install arch with a blind fold).

1. Parititions

We will ne two of them, one for /boot and the other one will be a btrfs partition with subvolumes.

  1. /dev/sda1 - this will be /boot with vfat filesystem because UEFI or syslinux for legacy BIOS boot mkfs.fat -F32 /dev/sda1
  2. /dev/sda2 - btrfs with bunch of subvolumes mkfs.btrfs /dev/sda2

I would recommend to use GPT partitioning scheme because it is just better, unless you want to do windows dualboot then I'm just sorry for you...

2. btrfs subvolumes

We will create few of them to support easy snapshoting with snapper

  1. Mount the root btrfs volume mount /dev/sda2 /mnt

  2. Create subvolume for root, home, var and one for snapshots

    btrfs subvolume create /mnt/@root

    btrfs subvolume create /mnt/@var

    btrfs subvolume create /mnt/@home

    btrfs subvolume create /mnt/@snapshots

  3. Mount them.

    umount /mnt

    mount -o noatime,compress=lzo,space_cache,subvol=@root /dev/sda2 /mnt

    mkdir /mnt/{boot,var,home,.snapshots}

    mount -o noatime,compress=lzo,space_cache,subvol=@var /dev/sda2 /mnt/var

    mount -o noatime,compress=lzo,space_cache,subvol=@home /dev/sda2 /mnt/home

    mount -o noatime,compress=lzo,space_cache,subvol=@snapshots /dev/sda2 /mnt/.snapshots

3. pacstrap and other normal shit you do when installing arch

Make sure that fstab is okay after you finish

4. Snapshot time

You can create snapshots like so

btrfs subvolume snapshot -r / /.snapshots/@root-`date +%F-%R`

And to restore from snapshot you just delete the currently used @root and replace it with a earlyer snapshot

mount /dev/sda2 /mnt

btrfs subvolume delete /mnt/@root

brtfs subvolume snapshot /mnt/@snapshots/@root-2015-08-10-20:19 /mnt/@root

and then just reboot :)

you will probably want to use Snapper or something like that to manage your snapshots.

?. Random notes

  1. syslinux sould be capable of booting a btrfs volume but afaik it is just talk, I havent found anyone in the internet who has a working syslinux btrfs boot without seperate /boot parition. Only GRUB is capable of booting from bare btrfs file system.
  2. /boot is not snapshottable with this setup, someone somewhere sugested to create a systemd service to copy files from btrfs /boot to your seperate FAT32 ESP partition when files change in /boot folder. I havent tried that yet.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment