BTRFS reinstalling without losing @home


I'm trying to understand how to reinstall garuda on a existing BTRFS partition while keeping the @home subvol to keep personal files.

The disk is organised like this :

/dev/vda is the boot efi partition in FAT32
/dev/vda2 is the / at @ and /home at @home.
For now it's a vm made with virt-manager and untouched for testing

I just want to reinstall the os on the btrfs subvol @ and keep the @home untouched.

I dont need to backup my data or anything, i know how to do it. I am only interested in this scenario.

calamared doesnt seems to see the btrfs tree.

i looked many vids regarding btrfs, but none gived me the answer.
I'm aware it would be easier if we made a snapshot after fresh install, but it's not the case.

Thx for you help

1 Like

Welcome :slight_smile:

In short, not possible.
As you said, save you /home and do a fresh install.

ok, thank you :wink:

Garuda has some known performance issues when installed in a VM, so bear that in mind while you do your testing and don't judge to harshly. When you are ready to install on the metal, that will give you the best performance.

You can complete the installation while leaving the existing subvolumes intact, but you will have to rename them first so they don't use names that the default installation will try to use (@, @cache, @home, @log, @root, @srv, and @tmp).

An easy way to do this is make a mountpoint outside the top-level subvolume.

sudo mkdir /mnt/top-level_subvolume
sudo mount -o subvolid=0 /dev/nvme0n1p2 /mnt/top-level_subvolume
cd /mnt/top-level_subvolume

From here, ls will show you all the top-level subvolumes and you can just rename them.

sudo mv @ @old
sudo mv @home @old_home

And so on with any other subvolumes listed there.

You will have to update /etc/fstab with the updated subvol= values if you want to keep this system bootable (I would recommend it, just as a precaution until the new system is ready for use).

Once that is all set, go ahead and install Garuda. Choose the manual partitioning option. Select the EFI partition and click on Edit. Be very careful with the selections you make--you want to keep the contents of the partitions--do not format or you will lose the first installation.

EFI partition:

  • Content: Keep
  • Mount point: /boot/efi

Next, select the Btrfs partition and click on Edit.

Btrfs partition:

  • Content: Keep
  • Mount point: /

After the installation, you will have a dual-boot setup on the one partition. Once you verify the Garuda installation is up and working as expected, you can delete any subvolumes from the old system you no longer wish to keep (i.e. you may delete @old if you wish).

You have a couple options with the home partition:

  • Mount @old_home and copy the contents over to your new @home. Be sure to preserve the filesystem attributes, etc with a robust copy option such as rsync -qaHAXS SOURCE_DIR DESTINATION_DIR as described here. After you have verified the files are intact you may remove the @old_home subvolume if you wish.
  • Remove the @home subvolume, then rename the @old_home subvolume and mount it at the new mount point /home.

I hope that helps, welcome to the community @bogdahn.


Thank you, i follow your instructions and it works perfectly :slight_smile:

Tank you very much for your help !


This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.