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>