Skip to content

Instantly share code, notes, and snippets.

@dblueman
Last active October 25, 2025 08:33
Show Gist options
  • Select an option

  • Save dblueman/a18a85b5266a60ca9149e6fd65977a8f to your computer and use it in GitHub Desktop.

Select an option

Save dblueman/a18a85b5266a60ca9149e6fd65977a8f to your computer and use it in GitHub Desktop.
Raspberry Pi 5 NVMe 4KB sector size setup guide
  1. Prepare bootable USB stick

  2. Boot the Raspberry Pi from the stick OR adjust the source partitions below if using a NVMe to USB adapter

  3. Format NVMe drive to 4K sector size

apt install nvme-cli
nvme format /dev/nvme0n1 --lbaf=1
  1. Create and format partitions
parted /dev/nvme0n1 -- mklabel gpt \
  mkpart primary fat32 1MiB 1GiB \
  mkpart primary linux-swap 1GiB 2GiB \
  mkpart primary btrfs 2GiB 16GiB \
  mkpart primary btrfs 16GiB 100%
mkfs.vfat -n system-boot /dev/nvme0n1p1
mkswap -L swap /dev/nvme0n1p2
mkfs.btrfs --csum xxhash -L writable /dev/nvme0n1p3 
mkfs.btrfs --csum xxhash -L store /dev/nvme0n1p4
  1. Copy existing installation, adjusting fstab
mount /dev/sda1 /srv
mount /dev/nvme0n1p1 /mnt
rsync -aAXH /srv/ /mnt
sed -i 's/ext4/btrfs/g' /mnt/cmdline.txt
umount /srv /mnt

mount /dev/sda2 /srv
mount /dev/nvme0n1p3 /mnt
rsync -aAXH /srv/ /mnt
sed -i 's/ext4/btrfs/g' /mnt/etc/fstab
echo -e 'LABEL=store\t/srv\tbtrfs\tdefaults\t0\t1' >>/mnt/etc/fstab
echo -e 'LABEL=swap\tswap\tswap\tdefaults\t0\t0' >>/mnt/etc/fstab

umount /srv /mnt
  1. Power off
systemctl poweroff
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment