Re: [boot-time]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/11/25 02:40, Marko Hoyer wrote:

Am 11.01.25 um 00:15 schrieb Rob Landley:
On 1/10/25 16:46, Marko Hoyer wrote:
So I think it is worth talking a bit about udev and options to deal with it but adapting thinks a bit to todays world. I'm currently registering for the wiki, maybe I can setup an initial page at some time ...

busybox mdev is a lot lighter weight, and can do pretty elaborate things.

https://wiki.alpinelinux.org/wiki/Mdev

https://github.com/fff7d1bc/mdev-like-a-boss

The theory these days is you mount devtmpfs and then use mdev to add scriptable behavior to device insertion/removal events via netlink notifications.

Rob

Hey Rob,

thx for the hint. Sounds good!

How is the enumeration of cold plugged devices realized in mdev? Is it similar to udev triggering all devices in the complete device tree?

mdev -s will scan /sys for current devices, it can be run as a hotplug helper, and there's netlink support somewhere but I've never used it.

https://busybox.net/downloads/BusyBox.html#mdev

The hotplug helper doesn't require a persistent demon like netlink does (or udev), at boot time you "mdev -s" to scan, then when you register a hotplug helper the kernel spawns a new process with environment variables whenever there's something new to do. The downside is if a lot of events come in rapidly it can spawn a lot of processes in parallel which makes sequencing difficult, which is why the netlink API exists as an alternative, but that doesn't really happen in systems I've put together, so...

I wrote some introductory documentation about this back in 2007. It's a bit stale, and never REALLY got finished, but...

https://landley.net/kdocs/local/hotplug2.html

That's the context within which sysfs happened.

/dev and /sys serve different purposes: /dev shows the device drivers' view of the system, full of devices that don't actually exist like /dev/null, or five devices for one piece of hardware (partitions), meanwhile a device that shows up but doesn't have a driver bound to it yet won't be in /dev at all. This is half the reason the old demon-managed "devfs" failed, it was CONCEPTUALLY wrong. (The other half was it used crazy solaris names for everything so people looking for /dev/hda1 couldn't find it and had to deal with some 9 character long monstrosity instead. Plus Linux isn't a microkernel so expecting a userspace demon to be necessary for /dev to _exist_ was just silly, and also led to some problems booting the system because were does that demon get its information from, eh?)

sysfs is a hardware view of the system, where /sys/devices/pci0000:00 is full of what bus probing found, and /sys/block/sda/dev contains "8:0" (major and minor number) when a driver binds to something and goes "mine", but something still had to mknod that.

devtmpfs is a synthetic filesystem that just DOES that, when a new "dev" node shows up under /sys/class or /sys/block it creates the apropriate char or block device under dev with that major/minor and the same name the directory uses (which is provided by the driver).

Oh, "synthetic" filesystem is one of the four times of filesystem: block backed, char/pipe backed, ram backed, and synthetic. I wrote documentation about that a very long time ago...

https://landley.net/toybox/doc/mount.html

Rob




[Index of Archives]     [Gstreamer Embedded]     [Linux MMC Devel]     [U-Boot V2]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux ARM Kernel]     [Linux OMAP]     [Linux SCSI]

  Powered by Linux