David S. Miller wrote:
From: James Ketrenos <jketreno@xxxxxxxxxxxxxxx>
Date: Wed, 08 Jun 2005 12:10:37 -0500
My approach is to make the driver so it supports as many usage models as
possible, leaving policy to other components of the system.
I don't see how this kind of firmware load setup handles something
like an NFS root over such a device that requires firmware.
And let's not mention that I have to setup an initrd to make that
work, that's rediculious.
This is the kind of crap that happens when drivers in the kernel
are not self contained, and need "external stuff" to work properly.
It means that simple things like NFS root over the device do not
work in a straightforward, simple, and elegant manner.
Actually these questions has already been answered (though I know you
will probably grumble a bit :))
"early userspace" is the long term answer. usr/* in the current kernel
tree is a placeholder for an image that is shipped with the kernel,
which provides things (kernel modules, userspace programs, firmware)
that are necessary to boot.
The key is that it is shipped with the kernel source tree, and built
into the kernel image, and _dropped from memory_ after init. The entire
process should all be automatic.
Linus ack'd the current stuff (by merging it, after some discussion) and
would have merged klibc too, had it any users.
As to $current_thread, initramfs exists but "early userspace" does not.
There isn't AFAIK any infrastructure to automatically add firmware
to initrd in any standard distribution (corrections welcome!). So
today, initrd+firmware is just a big pain.
Therefore, the easiest way to make things work today is to poke Intel to
fix their firmware license so that we can distribute it with the kernel :)