/boot on btrfs Subvolume

Fedora 27 and Beyond!

April 10, 2018

Historically, installing Fedora with /boot on a btrfs subvolume was impossible. The reason for this was actually somewhat trivial: grubby had a bug where it failed to detect the path to the kernel and initramfs when a btrfs subvolume was used. Fortunately, that bug has now been fixed.

However, there is one minor issue that still prevents you from installing stock Fedora in this configuration. Due to the aforementioned grubby bug, Anaconda excluded btrfs subvolumes from its internal whitelist for /boot. I have filed a trivial patch against Anaconda which enables this functionality. However, the Anaconda team does not have the time to review this patch for Fedora 28. You can follow this Anaconda effort at this bug as well.

The good news is that we can bypass this blocker using the magic of Anaconda update images! For your convenience, I have created these update images for Fedora 27. You can find them here. I will update them for Fedora 28 once it is released.

Installing Fedora 27 with /boot on a btrfs Subvolume

Begin by downloading your Fedora 27 media of choice and booting it. When you get to the bootloader menu, press tab.

Fedora 27 Bootloader Menu

This brings up the kernel command line interface. We will simply add the URL to the Anaconda update image as you see in the image below. Please note that you will need to adjust the architecture in the URL for your installation target.

Adding the Anaconda Update Image

Triple-check that you type this URL correctly as this will be the most common source of errors in this process. When you are sure it is correct, press Enter to continue. If you mistype it, Anaconda will fail to download the image and will give you an error.

From here you will continue the install as normal until you come to the main Anaconda menu screen shown below. You will need to choose the “Installation Source” option.

Main Anaconda Menu

Once in the Installation Source submenu, you will need to uncheck the checkbox shown in the image below. Doing this enables Anaconda to download and install the latest version of the packages (in our case, grubby) from the internet rather than the version that is on the install media. This step is necessary for Fedora 27 since we need the fixed grubby. However, this should be unnecessary for Fedora 28 which should contain a new enough version.

Installation Source

That’s it! Just continue the install like normal and put your /boot partition on a btrfs subvolume. Everything should work correctly from here.


We’d love to hear your feedback! If you encounter problems - or simply want to report your success - please leave a comment on one of the relevant bugs above.

comments powered by Disqus