I've been running a Debian derivative (LMDE) on a ZFS root for half a year now. It was created by cloning a regular ext4-based install with all the necessary packages onto a ZFS pool, chrooting into that pool and recreating a grub menu and bootloader. The system uses an ext-3 dedicated /boot partition.
I would like to do the same with Ubuntu 14.04, but have encountered several obstacles.
- There is no Trusty zfs-grub package
- The default grub package doesn't have ZFS support built in. I found a small bug in the build system responsible for that (report with patch created) and built my own grub packages.
- The built-in ZFS support is dysfunctional, it does not add the proper arguments to the kernel command line
- I thus installed the ZoL grub package I also use on my LMDE system, which does give me a correct grub.cfg
However, even with that correct grub.cfg, the boot process apparently doesn't retrieve the bootfs parameter from the ZFS pool; instead the variable that's supposed to receive the value remains empty. As a result, initrd tries to load the default pool ("rpool"), which fails of course. I can however import the pool by hand, and complete the process by hand.
If memory serves me well, I also had to disable apparmor, to avoid the boot process from blocking after importing the pool.
Am I overlooking something? Just for comparison, I installed the Ubuntu 3.13 kernel on my LMDE system, and that works just fine (i.e. the identical kernel and grub binaries allow successful booting without glitches on LMDE but not on Ubuntu).
edit: grub bug reports: