Skip to content

Instantly share code, notes, and snippets.

@tjcomserv
Created July 7, 2025 22:19
Show Gist options
  • Select an option

  • Save tjcomserv/57e1edee0aab181eb9c04e619d44ef6c to your computer and use it in GitHub Desktop.

Select an option

Save tjcomserv/57e1edee0aab181eb9c04e619d44ef6c to your computer and use it in GitHub Desktop.
Setup Raspberry Pi with BTRFS and ZRAM
flash Rasbery Pi os image to sd card.
sudo mkdir /mnt/boot
sudo mkdir /mnt/rootfs
sudo mkdir /tmp/rootfs-backup
sudo mount /dev/mmcblk0p1 /mnt/boot
sudo mount /dev/mmcblk0p2 /mnt/rootfs
sudo rsync -aAX --info=progress2 /mnt/rootfs/ /tmp/rootfs-backup/
sudo umount /mnt/rootfs
sudo apt install cloud-guest-utils -y
sudo growpart /dev/mmcblk0 2
sudo mkfs.btrfs -f /dev/mmcblk0p2
sudo mount /dev/mmcblk0p2 /mnt/rootfs
[check brtfs partition size]
sudo btrfs filesystem usage /mnt/rootfs
sudo btrfs subvolume create /mnt/rootfs/@
sudo btrfs subvolume create /mnt/rootfs/@home
sudo rsync -aAX --info=progress2 /tmp/rootfs-backup/ /mnt/rootfs/@
sudo rsync -aAX --info=progress2 /mnt/rootfs/@/home/ /mnt/rootfs/@home
sudo rm -rf /mnt/rootfs/@/home/
sudo nano /mnt/rootfs/@/etc/fstab
[Replace ext4 lines with:]
/dev/mmcblk0p2 / btrfs defaults,subvol=@,compress=zstd 0 1
/dev/mmcblk0p2 /home btrfs defaults,subvol=@home,compress=zstd 0 2
sudo nano /mnt/boot/cmdline.txt
[change]
rootfstype=ext4
[to]
rootfstype=btrfs rootflags=subvol=@
sudo umount /mnt/boot
sudo umount /mnt/rootfs
[zram]
sudo apt update
sudo apt install git
git clone https://github.com/foundObjects/zram-swap
cd zram-swap
sudo ./install.sh
sudo dphys-swapfile swapoff
sudo reboot
cat /proc/swaps
sudo apt install btrfs-progs timeshift
sudo timeshift --btrfs --create --verbose
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment