Mount order for ZFS, jails, and nullfs

Torbjorn Granlund tg at
Fri Sep 24 16:03:09 UTC 2010

In jails, I'd like a local ZFS /, a read-only nullfs-mounted /usr, and a
local /usr/local.  (I'd also have read-only nullfs-mounted /bin, /lib,
/libexec, but let's forget about that for now.)

This way, I can upgrade the master /usr once, in one place, and have all
jails inherit it.  And my dear jail inmates can install anything in
/usr/local (such as their favourite packages/ports).

I.e., things should look like this:

/myjail/                zfs
/myjail/usr             nullfs ro
/myjail/usr/local       zfs

There is no problem to make this happen by issuing a handful of commands
manually after boot, but I cannot seem to get it to work automatically,
with existing boot mechanism.  The problem is that the mount of /usr
will be attempted before ZFS has mounted /myjail, the jail's root.

ZFS maintains its own mount table.  It is possible to disable the
automated mounting in ZFS by specifying the pseudo mountpoint "legacy",
and then--according to the FreeBSD manual--mount it with mount(8).
Unfortunately, FreeBSD's mount seems unable to perform mounts of ZFS

How can I achieve the result I want after a reboot?

(The reply "use ezjail!" is not the right one.  :-) It does not do what
I want to do.  I dislike its symlink forest, and that it creates just
one ZFS filesystem for the entire jail.)


More information about the freebsd-questions mailing list