3

I've installed FreeBSD 10.1 on a system which has two ZFS pools, and which boots from an other hard disk, which contains only the bootloader. The main pool disks are connected to SATA ports on a PCI-E card, while the bootloader tries to boot from the wrong pool (the second pool, which is connected directly to the SATA ports on the motherboard).

The error is the following:

Can't find /boot/zfsloader
FreeBSD/x86 boot
Default: storage:/boot/kernel/kernel
boot:
/
Cant't find /boot/kernel/kernel
FreeBSD/x86 boot
Default: storage:/boot/kernel/kernel
boot: 

I tried to set vfs.root.mountfrom="zfs:zpool" or "zfs:zpool/ROOT" in /mnt/boot/loader.conf but it doesn't work.

If I unplug the disks of the second pool, the system boots up correctly.

Thanks a lot.

3 Answers 3

1

Ok, I figured that out by myself.

ZFS Loader doesn't allow to set a root pool to boot from, but it tries to guess the correct one by pooling the BIOS for the boot priority order.

To make it boot from the correct pool, I set as first booting device in the BIOS the drive containing the bootloader, and as second and third the drives belonging to the root mirrored pool.

0

try to cp -r /boot from correct pool to wrong pool. ensure that bootfs property on wrong pool is empty or set to correct pool.

1
  • could you clarify your commands a little better, using details from original post, it would make your answer better. tks
    – X Tian
    Jun 18, 2015 at 16:10
0

Boot from an approriate distribution CD into "live CD" mode. Log in as root.

Now, let's say your bootable pool is called "tank";

import the pool without mounting it -

zpool import -N -f tank

Then set the bootfs property approriately. A common boot filesystem name is "tank/ROOT/default";

zpool set bootfs=tank/ROOT/default tank

that's it for the bootable pool. Repeat for the non-bootable pool, this time setting the bootfs property to "". There, you're done.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .