How can I convert my root partition from BTRFS to EXT4?

I'm just going on the available tools, not experience or documentation. You might want to test this with a partition (even just an image) you don't mind losing if it all goes wrong. Don't attempt this without taking a backup.

btrfs-convert has a roll-back function to undo a conversion. I'm not sure if this works for partitions that weren't converted to btrfs with btrfs-convert.

  1. Start by unmounting the filesystem. If it's essential to the system, boot into a LiveCD.

  2. Install btrfs-tools

    sudo apt-get install btrfs-tools
    
  3. Roll back the conversion

    sudo btrfs-convert -r /dev/sdXn
    

As far as I know you cannot convert btrfs to any other filesystem.


I did this using a system with multiboot distros (Ubuntu on ext4, Xubuntu on btrfs). Running Ubuntu, I have taken the Xubuntu btrfs home partition, and archived it using fsarchiver. I was then able to restore it, again using fsarchiver, to a different partition and specify ext4 filesystem type. That seemed to work okay.

Still in Ubuntu, I mounted the Xubuntu root partition on /mnt, and edited /mnt/@/etc/fstab to change the mount for /home to point to the new ext4 partition, changing both the UUID and the fs type, and deleting the subvolume data. I saved the file, and rebooted into Xubuntu.

There was an error in booting, and booting halted. The error was that I had another partition I wanted to mount to my ~/Documents directory which failed. I selected to manually fix the problem. It turns out that my root partition mounted okay as ext4, but when I did a list command I got

#ls /home
@home

So the original btrfs subvolume structure was still there in the ext4 filesystem. I issued the command

mount --bind /home/@home /home

I then pressed ctrl-D to continue booting, and Xubuntu continued booting and everything came up fine. I haven't done it yet, as I'm still on this initial boot, but I'm certain I could put that bind command in my fstab file. Or perhaps I could have left the subvolume info in the fstab entry, I don't know.

What I will do instead, however (this is off-topic), is take a more mature instance of a /home (ext4) partition for Xubuntu from another computer and use that instead. I've already proven that this will work.