Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Jun 2020 12:06:27 -0600
From:      Warner Losh <imp@bsdimp.com>
To:        "Rodney W. Grimes" <freebsd-rwg@gndrsh.dnsmgr.net>
Cc:        "Simon J. Gerraty" <sjg@juniper.net>, Miguel C <miguelmclara@gmail.com>,  FreeBSD Current <freebsd-current@freebsd.org>
Subject:   Re: CTF: UEFI HTTP boot support
Message-ID:  <CANCZdfpiY3R4GLJTzDTEMFVjFhZvAtarMHMSzNg2bjMwP8QbCQ@mail.gmail.com>
In-Reply-To: <202006171752.05HHqo0E086454@gndrsh.dnsmgr.net>
References:  <46934.1592351291@kaos.jnpr.net> <202006171752.05HHqo0E086454@gndrsh.dnsmgr.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Jun 17, 2020 at 11:53 AM Rodney W. Grimes <
freebsd-rwg@gndrsh.dnsmgr.net> wrote:

> > Rodney W. Grimes <freebsd-rwg@gndrsh.dnsmgr.net> wrote:
> > > > The "fake cd drive" is in the kernel, loader just copies the iso into
> > > > memory like any other module, and by the time that's done you just
> > > > reboot into the newly installed system, which again uses
> > > >
> > > > vfs.root.mountfrom="cd9660:/dev/md0.uzip"
> > >                                   ^^^
> > >
> > > Argh, the cd9660 confused me, I think your doing a
> > > "root on mfs/md"?
> >
> > loader.conf says
> >
> > rootfs_load="yes"
> > rootfs_name="contents.izo"
> > rootfs_type="md_image"
> > vfs.root.mountfrom="cd9660:/dev/md0.uzip"
> >
> > contents.izo is uzip'd contents.iso which file(1)
> > describes as ISO 9660 CD-ROM filesystem data ''
> >
> > That's for normal boot, for the loader 'install' command
> > it expects an uncompressed iso for rootfs.
>
> Ok, now the puzzle is how much work to get from a stock FreeBSD .iso
> image to something that works with this.  Obviously we need a non-stock
> /boot/loader.conf file, or to type some commands manually at a loader
> prompt.  I believe the stock GENERIC kernel has the md_root support
> for this already, so it may not be that hard to do.
>

Looking at the code, I think MD_ROOT alone is insufficient here...

If there's no MD root provided, we look for the symbols mfs_root and
mfs_root_end, which I think means that rootfs_ in the above example needs
to be md_root_ instead so that we find it.

You may need to have a custom kernel with 'options MD_ROOT_READONLY'
because isofs is read-only.

And there's a small chance you may need to define ROOTDEVNAME in the build
as well to be "cd9660:/dev/md0.uzip"

Every time I do stuff like this I have to re-puzzle it out, alas, but these
should give you some guide posts. It should be better documented in md(4),
but isn't at the moment.

I'd honestly try to get this setup working first loading all the files off
a local disk before layering in the networking on top of that.

Warner



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