Boot on btrfs subvolume error: "mount: /new_root: unknown filesystem type 'btrfs' "

Hi all,

I am trying to install manjaro on a btrfs subvolume as I’ve done with other linux distributions ( ubuntu22.04, ubuntu23.10 ).
I’ve downloaded and installed the latest ISO. I’ve installed the system first on an ext4 partition as the installer didn’t give the option to choose btrfs.
Then on another btrfs filesystem already containing a subvolume, I’ve copied all the files of manjaro distribution on the ext4 filesystem below / into the btrfs subvolume.
I’ve setup the grub 40_custom entry to match the location of manjaro kernel and initrd file and as it boots, I get the aforementionned error:
mount: /new_root: unknown filesystem type ‘btrfs’
I thought the corresponding kernel might not support btrfs , but when I run the ext4 installed manjaro distribution, cat /proc/filesystems shows btrfs …
Does someone know how to fix this ?
Thanks !

Welcome to the forum! :vulcan_salute:

I guess you didn’t look around very well then, because it most certainly does offer you a choice of installing on btrfs, as well as on xfs, jfs, f2fs, and a whole batch of other Linux-native filesystems.

You probably need to rebuild the initramfs. :point_down:

mkinitcpio -P

You’ll have to chroot into the btrfs installation from the live USB or from the ext4 installation.

The following tutorial (:point_down:) is not really about your kind of problem, but it describes the procedure for chrooting into btrfs, because manjaro-chroot cannot deal with btrfs subvolumes.

You’ll probably also need a btrfs-capable version of grub, because the default grub cannot handle sparse files. Inside the `chroot, run the following command. :point_down:

pacman -S grub-btrfs

Hi,
Thanks for your help, it helped me solve this issue.
I have been looking very well to get btrfs installed this the beginning and didn’t find it, I have looked at it once more after your post with live usb and haven’t found it once more . I don’t see at any time the option to choose some filesystem different from ext4 using manjaro-gnome-23.0.4-231015-linux65.iso downloaded from Manjaro Downloads . I must be blind , dumb or both or maybe it’s not possible, :grin: .
The problem was indeed the initramfs lacking btrfs support, no problem with grub , at least the version that I use shipped from ubuntu22.04 version from which I output grub menus.
To get the right initramfs, I had to run the ext4 based manjaro distribution, modify /etc/mkcpio.conf adding btrfs in the list of HOOKS:

#HOOKS="base udev autodetect modconf block keyboard keymap consolefont plymouth 
filesystems"
HOOKS="base udev autodetect modconf block keyboard keymap consolefont plymouth f
ilesystems btrfs"

The commented line is the original version and the line below is the modified version.

After this modification, then as root: mkinitcpio -P and last I had to mount the btrfs volume and copy in the boot directory of btrfs mounted subvolume the newly issued initramfs files and reboot and it worked.

chroot in subvolume was possible without any special strategy, but then mkinitcpio -P output was: /proc must be mounted, thus I just used mkinitcpio on the ext4 running distribution and copied later the initramfs files from ext4 filesystem to btrfs subvolume.
Running mkinitcpio -P without having modified /etc/mkcpio.conf was not sufficient as I got the same initramfs as before, and using lsinitcpio initramfs.img |grep btrfs didn’t show any difference, just :

usr/lib/udev/rules.d/64-btrfs.rules

whereas after adding btrf hook to /etc/mkcpio.conf, the same command gives:

hooks/btrfs
usr/bin/btrfs
usr/bin/btrfsck
usr/lib/modules/6.5.5-1-MANJARO/kernel/fs/btrfs/
usr/lib/modules/6.5.5-1-MANJARO/kernel/fs/btrfs/btrfs.ko
usr/lib/udev/rules.d/64-btrfs.rule

If you know precisely how to choose btrfs or zfs at system installation , I would be really interested to see how

Thanks for your help !

You are not blind :wink:

The way to do it is not clearly shown.
You need to do manual partitioning to be able to use btrfs. But once you selected btrfs as filesystem for “/” the installer will do the right things. (create subvolumes for /, /home, … , and create fstab … )
:footprints:

1 Like

Hi,
I’ve tried manual partitionning, as for the first installation I had setup a new btrfs filesystem before beginning the distribution installation and as I chose this btrfs partition to install manjaro, the installer chose to partition it as ext4. By clicking on the corresponding partition, btrfs filesystem option was not proposed.
I must be missing something

1 Like

Obviously, considering how many of us are using btrfs. :stuck_out_tongue:

[nx-74205:/dev/pts/3][/home/aragorn]
[aragorn] >  lsblk -o NAME,FSTYPE,MOUNTPOINT
NAME    FSTYPE MOUNTPOINT
sda            
├─sda1  vfat   /boot/efi
├─sda2  ext4   /boot
├─sda3  btrfs  /
├─sda4  btrfs  /usr
├─sda5  btrfs  /usr/local
├─sda6  btrfs  /opt
├─sda7  btrfs  
├─sda8  btrfs  /srv
├─sda9  btrfs  /home
├─sda10 swap   
└─sda11 btrfs  /var
sdb            
├─sdb1  swap   
└─sdb2  btrfs  
sr0   

:tada:

I finally found out how to set up btrfs from start during installation but the way to do it is counterintuitive.
You have first to click on Erase the whole disk :face_with_raised_eyebrow:, then you can choose what would be the filesystem for this disk to be erased.
Before erasing it for real and while having chosen btrfs, then you can choose replace a partition and the previously chosen filesystem for disk erasure stays the same. Quite a strange way to choose filesystem partition type …
Thanks all for your help !

1 Like

When I think about it again, it was so complicated for me too.

I also canceled the install once because only ext4 was entered without asking and I couldn’t change that. Then I went back one step and chose manual partitioning. I then entered the partition itself as “/” with “btrfs”.

I didn’t format the ESP partition. (Hoping that it will still be added correctly into fstab)

The installer implemented the remaining special features in connection with BTRFS correctly without comment. But I wasn’t sure until the end whether this installation will be able to boot. The installer didn’t say anything about understanding me.

Maybe someone from the team should have a look at it :slight_smile:
@Yochanan @linux-aarhus

I am just thinking out load - don’t take me too serious.

I am no expert on btrfs - what seems to be what you are trying to do - is to use an existing btrfs subvol.

Without being the expert I would think that a collision with subvol naming has occurred.

Like with labels on partitions - if you want to idenfity a specific partition by name - a duplicate name is bound to create problems.

In my case it was a Windows partition (which was previously shrunk and a free partition was created). But there was no visible way to switch the installation to Btrfs. Only by going back and manually partitioning was I able to set btrfs.

(I know that btrfs doesn’t like being used on a partition previously formatted with btrfs) :footprints:

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