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

Andriy Gapon avg at FreeBSD.org
Fri Sep 13 13:20:38 UTC 2013


First, a note that below I try to reply not only to this specific message but to
the whole thread.

on 09/09/2013 04:02 J David said the following:
> 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

This is a very weird error.  It means that kernel was able to mount data/root as
a root filesystem, but couldn't find /sbin/init in it.
Which can mean at least two different things: (1) some other filesystem was
mounted instead of data/root because of some bug; (2) your data/root didn't
actually contain valid FreeBSD installation.

I set up a test system exactly the way you described above and I can not
reproduce this behavior.
Just in case, I used mfsbsd zfsinstall and that's how it creates and configures
a pool by default.

> If this is changed (as many Google hits recommend) to:
> 
> zfs_enable="YES"

I think that this was discussed enough in the thread and the right conclusions
have been already reached.
I just have two general comments:
- you don't have to trust everything that is written "on the internet".  Prefer
to use more or less authoritative sources: FreeBSD documentation, FreeBSD wiki,
posts by FreeBSD developers and alike
- it surprises me how many people who don't understand how the code works feel
that they can give advices to other people
- when *I* used the following query
  https://www.google.com/search?q=%22zfs_enable%22+%22loader.conf%22
  I could not find a single suggestion to put zfs_enable into loader.conf in the
first dozen of results (references to this thread excluded)

> 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.

Obvious (as already established).

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

Obvious (as already established).

> 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.

I just wish that I could reproduce this problem using exactly the same setup...
But I can't.
Perhaps there are any other special things about your configuration - like
having other pools or other disks/partitions that are not used by 'data' pool.
Any other non-standard things...


-- 
Andriy Gapon


More information about the freebsd-stable mailing list