Subject: Re: LKMs (was Re: IPSEC in GENERIC)
To: Garrett D'Amore <garrett_damore@tadpole.com>
From: None <jonathan@dsg.stanford.edu>
List: tech-kern
Date: 02/20/2006 10:29:56
In message <43F9E3DC.8090002@tadpole.com>", Garrett D'Amore" writes:
>> I'm with you.  I've been hacking kernels (or the equivalent) since 1967.
>> I'd much rather have LKMs.  If I were king, I'd decree that *all* 
>> device drivers must be loadable, and *all* device drivers should be 
>> dynamically loaded except for those that are necessary to boot the 
>> system and read in new device drivers.
>>
>> 		--Steven M. Bellovin, http://www.cs.columbia.edu/~smb
>>
>>   
>This seems so obvious to me, that I was quite surprised to find the
>point contentious.  Anyway, as someone who is interested in it, I've
>raised the question about what is needed to make it happen -- with a
>willingness to provide some assistance if needed.

what's needed to make it happen?

1.  the current LKM interface has to die: it's too primitive to support
a this-decade  kernel composed of many dynamic modules.

2. We need an in-kernel linker for modules, so that modules can be
loaded early at boot.

3. Optionally, we need machinery in the machine-dependent bootloader
to load modules, and support in the kernel to link those modules into
the kernel "at boot".  Examples: loading optional firmware for a boot
device which matches the kernel's driver for that boot device.
(Anyone familiar with Qlogic isp drivers and firmware changes/fixes
knows what [i'm getting at).

I understand FreeBSD has had the relevant machinery for what, nearly a
decade.  Oh, and last, to keep us troglodyte builders of embedded
systems happy:

4.  config machinery to support current-style fully-static kernels,
for those who decide they still want that.