Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 19 Oct 2011 18:39:49 +0300
From:      Andriy Gapon <avg@FreeBSD.org>
To:        Florian Wagner <florian@wagner-flo.net>
Cc:        freebsd-fs@FreeBSD.org
Subject:   Re: Extending zfsboot.c to allow selecting filesystem from boot.config
Message-ID:  <4E9EEF45.9020404@FreeBSD.org>
In-Reply-To: <20111019082139.1661868e@auedv3.syscomp.de>
References:  <20111015214347.09f68e4e@naclador.mos32.de> <4E9ACA9F.5090308@FreeBSD.org> <20111019082139.1661868e@auedv3.syscomp.de>

next in thread | previous in thread | raw e-mail | index | archive | help
on 19/10/2011 09:21 Florian Wagner said the following:

Somewhere about this line an attribution of my text was expected :-)

>> on 15/10/2011 22:43 Florian Wagner said the following:
>>> Hi,
>>> 
>>> from looking at the code in sys/boot/i386/zfsboot/zfsboot.c the ZFS 
>>> aware boot block already allows to select pool to load the kernel from
>>> by adding <POOL>:<FILE TO BOOT> to the boot.config. As this code calls
>>> the zfs_mount_pool function it will look for the bootfs property on the
>>> new pool or use its root dataset to get the file from there.
>>> 
>>> How much work would it be to extend the loader to also allow selecting
>>> a ZFS filesystem?
>>> 
>>> What I'd like to do is place a boot.config on the (otherwise empty) 
>>> root of my system pool and then tell it to get the loader from another
>>> filesystem by putting "rpool/root/stable-8-r226381:/boot/zfsloader" in
>>> there.
>> 
>> Please check out the following changes: 
>> https://gitorious.org/~avg/freebsd/avgbsd/commit/8c3808c4bb2a2cd746db3e9c46871c9bdf943ef6
>>
>> 
https://gitorious.org/~avg/freebsd/avgbsd/commit/0b4279c0d366d9f2b5bb9d4c0dd3229d8936d92b
>> https://gitorious.org/~avg/freebsd/avgbsd/commit/b29ab78b079f27918de1683e88bcb1817a0e5969
>>
>> 
https://gitorious.org/~avg/freebsd/avgbsd/commit/f49add15516dfd582258b6820b8f0254cf9419a3
>> https://gitorious.org/~avg/freebsd/avgbsd/commit/e072b443b0f59fe1ff54a70d2437d63698bbf597
>>
>> 
https://gitorious.org/~avg/freebsd/avgbsd/commit/f701760c10812c5b6925352fb003408c19170063
> 
> Looks great!
> 
> I've applied the patches to my checkout of Stable 8 and gave the resulting
> gptzfsboot and zfsloader a cursory try in a virtual machine.

Thank you for testing!

> Commit f701760c10812c5b6925352fb003408c19170063 breaks the build of the 
> non-ZFS-enabled bootcode. The syntax is wrong in the following snippet if
> LOADER_ZFS_SUPPORT is not defined. Moving the closing bracket ("};") right
> after the second #endif into the preprocessor conditional fixes that.

Thank you for reporting this!

> @@ -52,14 +52,21 @@ u_int32_t	howto; u_int32_t	bootdev; u_int32_t
> bootflags; +#ifdef LOADER_ZFS_SUPPORT union { +#endif struct { u_int32_t
> pxeinfo; u_int32_t	res2; }; +#ifdef LOADER_ZFS_SUPPORT uint64_t	zfspool; 
> +#endif }; u_int32_t	bootinfo; +#ifdef LOADER_ZFS_SUPPORT +    uint64_t
> zfsroot; +#endif } *kargs;
> 
> 
> The only thing I was a bit confused by is that on the boot prompt only the
> pool and filename to be booted are printed.

Do you mean the (gpt)zfsboot prompt?

> Apart from that it worked as expected. Not having to set vfs.root.mountfrom
> in the loader is nice.

Thanks!
-- 
Andriy Gapon



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4E9EEF45.9020404>