1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-05 15:21:37 +03:00
systemd/docs/RFC-dev.d

50 lines
2.0 KiB
D
Raw Normal View History

/etc/dev.d/ How it works, and what it is for
by Greg Kroah-Hartman <greg@kroah.com> March 2004
The /etc/dev.d directory works much like the /etc/hotplug.d/ directory
in that it is a place to put symlinks or programs that get called when
an event happens in the system. Programs will get called whenever the
device naming program in the system has either named a new device and
created a /dev node for it, or when a /dev node has been removed from
the system due to a device being removed.
The directory tree under /etc/dev.d/ dictate which program is run first,
and when some programs will be run or not. The device naming program
calls the programs in the following order:
/etc/dev.d/DEVNODE/*.dev
/etc/dev.d/SUBSYSTEM/*.dev
/etc/dev.d/default/*.dev
The .dev extension is needed to allow automatic package managers to
deposit backup files in these directories safely.
The DEVNODE name is the name of the /dev file that has been created.
This value, including the /dev path, will also be exported to userspace
in the DEVNODE environment variable.
The SUBSYSTEM name is the name of the sysfs subsystem that originally
generated the hotplug event that caused the device naming program to
create or remove the /dev node originally. This value is passed to
userspace as the first argument to the program.
The default directory will always be run, to enable programs to catch
every device add and remove in a single place.
All environment variables that were originally passed by the hotplug
call that caused this device action will also be passed to the program
called in the /etc/dev.d/ directories. Examples of these variables are
ACTION, DEVPATH, and others. See the hotplug documentation for full
description of this
An equivalent shell script that would do this same kind of action would
be:
DIR="/etc/dev.d"
export DEVNODE="whatever_dev_name_udev_just_gave"
for I in "${DIR}/$DEVNODE/"*.dev "${DIR}/$1/"*.dev "${DIR}/default/"*.dev ; do
if [ -f $I ]; then $I $1 ; fi
done
exit 1;