On Tue, Mar 13, 2012 at 5:03 PM, Alan Mackenzie <a...@muc.de> wrote:
> On Tue, Mar 13, 2012 at 04:38:08PM -0600, Canek Peláez Valdés wrote:
>> On Tue, Mar 13, 2012 at 4:20 PM, Alan Mackenzie <a...@muc.de> wrote:
>> > Hello, Neil.
>
>> > On Tue, Mar 13, 2012 at 09:33:30PM +0000, Neil Bothwick wrote:
>> >> On Tue, 13 Mar 2012 21:07:37 +0000, Alan Mackenzie wrote:
>
>> >> > But I really meant what functionality udev has that mdev lacks.  For
>> >> > example, mdev this morning recognised my USB stick being inserted, and
>> >> > created /dev/sdc for it.
>
>> >> udev does a *lot* more than that, for example the persistent naming of
>> >> network interfaces. More significantly, it can run programs based on
>> >> device rules.
>
>> > This is where I start getting unhappy.  Is there any need for this
>> > blurring?  Having device nodes is essential to a linux system, and
>> > some programs use these nodes.  Why must they be mashed together into a
>> > tasteless mush?  Is there some advantage to this I haven't twigged yet?
>
>> >> For example, usb_modeswitch installs a udev rule to switch a 3G USB
>> >> modem from CD to modem mode, without which it won't work.
>
>> > Same question as above: why does that switching have to be done via the
>> > device node system rather than via the driver.  Isn't that what drivers
>> > are for?
>
>> >> That's fine when you plug it into a running system, but when you boot
>> >> with it plugged in, it can trip over itself because the usb_modeswitch
>> >> executable is in /usr/sbin.
>
>> > Er, that's a different discussion altogether.  ;-)
>
>> >> You could use this to argue that /usr should be mounted before udev is
>> >> started, but you could just as well use it to argue that udev should not
>> >> be trying to run such rules at the boot runlevel.
>
>> > Or that udev shouldn't have "rules".  I still don't understand the basic
>> > concept driving this thing.  My HDDs don't need rules - they just need a
>> > mapping from /dev/sd[ab] into device 8/0 and 8/16, and the appropriate
>> > drivers built into my kernel.
>
>> > Am I being stupid?  Despite your example above, I still don't see what
>> > udev is about, why it's necessary, or even why it's advantageous.
>
>> IMHO, the thing that most people are missing is the fact that neither
>> udev nor Linux "got complicated". The computing world itself "got
>> complicated".
>
> Not really.  It's been getting more complicated since long before I
> starting working in it in 1980.  Nothing's changed there.
>
>> We have Linux running in the same beige machines it has been running
>> since 1991, but it also runs in TVs, tablets, cellphones, fridges,
>> cars, ebook readers, and (soon enough, I'm sure) the kitchen sink.
>> This devices behave very differently from our old and beloved beige
>> boxen.
>
> Not at the level of needing device nodes under /dev and drivers connected
> to them, they haven't.
>
>> They need to handle lots of different hardware comming and going, via
>> USB, Firewire, Bluetooth, WIMAX, and who knows what else in the future.
>
> Yes.  That's why there's a generic facility for building arbitrary
> drivers into a kernel.  That's not new either.
>
>> The principal idea behind udev, is that we *don't* kown (we *can't*
>> know) what hardware this or that machine is gonna have at some point.
>> And we want the machine (and the new hardware) to "just work" when
>> they are connected.
>
> Huh?  What's that to do with udev?  You're talking at far too high a
> level of abstraction.  The new hardware will "just work" if there are the
> correct drivers built in.  That's as true of udev as it is of mdev as it
> is of the old static /dev with mknod.

No, it is not. You are letting out the sine qua non of the matter: the
device has to be built, *and the /dev file should exists*. I hope you
are not suggesting that we put *ALL* the possible files under /dev,
because that was the idea before devfs, and it doesn't work *IN
GENERAL*.

So, you need something to handle device files on /dev, so you don't
need every possible device file for every possible piece of hardware.
But then you want to handle the same device with the same device name,
so you need some kind of database. Then for the majority of users,
they want to see *something* happen when they connect aa piece of
hardware to their computers. So you need to handle the events
associated with the connections (or discovery, for things like
Bluetooth) of the devices, and since udev is already handling the
database and the detection of connections/discovery, I agree with the
decision of leting udev to execute programs when something gets
connected. You could get that function in another program, but you are
only moving the problem, *and it can also happen very early at boot
time*, so lets udev handle it all the time.

I hope you see where I'm going. As I said before, mdev could (in
theory) do the same that udev does. But then it will be as complicated
as udev, *because it is a complicated problem* in general. And I again
use my fuel injection analogy: it is not *necessary*. It is just very
damn convenient.

> [ .... ]
>
>> So, yeah, it's more complicated. The world got complicate; better get
>> used to it.
>
> You're bluffing, aren't you?  You really don't have any more idea than I
> do about the technical motivation for udev, do you?

I'm not, and I have a really time understanding why you don't see the
complexity on the problem. I explained above: it is a complicated
problem (when dealing with the general case), and therefore the
(general) solution is bound to be also complicated.

You want it simple? Tha'ts fine, it is possible. It's just that it
will not solve the general problem, just a very specific subset of it.
Just as mdev is doing; Walt just posted an email explaining that if
you use GNOME, KDE, XFCE, or LVM2, mdev is not for you.

I will not be surprised if in the future the list of programs "not for
mdev" only grows.

Regards.
-- 
Canek Peláez Valdés
Posgrado en Ciencia e Ingeniería de la Computación
Universidad Nacional Autónoma de México

Reply via email to