looking for verification about my understanding of hotplug

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

 



  i've never had to mess with hotplug a lot, so these will be simple
questions, i just want to verify that i'm seeing this the right way.

  a friend asked me to tweak his embedded linux system so that an
inserted USB key would be automounted.  the system is based on busybox
so initial solutions proposed before i was brought in were both mdev
and udev.  except that the system has a *static* /dev directory which
makes mdev and udev sort of inappropriate.

  after some advice on another mailing list, and based on the fact
that /dev is static, it looks like the solution is to avoid udev and
mdev entirely and just use a custom /sbin/hotplug script.  and after
the reading the source of the 2.6.23 kernel (which is what the system
has), this is how i see things.

  there are two snippets of kernel source that look relevant.

kernel/sysctl.c:
===============

#if defined(CONFIG_HOTPLUG) && defined(CONFIG_NET)
        {
                .ctl_name       = KERN_HOTPLUG,
                .procname       = "hotplug",
                .data           = &uevent_helper,
                .maxlen         = UEVENT_HELPER_PATH_LEN,
                .mode           = 0644,
                .proc_handler   = &proc_dostring,
                .strategy       = &sysctl_string,
        },
#endif

lib/kobject_uevent.c:
====================

...
#if defined(CONFIG_HOTPLUG)
u64 uevent_seqnum;
char uevent_helper[UEVENT_HELPER_PATH_LEN] = "/sbin/hotplug";
...

  so here's how i understand it.  first, the default script executed
on events is /sbin/hotplug, clearly hardcoded above.  so even if i
have no /proc/sys/kernel/hotplug file, hotplugging will still work and
i just need to write and install /sbin/hotplug to get it to do what i
want.

  on the other hand, if i *additionally* configure CONFIG_NET, i will
now have the file /proc/sys/kernel/hotplug, with which i can customize
which script is invoked on events.  but if i do that, the default
value for that file is empty, so i *must* set it to something;
otherwise, no hotplugging script is invoked.  in short, if all i want
is invocation of /sbin/hotplug for all events, i have no need for
/proc/sys/kernel/hotplug to exist.  correct?

  finally, given that /sbin/hotplug is going to be a shell script in
my case, i was told that i can get all of the info i need just by
examining all of the environment passed in when it's invoked.  in
fact, i wrote and installed the following /sbin/hotplug:

=====
#!/bin/sh

env > /tmp/hotplug.env
=====

and what was produced upon insertion of a USB/serial adapter was:

=====
SUBSYSTEM=tty
DEVPATH=/devices/pci0000:00/0000:00:12.0/usb3/3-1/3-1:1.0/ttyUSB0/tty/ttyUSB0
MINOR=0
PATH=/sbin:/bin:/usr/sbin:/usr/bin
ACTION=add
PWD=/
MAJOR=188
DEVNAME=ttyUSB0
SHLVL=1
HOME=/
SEQNUM=1736
_=/usr/bin/env
=====

so it looks good.  i just need to add code to the script to handle the
mounting of the USB key.

  does all that sound reasonable?  have i missed anything?

rday


-- 

========================================================================
Robert P. J. Day                               Waterloo, Ontario, CANADA

            Linux Consulting, Training and Kernel Pedantry.

Web page:                                          http://crashcourse.ca
Twitter:                                       http://twitter.com/rpjday
========================================================================

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux