My FreeBSD workstation at home runs almost completely on ZFS, only /boot is
UFS. This works really, really good. However, if you’re running linux
applications you need to mount linprocfs at startup. This causes the system to
boot in single-user mode. It just can’t mount /usr/compat, since this is on a
ZFS filesystem which is mounted after the usual filesystems. In single-user
mode you could then do
zfs mount -a
exit
and everything works again. Of course, that’s no solution. First idea: simply
mount /usr as ‘legacy’ via fstab. Thats not very elegant. Second idea: change
rcorder so that /etc/rc.d/zfs runs before /etc/rc.d/mountcritlocal. This might
have some unconsidered sideeffects. It might also prevent ZFS from reading
zpool.cache in /boot/zfs (I didn’t try). Then I discovered the ‘late’ option
for mount(8) and fstab respectively. So the very simple solution is to change
the linprocfs entry in /etc/fstab to:
linprocfs       /compat/linux/proc  linprocfs   rw,late  0   0
This prevents linprocfs from being mounted before ZFS-based /usr.