- With Ubuntu 24.04 it's not longer possible to setup FDE with BTRFS
- The new installer won't offer you any options for manually created dm-crypt volumes
- They move to a TPM-backed solution with a GRUB snap package Show archive.org snapshot
- Alternatives are LVM and encryption on ext4or ZFS with encryption (experimental)
- Another alternative is a proper Linux distribution Show archive.org snapshot
Caution
Only continue if you're a real BTRFS ultra fan.
Manual BTRFS setup
- Boot Ubuntu 24.04 Desktop
- Go to Disk setup->Erase disk and install Ubuntu->Advanced features
- Pick Use LVM and encryption
- It will setup such a layout
nvme0n1 259:0 0 931.5G 0 disk ├─nvme0n1p1 259:1 0 1G 0 part /boot/efi ├─nvme0n1p2 259:2 0 2G 0 part /boot └─nvme0n1p3 259:3 0 928.5G 0 part └─dm_crypt-0 252:0 0 928.4G 0 crypt └─ubuntu--vg-ubuntu--lv 252:1 0 928.4G 0 lvm /
- Reboot
- Install BTRFS tools: apt install btrfs-progs
- Set filesystem type to auto:sed -i 's/ext4/auto/g' /etc/fstab
- Disable the swap file: sed /i 's|^/swap|#&|g' /etc/fstab
- Create new initrd: update-initramfs -c -k all
- Reboot to validate everything is still working
- Boot from Live USB again
- Unlock the encrypted LVM device
- Convert the partition to BTRFS: btrfs-convert --uuid copy /dev/mapper/ubuntu--vg-ubuntu--lv
- Enjoy your new Ubuntu 24.04 with BTRFS
Setup BTRFS subvolumes
- Boot from Live USB
- Mount your BTRFS volume: mount -o subvol=/ /dev/mapper/ubuntu--vg-ubuntu--lv /mnt
- Move default subvolume to @cd /mnt btrfs subvolume snapshot . @ rmdir @/ext2_saved ls | grep -Ev "@|ext2_saved" | xargs rm -rf btrfs subvolume set-default @
- Create additional subvolumes
btrfs subvolume create @home cp -ax --reflink=always @/home/* @home
- Add to /etc/fstab:/dev/mapper/ubuntu--vg-ubuntu--lv /home btrfs defaults,subvol=@home 0 2
- Remove original files after successful migration
- Repeat for additional subvolumes. Some suggestions:
- @home
- @snapshots
- @swap
- @tmp
- @var_tmp
- @var_snap_lxd
- @var_lib_docker
 
Setup swap file
- btrfs filesystem mkswapfile --size 8g --uuid clear /swap/swapfile
- Add to /etc/fstab:/swap/swapfile none swap defaults 0 0
- Activate with swapon -a
- Delete old swap file: rm /swap.img