Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Mar 2015 13:22:23 -0400
From:      Allan Jude <allanjude@freebsd.org>
To:        freebsd-hackers@freebsd.org
Cc:        prasadjoshi.linux@gmail.com
Subject:   Re: GSoC 15 - ZFS Boot Environment menu for GPT/EFI boot
Message-ID:  <550B05CF.80503@freebsd.org>
In-Reply-To: <CALJbWepJfr3y5Riv_tv%2Bc69gGDgHV1D6-x=C0PYyA%2Btza9QfBw@mail.gmail.com>
References:  <CALJbWepUcQEDqXjH2vLYqmDSig7iOTYVQR7n%2Bz1NUa_RihKFgg@mail.gmail.com> <CALJbWepJfr3y5Riv_tv%2Bc69gGDgHV1D6-x=C0PYyA%2Btza9QfBw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--ft9NAfFVNieKQmqGG47ak3ofaT7GEaul5
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

On 2015-03-19 12:38, Prasad Joshi wrote:
> Hello All,
>=20
> To get my self familiarize with the project idea. I tried certain thing=
s
> 1. Experimented with beadm - to create multiple environments,
> intentionally corrupted boot environment and then used earlier BE to
> boot from.
> 2. Compiled FreeBSD source and boot from it
> 3. Skimmed through https://wiki.freebsd.org/RootOnZFS/GPTZFSBoot to
> get some understanding of gptzfsboot
>=20
> As far as I can understand, gptzfsboot is installed on GTP partition
> explicitly taged as freebsd-boot partition. During machine bootup,
> gptzfsboot goes through all visible disks looking for ZFS file system.
> In my opinion, it identifies whether a disk belongs to ZFS by reading
> VDEV Label (not 100% sure though). Once a disk is identified, it has
> to discover other VDEVs in the ZPOOL. Once the pool has been figured
> out, it would be used for booting. I think a POOL or Dataset must also
> have bootfs property set.
>=20
> Once a bootable pool or dataset has been identified, it is given to
> zfsbootloader for final stage of kernel bootstrapping.
>=20
> Assuming my understanding is correct,  at the moment, gptzfsboot finds
> a single bootable dataset and starts bootstrapping. The aim of this
> project is to find list of all bootable datasets and display the list.
> User can select either one of dataset, which then will be passed to
> zfsloader.
>=20
> Besides this, as far as I understand, beadm must be taking snapshot of
> ZFS filesystem. Along with detecting bootable datasets, shouldn't
> gptzfsboot also look for snapshots created from beadm?
>=20
> I tried to browse through FreeBSD source, however I could not find
> gptzfsboot source. I think, it must be inside freebsd/sys/boot/i386
> directory. I will try to dig further.
>=20
> I will really appreciate, if experts from FreeBSD community help me in
> right direction. I will look forward for reply. BTW, I am still
> looking for mentor, please help.
>=20
> Thanks and Regards,
> Prasad
>=20
> On Wed, Mar 18, 2015 at 8:57 PM, Prasad Joshi
> <prasadjoshi.linux@gmail.com> wrote:
>> Hello,
>>
>> I am Prasad Joshi from India. I am planing to apply for GSoC 15, I
>> found idea 'ZFS Boot Environment menu for GPT/EFI boot'.
>> (https://wiki.freebsd.org/IdeasPage#ZFS_Boot_Environment_menu_for_GPT.=
2FEFI_boot)
>>
>> Last year I participated in GSoC, wherein I worked on OSv to add
>> Symlink support. Here is the link to my project
>> https://www.google-melange.com/gsoc/project/details/google/gsoc2014/pr=
asadjoshi/5741031244955648.
>> During the project I worked on enabling ZFS symlink support. I added
>> various related system calls like stat, lstat etc. I too had to modify=

>> name lookup (namei) to take care of symbolic links. It involved
>> changing other system calls like open, rename, unlink (basically
>> anything that touches file). However, my commits in OSv did not limit
>> to symlink support - I also worked on adding eventfd, fixing zfs
>> import/export/unmount functionality, and adding support for few
>> smaller system or glibc calls. Here is the link for my commits which
>> are accepted in OSv
>> https://github.com/cloudius-systems/osv/commits?author=3Dprasad-joshi
>>
>> I have also worked on KVM Tools project few years back, wherein I adde=
d
>> QCOW1/2 support in KVM Tools. Here is link of KVM Tools announcement
>> http://lwn.net/Articles/447556/
>>
>> I have also contributed few patches in QEMU, Illumos, and Linux
>> Kernel. In 2008-2010, I worked with company called KQInfotech, as a
>> developer for porting ZFS to Linux
>> (http://en.wikipedia.org/wiki/ZFS#KQ_InfoTech).
>>
>> Though I haven't worked on FreeBSD or PCBSD before, I am confident
>> that, I would be able to get up to speed in very short period of time.=

>>
>> At the moment, I am in process of understanding FreeBSD BE and
>> preparing a formal proposal for GSoC 15. I wish to find a mentor for
>> this project.
>>
>> I will look forward to reply.
>>
>> Thanks and Regards,
>> Prasad
> _______________________________________________
> freebsd-hackers@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.o=
rg"
>=20

the beadm tool works by taking a snapshot of the current 'bootfs'
dataset, and then creating a clone from that (since snapshots are read on=
ly)

In general, beadm has each boot environment as a dataset below some
common point, the old default was <poolname>/ROOT/<BEname>

however, newer versions of beadm allow the user to use any arbitrary
common directory, mine is <poolname>/bootenv/<BEname>

I wonder what the best way to pass this directory down to the gptzfsboot
code would be, maybe a 2nd property, in addition to bootfs (the default
dataset to use), something like belist=3D<poolname>/bootenv that
gptzfsboot could then list all of the child datasets of, to generate the
menu


--=20
Allan Jude


--ft9NAfFVNieKQmqGG47ak3ofaT7GEaul5
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (MingW32)

iQIcBAEBAgAGBQJVCwXRAAoJEJrBFpNRJZKfz8wP/RHosLqWTCd6bF3/aEDHO0FZ
SJaWYHEXM10kkUq+ZwgA4ao9FjhYZoyvM7cQzOFH4Bi60bwNL4EeTrmEoWpsEQKA
7KBAy75sLWtBn+S4m0QR/mRyKtWdbEgx8RabKCeHu3dBOjSm1X8CXLCAQFyaSh6o
25XJ87DykFyfiJS9ukHe8iOcZ0GCEt8sqX/jzlXF52KOgApMwJEWeejKYc1IX+21
I6vcqSUylc/sF80AEt2jO03GnLrdWoWnJeR3J5gh4zx9QIdh43GvSYYnpU4weD6p
5SbN4Z3aXjgCdFGlK37WCvyZm9571mU/kj+pj3Furja7+bvL1MzBu3s/cU+3dPIv
zYwsktSsTnhlgS9Kb3HlZFSGkQ9Z8eZxMg/kCRgnKXU9NigoaPr+qYnVCHjSo1TT
brv2aJH7Vp/00/XxNkxRQjRTh/r5oi19vnEB3i0u435EFvz3agAtGCLjfoiLFMSI
ANV7VEWflqbjtunlKChS2hIaI6U3dC6Jy1KTVZNQc8jrWi9X/0NhKfR8nzgO/g2d
GtgxHNorW6Osf+rpFn+T+iwaO1Lk7kK1k6njJsuMGmPTXh9gBz0wrug86LtlPL7p
tZc7Q5eze/Mo9QZpIfa2Jg5Kh5C7hVlWJ8hnSur6HDGWIZTdiEBKYJnIHi21EUe3
6rSa+w+Q0DujL2bdgjXu
=8W+r
-----END PGP SIGNATURE-----

--ft9NAfFVNieKQmqGG47ak3ofaT7GEaul5--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?550B05CF.80503>