Can ZFS boot from other than the root of a pool?

Karl Denninger karl at denninger.net
Thu Mar 20 14:30:40 UTC 2014


On 3/20/2014 9:27 AM, Andreas Nilsson wrote:
> On Thu, Mar 20, 2014 at 3:19 PM, Freddie Cash <fjwcash at gmail.com> wrote:
>
>> Forgot to include the list in the original reply.
>>
>> Typos and terseness brought to you by the LG G2 running SlimKat.
>> ---------- Forwarded message ----------
>> From: "Freddie Cash" <fjwcash at gmail.com>
>> Date: Mar 20, 2014 7:17 AM
>> Subject: Re: Can ZFS boot from other than the root of a pool?
>> To: "Karl Denninger" <karl at denninger.net>
>> Cc:
>>
>>
>> On Mar 20, 2014 7:13 AM, "Karl Denninger" <karl at denninger.net> wrote:
>>> For a number of reasons having to do with backup strategy I want to mount
>> a ZFS root from "poolname/root" instead just "poolname."
>>> That works ok; I can set in /boot/loader.conf:
>>> vfs.root.mountfrom="zfs:zroot/root"
>>>
>>> But -- I cannot actually boot from there.  Unless the /boot directory is
>> in zfs:/zroot the system cannot find it, and I see no obvious way to
>> "teach" the loader that I want it to look in the filesystem under the top
>> level.
>>> This isn't a terrible pain as I can simply mount zroot on /mnt and then
>> copy zroot/root/boot over to zroot/boot whenever I make changes to the
>> kernel or boot environment (which is infrequent) but I'm wondering if I'm
>> missing something that would make booting directly from the filesystem
>> where root is specified to be possible.
>>> (Obviously until the loader.conf file is found the system doesn't know
>> where root is either, so this does look at first blush to be a "chicken and
>> egg" problem.)
>>
>> Read up on Boot Environments, install the beadm port, set the bootfs
>> property on the pool itself, and you'll be off to the races.
>>
> Yes. For quite some time. It is a bit easier on 9.2 and 10.0 and newer
> where there is no strict need for /boot/zfs/zpool.cache for the mount of /
> to succeed.
>
> I'm booting from tank/ROOT/10-STABLE-140310 om my workstation for example.
> To set it up (given the pool tank exists)
> zfs create -o mountpoint=none tank/ROOT
> zfs create tank/ROOT/yourpreferedname
> zpool set bootfs tank/ROOT/yourpreferedname tank
> make sure tank/ROOT/yourpreferedname has a "complete" install.
>
> Best regards
> Andreas
It LOOKS to me like this will work too:

zpool set bootfs tank/bootfs

... and in loader.conf (in /boot/loader.conf on tank/bootfs) set the 
root SOMEWHERE ELSE.

That has certain advantages, particularly if you want a GELI-encrypted root.

I'll play with this a bit.... (the ability to make upgrades much less 
dangerous in that an immediate-revert becomes pretty easy helps too)

-- 
-- Karl
karl at denninger.net


-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2711 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.freebsd.org/pipermail/freebsd-stable/attachments/20140320/9f9a4f0f/attachment.bin>


More information about the freebsd-stable mailing list