Moving root partition to ZFS

I've been really puzzled by this.

Background: I have most of my storage, and my home folder, on zfs. I love it! I decided to bite the bullet and put the root partition on a zfs partition as well. It is currently on a lvm ext4 partition.
I am using a clean nvme drive. Because grub can't access pools with all features enabled, I set up a 2G partition for grub. Turned it into a zfs pool, poolb, and created a zfs filesystem poolb/boot. Copied my /boot partition there, made the appropriate changes to fstab, did an update-initramfs, update-grub, and grub install. Rebooted, all works well with /boot mounted on the zfs partition, / still on ext4.

Now. With (most of) the rest of the drive, I created a partition for poolr/cryptr/root. Copied my root filesystem across with rsync -ax / /mnt/newroot (where the zfs is mounted). All ok.

then:

cd /mnt/newroot
for d in proc dev sys run ; do mount --rbind /$d $d ; done
chroot . /bin/bash

I'm now sitting with root mounted on zfs /, boot on zfs /boot. Everything seems to work, so I need to make it bootable.

update-initramfs -u
works ok

update-grub
does *not find the vmlinuz kernels/ramfs even though they are visible on /boot. Just creates a boot.cfg with no linux kernels!

I've tried everything I can think of to fix this. update-grub just doesn't seem to work when run from within the zfs / filesystem. No error messages, just doesn't find the kernels.

I'd really appreciate some ideas here, I've run out of them!

Thanks