zfs_enable vs zfs_load in loader.conf (but neither works)

J David j.david.lists at gmail.com
Mon Sep 9 01:02:04 UTC 2013


After setting up a new machine to boot from a ZFS root using the 9.1
install, it worked fine, but when the kernel & world was updated to
releng/9.2, it stopped booting.  The pool is called "data" and the
root partition is "data/root."

Under 9.1 it had in loader.conf:

zfs_load="YES"
vfs.root.mountfrom="zfs:data/root"

Under 9.2-RC3, the same config results in a panic:

Trying to mount root from zfs:data/root []…
init: not found in path
/sbin/init:/sbin/oinit:/sbin/init.bak:/rescue/init:/stand/sysinstall
panic: no init

If this is changed (as many Google hits recommend) to:

zfs_enable="YES"
vfs.root.mountfrom="zfs:data/root"

It seems like ZFS doesn't get loaded, so it fails instead with:

Trying to mount root from zfs:data/root []…
Mounting from zfs:data/root failed with error 2: unknown file system.

If the "?" mountroot> option is used, 50 devices are listed, none of
which are ZFS.  And the "unknown file system" response comes from
vfs_byname returning NULL for zfs.

(If both zfs_enable and zfs_load are set to "YES" then it fails as the
zfs_load case.)

The system is using update-to-date zpool (v5000 / feature flags), and
all the updated bootblocks from the releng/9.2 build.  zpool.cache is
correct, the zpool imports fine from the 9.2-RC3 live cd.  The zpool's
bootfs is set correctly, the zfs mountpoint of data/root is / .  And,
of course, init is present and health in data/root.  The system booted
fine until updating to 9.2.

Which loader.conf entry is actually correct for ZFS roots on 9.2, and
what (else) needs to happen to make this system bootable again?

Thanks for any advice!


More information about the freebsd-stable mailing list