Do we need hotplug?

Alexander E. Patrakov patrakov at ums.usu.ru
Tue Aug 16 07:58:07 PDT 2005


Matthew Burgess wrote:
> Andrew Benton wrote:
> 
>> so do we need the hotplug scripts? Will they ever be used for 
>> anything? Is it ever called?
> 
> I don't think all device subsystems are udev-compatible at the moment 
> (the 'input' subsystem rings a bell here).  Additionally, I don't think 
> we handle 'coldplug' events correctly, somewhat ironically, without the 
> 'hotplug' scripts around.  Alexander will no doubt correct me on the 
> above though :)

Well, the main two reasons for including hotplug were:

1) Coldplugging (this includes not only loading modules, but also 
setting permissions on /proc/bus/usb/xxx/yyy by e.g. SANE and gPhoto2 -- 
but BLFS uses the "usb" group hack instead of those hotplug handlers)

2) Hotplugging.

Hotplugging can be done by Udev now, and it calls 
/etc/hotplug.d/whatever just as good old /sbin/hotplug did. But in 
/etc/hotplug.d are scripts from the Hotplug package (they calll agents 
in /etc/hotplug). Of course they can be replaced with udev rules from 
hotplug-light, http://www.bofh.it/~md/debian/ (requires linux >= 2.6.12, 
for installation instructions view debian/rules)

Coldplugging is a bit more problematic. hotplug-light does load modules, 
but does not recreate USB hotplug events correctly. This breaks 
chmodding pseudofiles in /proc/bus/usb/xxx/yyy when USB host controller 
is compiled as a non-module, and thus it will make my scanner 
inaccessible for non-root when BLFS finally moves from the obsolete 
"usb" group hack to the proper hotplug handlers.

There are two solutions discussed not long ago upstream. One is to make 
an initramfs that captures all early hotplug events, starting from the 
event with SEQNUM=0, and then replays those events when the root fs is 
mounted (basically, a better reimplementation of 
http://bugs.linuxfromscratch.org/show_bug.cgi?id=868 ). This is already 
available with recent udev releases. In this approach, there's no 
concept of coldplugging at all. The downside is that races are almost 
unavoidable.

Another solution is to put event replaying logic into udevstart. The 
downside is that approach is fragile WRT changes in the correspondence 
between hotplug variable names and sysfs attributes. Also, there were 
some objections on the list, like "this is not the task of udevstart, 
please at least put it into a separate binary". Noe that there's no 
implementation of this in the existing udev versions.

As for the input susbystem calling /sbin/hotplug directly and not 
duplicating events on the netlink socket, that's OK if you don't rely 
upon input module autoloading (e.g. for psmouse).

Back to the original question: Hotplug is not needed for a minimal 
system. Its use in LFS is limited to hardware detection facilities 
(compare /etc/sysconfig/modules in LFS-6.1 with LFS-6.0), and BLFS 
doesn't use hotplug yet. But it is useful.

-- 
Alexander E. Patrakov



More information about the lfs-dev mailing list