This is not a Btrfs problem yet. Syslinux isn't even getting the
kernel and initramfs loaded, otherwise you'd get a failure during
boot. But instead you're at the bootloader still.

One thing to realize is that syslinux only finds kernels and initramfs
on the local file system. So assuming this syslinux is on /dev/sda1:
UUID="37441f68... ext2 volume; then it can only load kernels and
initramfs from that file system. So I'm not sure what the purpose of
/dev/sdb1: UUID="e046823f ext4 is for, but if you use it for the boot
volume, you have to use extlinux install extlinux there *and* you have
to make sure the MBR has sdb1's active bit set *and* you have to make
sure the firmware boot manager is pointed to /dev/sdb.

But I don't think that's necessary, mainly you just need a really big
ext4 volume to hold all the distro kernels in one volume so that
syslinux has access to them. If you want separate boot volumes for
each distro then you have no choice but to use GRUB which can find and
load kernel/initramfs on any drive, any volume, with pretty much any
file system.

So the question is why won't that boot entry load the already working
kernel and initramfs? I don't have a good explanation for that. What
should happen if anything in APPEND is wrong, is you still get kernel
and initramfs loading, but then end up at a dracut shell. Or maybe it
crashes earlier due to some incompatibility by mixing kernel/initramfs
with the wrong rootfs (different kernel versions for example since all
the modules are version specific and those will be on Btrfs not on
boot).

I'd say you need some syslinux debug option set to find out what it's
tripping up on, because there's not enough information without that.
Maybe there's something in APPEND that it doesn't like, but I don't
think syslinux parses that line, it just adds it to the kernel boot
param line handed off to the kernel. But it's not even getting that
far.

The UUID e1284231- is the correct one to use for Btrfs.

I have not tried a double nested subvolume. I think you're better off
with directories at the top level for each distro, and then use
subvolumes in those directories for root and home. Note that the
Ubuntu and opensuse GUI installers will make this impossible, they
will not install to a user defined subvolume, they insist on creating
things at the top level. Fedora's installer will let you do this
except for rootfs, it requires that it be a new subvolume which you
can name but the UI won't let you stick it in a directory, or create
nested subvolumes. You could troubleshoot your existing APPEND by
using rootflags=subvolid= and specifying the ID of the arch/root
subvolume. But I'm suspicious whether that's a problem. You could try
removing the leading / because the path to the subvolume is really
subvol=arch/root. Hmmm.

That's all I'm thinking of at the moment.

Chris Murphy
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to