Combining / and /boot in different ZFS pools

Grzegorz Junka list1 at gjunka.com
Mon Jan 1 18:49:11 UTC 2018


My motherboard doesn't support booting from NVMe and I am trying to 
install the loader on a USB drive.

I have two ZFS pools:

Two NVMe drives, each with two partitions, 1: freebsd-swap, 2: 
freebsd-zfs; ZFS pool tank6 mirror set up on nvd0p2 and nvd1p2
One USB drive with two partitions, 1: freebsd-boot, 2: freebsd-zfs; ZFS 
pool tank7 using single partition da0p2

The intention is to have the main root '/' on the NVMe drives and only 
the '/boot' folder on the USB drive (since NVMe is much faster).

Some of the datasets I have set up (listing dataset and mountpoint):

tank6 none
tank6/ROOT none
tank6/ROOT/default /
...

tank7 none
tank7/ROOT none
tank7/ROOT/boot /boot
...

After creating all the datasets bsdsysinstall installed all the files in 
all the datasets as expected. When in bsdinstall shell (memstick) with 
altroot as /mnt, command 'zfs list' correctly lists all filesystems. 
Also, when executing ls -l, /mnt/boot contains boot files (including the 
kernel in /mnt/boot/kernel), and /mnt/ contains the rest of the system.

I have set up the bootfs as follows:

gpart bootcode -b /boot/pmbr nvd0
gpart bootcode -b /boot/pmbr nvd1

gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0

zpool set bootfs=tank6/ROOT/default tank6
zpool set bootfs=tank7/ROOT/boot tank7

However, when trying to boot from the USB I am getting an error from the 
system loader:

Can't find /boot/zfsloader

FreeBSD/x86 boot
Default: tank7/ROOT/boot:/boot/kernel/kernel

My guess is that when booting up, the filesystems of tank6 and tank7 are 
not mounted and combined correctly. I tried to set tank6 as the booting 
drive in tank7:

zpool set bootfs=tank6/ROOT/default tank7

but this throws an error.

My question is if it's possible to boot the system from '/boot' set up 
on a different ZFS pool than the ZFS pool containing the root '/' folder?

GrzegorzJ



More information about the freebsd-questions mailing list