On Sat, May 29, 2010 at 01:34:24AM +0300, Andriy Gapon wrote:
> on 29/05/2010 00:58 Jeremy Chadwick said the following:
> > On Fri, May 28, 2010 at 12:26:12PM -0700, Dave Hayes wrote:
> >> Jeremy Chadwick <free...@jdc.parodius.com> writes:
> >>> And I think you meant this for variable names, in addition to what
> >>> vfs.root.mountfrom should be (specific to RELENG_8):
> >>> mfsroot_load="YES"
> >>> mfsroot_type="mfs_root"
> >>> mfsroot_name="/some/path/mfsroot"
> >> I'm using RELENG_7, but it seems rootfs_* works just like mfsroot_* ...
> >> is the former deprecated? 
> > 
> > I spent a small bit of time looking through both RELENG_7 and RELENG_8
> > source (/usr/src) as well as /boot (for the Forth portion) and I was
> > unable to find any reference to "rootfs" aside from actual variable
> > names (not loader variables) in C code or include files.  None were
> > strings.  There's a strong possibility I'm not looking the right way
> > (grep -ri ...).
> > 
> > I can assure you that mfsroot_xxx works on both platforms because I
> > wrote the below documentation:
> 
> Guys, you could have used "donotboot_" prefix there and it would still work 
> :-)
> _type, _name and _load suffixes are what is important in this particular case.
> See description of these suffixes in loader.conf(5).

Andriy, I'm still having a bit of trouble understanding how all of this
works.  No, not the loader part -- thanks for pointing that out, yeah, I
get that piece (mostly).

This is all I've managed to figure out, and it's probably wrong, but I'm
trying.  :-)

It appears the key piece is the xxx_type="mfs_root" declaration; the
string passed there (the value "mfs_root") is important.  One could also
use "md_image".  I'm basing that statement off of code in
src/sys/dev/md/md.c which appears to look for + permit either string.

However, what I'm having trouble understanding is what exactly
preload_search_info() looks for and how all this actually connects
and works.  It appears to me that there are specific drivers located in
src/sys/dev that are KLD-supported and others which are expected to be
included in the kernel statically.

The ones which appear to be required static are md, loop, ether, and
pty; they have no *_MODULE macros in use.  random and firmware, however,
are built as KLDs and do call DEV_MODULE() and DECLARE_MODULE() macros
respectively.

All that said, I'm still not sure xxx_type="mfs_root" "tickles" the use
of the md code.  I thought maybe the "metadata" was just a symbol lookup
(and maybe it is), but objdump on /boot/kernel/kernel and
/boot/kernel/kernel.symbols doesn't return anything.  strings on
/boot/kernel/kernel does return "mfs_root", but I'm almost certain
that's because of the strncmp() in src/sys/dev/md/md.c.

Actually, as I dig through it more, it looks like the md stuff is loaded
by GEOM?  I see DECLARE_GEOM_CLASS() in use which refers to g_md_class
that provides a series of addresses to initialisation and startup
routines, amongst other stuff.

...except there's /boot/kernel/geom_md.ko, so now I'm even more
confused.  Aaugh!  :-)

-- 
| Jeremy Chadwick                                   j...@parodius.com |
| Parodius Networking                       http://www.parodius.com/ |
| UNIX Systems Administrator                  Mountain View, CA, USA |
| Making life hard for others since 1977.              PGP: 4BD6C0CB |

_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "freebsd-stable-unsubscr...@freebsd.org"

Reply via email to