udev in initrd

Jeremy Katz katzj at redhat.com
Tue Jul 6 22:38:42 UTC 2004


On Tue, 2004-07-06 at 18:17 +0200, Owen Taylor wrote:
> On Tue, 2004-07-06 at 22:28, Jeremy Katz wrote:
> The value of it on the case of the writable root filesystem is that
> you only have one path for how the system works, not two. Changes
> to device naming only have to be put into one place. Eventually we
> can simple drop the dev package and it's 18,000 files.

But exactly what does the 18k files cost it?  Similarly, we could drop
ldconfig runs in %post and just have all of the symlinks created on each
boot, but that doesn't strike me as a good idea either.  It's a useful
optimization to have them laid down by the install because then you
never have to create new device nodes.  Which can be a lot of device
nodes per device.  Changes to device naming is simple -- just make what
gets used for the creation the same as what gets used in the dev
package's spec file.  Nice and simple to do with current infrastructure.

> The less we have to modify the root file-system in our normal
> configuration, the less "weird" the diskless case is.

One tweak in /etc/sysconfig/foo doesn't seem overkill -- it could even
be something that's used for more than one thing (as I'm fairly certain
there will have to be other things that happen slightly different in the
diskless case)

> Plus we can't get away from the fact that /dev really is a dynamic
> system. Even if we ignore hotplug, we are modifying the permissions
> on it for the console user stuff. As such writing these changes to
> disk across reboots is wrong.

I disagree.  We'll just agree to disagree here. 

> > My bigger concern is that udev has _zero_ policy.  It basically is a
> > "well, we want to let people do what they want" system.  Which is no
> > better than doing nothing at all.  And then, when you try to put it into
> > initrds, you have to allow the full range of shell utilities which is
> > just absurdity.  If we're willing to say "this is our policy, if you
> > change it, you get to make changes to other things too so that they keep
> > working", that's fine and then udev could be almost reasonable (although
> > I still think it's overkill)
> 
> There's a lot of other components of our system which are absurdly
> over-configurable in ways that would badly break the system - the
> X init scripts, the init scripts, gdm, etc, etc. Isn't turning
> over-configurability into a working system one of the main 
> OS-assembly tasks?

Yes, but does that mean that we should add more overly configurable bits
when something far simpler would suffice?

> Clearly there has to be a policy about how devices are named; it's
> just one of the things that has to be there for a stable usable
> system. Having a simple C program that can read a policy 
> description file and name devices would certainly be vastly more
> efficient way of doing things than all the shell scripts that 
> udev runs.

Except that with what udev currently allows, you can't do so with one C
program...  because everyone wants a different way to do it.

> But udev exists now, and that's a big advantage for it.

Existence doesn't necessarily make something the best solution to a
problem.  In cases with significant architectural impact on the system,
it's far better to take a little bit longer and get a better technical
solution than to throw in something just because it's there.  I'll just
point to the file choose in gtk as an example here :-)

Jeremy





More information about the fedora-devel-list mailing list