Breaking up kernel config files (GENERIC)

Garance A Drosihn drosih at rpi.edu
Sat Oct 23 17:56:41 PDT 2004


In the thread "Annoying SCSI waiting..."
     At 2:35 AM -0600 10/23/04, Scott Long wrote:
>Ruslan Ermilov wrote:
>>On Fri, Oct 22, 2004 at 05:11:18PM -0600, Scott Long wrote:
>>
>>>I'd like to see GENERIC get split into several sub-modules
>>>that live in /sys/conf and can be included instead of
>>>constantly duplicated.
>>>i.e.
>>>
>>>/sys/conf:
>>>/SCSI
>>>/BLOCK
>>>/NIC
>>>/USB
>>>/FIREWIRE
>>>
>>>etc.
>>>
>>>Again, only for HEAD, not for RELENG_5.  Thoughts?
>>
>>I've had this idea for quite some time too.  But my thought was
>>as far as having the sys/conf/GENERIC, a common portion of all
>>GENERIC configs for all architectures.
>
>I have a feeling that as we expand to things like ARM and possibly
>MIPS that there will be very little that is 'standard' anymore.
>It might be possible to distill some common 'CORE' pieces, but
>we really shouldn't over-engineer this =-)

But I think we should think about it a bit, and figure out what it
is that we "really want".  I am not sure what that is yet, but it
would be good to throw around some ideas.

>I've been hacking up config(8) to allow the 'include' directive to
>look outside of the current working directory.  Ideally I'd like
>to have a new directive that allows you to specify and/or override
>the default search path for included configs.  Unfortunately my
>blissful ignorance towards lex/yacc is starting to show =-)

So, what *do* we want, and what things do we need as we expand our
support to somewhere between six and ten architectures?

I do not know how I would break up *everything*, but let's take a
few easy cases.  Say, categories like SCSI or Firewire.

I think it is obvious that GENERIC should default to including
support for all scsi controllers, just so a person can get up and
running on any hardware that we support.  But when it comes time to
customize a kernel, what will a person want to do for any category?
Most likely, they want one of two things:
    1) Turn off *all* scsi, because they know they have no
       scsi card at all.
    2) Turn on the scsi card that they have, but turn off all
       other scsi cards.

For either case, what I would like is to duplicate the GENERIC kernel,
and then have to modify only one single line to get what I want (one
line per category, that is).  Maybe something like:
    1)   SCSI OFF
    2)   SCSI ON,ahc

If I know I have ahc (which I can read from dmesg), then I should not
need to learn the full list of possible SCSI controllers.  I just need
to know "I have one scsi controller, and it looks like that is called
'ahc', so I will turn on that specific controller and trust that all
other SCSI controllers will be turned off".

How does that sound?

-- 
Garance Alistair Drosehn            =   gad at gilead.netel.rpi.edu
Senior Systems Programmer           or  gad at freebsd.org
Rensselaer Polytechnic Institute    or  drosih at rpi.edu


More information about the freebsd-current mailing list