Comment 3 for bug 1321335

Revision history for this message
RJVB (rjvbertin) wrote :

Of course it's a patch :)

Here's an update:

Even with the posted patch that allows the build to succeed, not all FS tests succeed, in particular zfs_test. It fails with a TIME_FAIL error (which is probably benign as it appears to concern a subsecond difference).

I thus had to disable the build checks in order to be able to build my .deb packages.

Worse, update-grub2 will not generate a proper grub.cfg for ZFS roots:

{{{
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-b927688a3f8a6e13' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod btrfs
set root='hd2,msdos4'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd2,msdos4 --hint-efi=hd2,msdos4 --hint-baremetal=ahci2,msdos4 2def3c9f-2a12-41e0-911f-7de7cc142a99
else
search --no-floppy --fs-uuid --set=root 2def3c9f-2a12-41e0-911f-7de7cc142a99
fi
linux /vmlinuz-3.13.9-ck1-kubuntu-ck-amdf10-rjvb root=ZFS=zPatux/ ro
initrd /initrd.img-3.13.9-ck1-kubuntu-ck-amdf10-rjvb
}
}}}
In other words, the required zfs modules are not loaded, and the kernel isn't informed about the fact it's booting off ZFS. A more correct entry should read:
{{{
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-b927688a3f8a6e13' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
insmod zfsinfo
zfs-bootfs ($root) bootfs
insmod part_msdos
insmod btrfs
set root='hd2,msdos4'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd2,msdos4 --hint-efi=hd2,msdos4 --hint-baremetal=ahci2,msdos4 2def3c9f-2a12-41e0-911f-7de7cc142a99
else
search --no-floppy --fs-uuid --set=root 2def3c9f-2a12-41e0-911f-7de7cc142a99
fi
linux /vmlinuz-3.13.9-ck1-kubuntu-ck-amdf10-rjvb root=ZFS=zPatux/ ro boot=zfs $bootfs
initrd /initrd.img-3.13.9-ck1-kubuntu-ck-amdf10-rjvb
}
}}}
but even that gives an "invalid label" error upon boot and then tries to import the default pool name, rpool, instead of the right one.
For reference, here's a menuentry from a different system (using the exact same kernel) which boots OK:
{{{
menuentry 'LinuxMint GNU/Linux' --class linuxmint --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-7c11ad880751a42a' {
load_video
gfxmode $linux_gfx_mode
insmod gzio
insmod zfsinfo
zfs-bootfs ($root) bootfs
insmod part_msdos
insmod ext2
set root='hd0,msdos7'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos7 --hint-efi=hd0,msdos7 --hint-baremetal=ahci0,msdos7 39ff79e1-e153-490f-b302-4ba8e71fe643
else
search --no-floppy --fs-uuid --set=root 39ff79e1-e153-490f-b302-4ba8e71fe643
fi
linux /vmlinuz-3.13.9-ck1-kubuntu-ck-amdf10-rjvb root=ZFS=Patux/ ro boot=zfs $bootfs
initrd /initrd.img-3.13.9-ck1-kubuntu-ck-amdf10-rjvb
}
}}}

And finally, even when I import the right pool at the GRUB prompt and get the boot process to continue, it will halt (freeze, block) during the initial systemd run, typically during or just after mounting the initial encrypted disks. If I disable that systemd entry, the process will freeze during network initialisation. Ctrl-Alt-Del will then no longer allow the system to be rebooted.