cvs commit: src/release/alpha dokern.sh drivers.conf

Scott Long scott_long at btc.adaptec.com
Mon May 19 18:40:14 PDT 2003


Garrett Wollman wrote:
> <<On Mon, 19 May 2003 17:48:01 -0600 (MDT), "M. Warner Losh" <imp at bsdimp.com> said:
> 
> 
>>The .dsc files are just used when one can't load the .ko for an error
>>message.  I don't think they really add much for their 'cost' in the
>>install environment.
> 
> 
> We really should do all of the loading in the loader, anyway.  A
> little script that prompts ``Load additional driver modules? [yn]''
> shouldn't be too difficult to accomplish, and there are some things we
> might want to include (like GEOM classes) that may need to be
> pre-loaded.
> 
> -GAWollman

Since this has been brought up for debate, and I've been bitten by
FreeBSD's lack of working driver update support as recently as today,
let's talk about this.

FreeBSD needs a way for drivers to be easily loaded and installed during
installation.  Linux has had this for years; the lack of it in FreeBSD
makes it very hard for hardware vendors to offer driver support.  This
support should include an easy way for users to load drivers during the
install process, and in turn have the install process use them and
install them on the finished system correctly.  It should also allow
drivers on the install media to be overriden completely and/or not
loaded at all.

The first step is to strip down the GENERIC and BOOTMFS kernels to
their barest minimum, and have all loadable components by packaged as
modules.  Yes, this will slightly pessimize the kernel on UP systems,
but who reading this email doesn't immediately recompile their kernel
after installation anyways?  Having all loadable pieces be loadable
means that they don't have to actually be loaded; user-supplied drivers
can take their place without goofy symbol renaming or probe retval
tricks.

The second step is to make it easy to package, deliver, and load driver
update disks.  Defining a standard floppy format can be debated of
course, and doesn't matter a whole lot as long as it conveys enough
information for the user and installer to intelligently use it.
However, I do assert that this is much easier to do from the installer
than from the loader.  With the kernel completely stripped down, it
should be pretty straight-forward for the installer to load and unload
modules at the users' request.  Doing the same from the loader is also
possible, but let's face it: there are few people on the planet that
want to program in ficl.  Let's leave that realm to tweaking hints and
tunables that can't be changed once the kernel is running (Of course,
I've now opened the door for a meta-discussion on the merits of ficl in
the loader vs. ${your_favorite_interpreter}).

The third step is to make the installer actually install the
user-supplied drivers.  Right now sysinstall has an option for loading
KLD's from floppy, but that is all that it does.  It doesn't help much
when the driver you are loading is the storage driver for your
installtion, and once you reboot the driver is not loaded automatically.

I've wanted to work on this for quite a while, but I'm not sure I want
to further the viability of sysinstall.  However, others with less of a
dislike of sysinstall are welcome to take this proposal and run with it.

Scott



More information about the cvs-all mailing list