X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=udev.8;h=c0dc68b80360a2454a882ec319d2c255dde03a87;hp=f26beb4b9d1029e13c8f8238caa1ada5047d3dee;hb=a6f01502bd2a76d1f9d90abb7bbeebd8f6893ed9;hpb=3c54f73e8452261c80b4d17db55d199552442005 diff --git a/udev.8 b/udev.8 index f26beb4b9..c0dc68b80 100644 --- a/udev.8 +++ b/udev.8 @@ -3,11 +3,34 @@ udev \- Linux configurable dynamic device naming support .SH SYNOPSIS .BI udev " hotplug-subsystem" +.P +The environment must provide the following variables: +.TP +.B ACTION +.IR add " or " remove +signifies the connection or disconnection of a device. +.TP +.B DEVPATH +The sysfs devpath of the device without the mountpoint but a leading slash. +.P +Additional optional environment variables are: +.TP +.B UDEV_CONFIG_FILE +Overrides the default location of the +.B udev +config file. +.TP +.B UDEV_NO_SLEEP +The default behavior of +.B udev +is to wait until all the sysfs files of the device chain are populated. If set +.B udev +will will continue, regardless of the state of the device representation. .SH "DESCRIPTION" .B udev creates or removes device node files usually located in the /dev directory. -Its goal is to provide a dynamic device directory that contains only the files -for devices that are actually present. +It provides a dynamic device directory that contains only the files for +devices that are actually present. .P As part of the .B hotplug @@ -18,14 +41,14 @@ On device creation, .B udev reads the sysfs directory of the given device to collect device attributes like label, serial number or bus device number. -These attributes are treated as a key -to determine a unique name for device file creation. +These attributes may used as keys to determine a +unique name for device file creation. .B udev maintains a database for devices present on the system. .br On device removal, .B udev -queries the internal database for the name of the device file to be deleted. +queries its database for the name of the device file to be deleted. .SH "CONFIGURATION" All .B udev @@ -35,7 +58,7 @@ lines, and lines beginning with a '#' will be ignored. .B udev expects its main configuration file at -.I /etc/udev/udev.conf. +.IR /etc/udev/udev.conf . The file consists of a set of variables and values that allow the user to override default udev values. The current set of variables that can be overridden in this file is: @@ -43,24 +66,46 @@ overridden in this file is: .B udev_root This is the where in the filesystem to place the device nodes. The default value for this is -.I /udev/ +.IR /udev/ . .TP .B udev_db The name and location of the udev database. The default value for this is -.I /udev/.udev.tdb +.IR /udev/.udev.tdb . .TP .B udev_rules This is the location of the udev rules file. The default value for this is -.I /etc/udev/udev.rules +.IR /etc/udev/udev.rules . +If a directory is specified, the whole directory is +scanned for files ending with +.I .rules +and all rule files are read in lexical order. .TP .B udev_permissions -This is the location of the udev permission file. The default value for this is -.I /etc/udev/udev.permissions +This is the location of the udev permission file. The default value for this is +.IR /etc/udev/udev.permissions . +If a directory is specified, the whole directory is scanned for files ending with +.I .permissions +and all permission files are read in lexical order. +.TP +.B udev_log +If you want udev to log some information to the syslog for every node created or +removed. The default value for this is +.IR yes . .TP .B default_mode This is the default mode for all nodes that have no explicit match in the permissions file. The default value for this is -.I 0666 +.IR 0666 . +.TP +.B default_owner +This is the default owner for all nodes that have no explicit match in the +permissions file. The default value for this is +.IR root . +.TP +.B default_group +This is the default group for all nodes that have no explicit match in the +permissions file. The default value for this is +.IR root . .br .P .RI "A sample " udev.conf " might look like this: @@ -72,15 +117,27 @@ udev_root="/udev/" # udev_db - The name and location of the udev database. udev_db="/udev/.udev.tdb" -# udev_rules - The name and location of the udev rules file -udev_rules="/etc/udev/udev.rules" +# udev_rules - The location of the directory where to look for files + which names ending with .rules +udev_rules="/etc/udev/" # udev_permissions - The name and location of the udev permission file udev_permissions="/etc/udev/udev.permissions" -# default_mode - set the default mode for all nodes that have no +# udev_log - set to "yes" if you want logging, else "no" +udev_log="yes" + +# default_mode - set the default mode for all nodes that have no # explicit match in the permissions file default_mode="0666" + +# default_owner - set the default owner for all nodes that have no +# explicit match in the permissions file +default_owner="root" + +# default_group - set the default group for all nodes that have no +# explicit match in the permissions file +default_group="root" .fi .P The rules for udev to use when naming devices may specified at @@ -91,55 +148,76 @@ value in the .I /etc/udev/udev.conf file. .P -Every line in the rules file define the mapping between device attributes and -the device file name. It starts with a keyword defining the method used to -match, followed by one ore more keys to compare and the filename for the -device. One ore more optional symlinks targeting the node may be specified. +Every line in the rules file defines the mapping between device attributes +and the device file name. One ore more keys are specified to match a rule +with the current device. If all keys are matching, the rule will be applied +and the name is used for the device node. .br -If no matching configuration is found, the default kernel device name -is used. +If no matching rule is found, the default kernel device name is used. .P -The line format is: +Every rule consists of a list a comma separated fields: .sp -.I method, key,[key,...] name [, symlink] +.IR "key " ,[ "key " ,...] " name " [, " symlink" ] .sp -where valid methods with corresponding keys are: +where possible fields are: .TP -.B CALLOUT -calling external program, that returns a string to match -.br -.RB "keys: " BUS ", " PROGRAM ", " ID +.B BUS +Match the bus type of the device. +(The sysfs device bus must be able to be determined by a "device" symlink.) .TP -.B LABEL -device label or serial number, like USB serial number, SCSI UUID or -file system label -.br -.RB "keys: " BUS ", " SYSFS_ +.B KERNEL +Match the kernel device name. .TP -.B NUMBER -device number on the bus, like PCI bus id -.br -.RB "keys: " BUS ", " ID +.B ID +Match the device number on the bus, like PCI bus id. +.TP +.B PLACE +Match the topological position on bus, like physical port of USB device +.TP +.BI SYSFS{ filename } +Match sysfs device attribute like label, vendor, USB serial number, SCSI UUID +or file system label. Up to 5 different sysfs files can be checked, with +all of the values being required in order to match the rule. .TP -.B TOPOLOGY -device position on bus, like physical port of USB device +.B PROGRAM +Call external program. This key is valid if the program returns successful. +The environment variables of +.B udev +are also available for the program. .br -.RB "keys: " BUS ", " PLACE +The string returned by the program may additionally matched with the +.B RESULT +key. +.TP +.B RESULT +Match the returned string of the last +.B PROGRAM +call. This key may used in any following rule after a +.B PROGRAM +call. .TP -.B REPLACE -string replacement of the kernel device name +.B NAME +The name of the node to be created. If the name field is omitted or its +value is empty, the device will be ignored and no node will be created. .br -.RB "key: " KERNEL -.P -The methods are applied in the following order: -.BR CALLOUT ", " LABEL ", " NUMBER ", " TOPOLOGY ", " REPLACE "." +If given with the attribute +.BR NAME{ all_partitions } +it will create all 15 partitions of a blockdevice. +This may be useful for removable media devices. +.TP +.B SYMLINK +The name of a symlink targeting the node. Multiple symlinks may be +specified by separating the names by the space character. .P .RB "The " NAME " ," SYMLINK " and " PROGRAM fields support simple printf-like string substitution: .TP .B %n The "kernel number" of the device. -for example, 'sda3' has a "kernel number" of '3' +For example, 'sda3' has a "kernel number" of '3'. +.TP +.B %k +The "kernel name" for the device. .TP .B %M The kernel major number for the device. @@ -151,34 +229,50 @@ The kernel minor number for the device. The bus id for the device. .TP .B %c -The CALLOUT program returned string. -(This does not work within the PROGRAM field for the obvious reason.) +The +.B PROGRAM +returned string. +(This does not work within the +.B PROGRAM +field for the obvious reason.) +.br +A single part of the string, separated by the space character +my be selected by specifying the part number as a attribute: +.BI %c{ part } .TP -.B %D -Use the devfs style disk name for this device. -For partitions, this will result in 'part%n' -If this is not a partition, it will result in 'disc'. +.BI %s{ filename } +The content of a sysfs attribute. +.TP +.B %% +The '%' character itself. +.P +The count of charcters to insert may be limited by specifying +the format length value. For example, '%3s{file}' will only insert +the first three characters of the sysfs attribute. .P .RI "A sample " udev.rules " might look like this:" .sp .nf # if /sbin/scsi_id returns "OEM 0815" device will be called disk1 -CALLOUT, BUS="scsi", PROGRAM="/sbin/scsi_id", ID="OEM 0815", NAME="disk1" +BUS="scsi", PROGRAM="/sbin/scsi_id", RESULT="OEM 0815", NAME="disk1" # USB printer to be called lp_color -LABEL, BUS="usb", SYSFS_serial="W09090207101241330", NAME="lp_color" +BUS="usb", SYSFS{serial}="W09090207101241330", NAME="lp_color" + +# SCSI disk with a specific vendor and model number is to be called boot +BUS="scsi", SYSFS{vendor}="IBM", SYSFS{model}="ST336", NAME="boot%n" # sound card with PCI bus id 00:0b.0 to be called dsp -NUMBER, BUS="pci", ID="00:0b.0", NAME="dsp" +BUS="pci", ID="00:0b.0", NAME="dsp" # USB mouse at third port of the second hub to be called mouse1 -TOPOLOGY, BUS="usb", PLACE="2.3", NAME="mouse1" +BUS="usb", PLACE="2.3", NAME="mouse1" # ttyUSB1 should always be called pda with two additional symlinks -REPLACE, KERNEL="ttyUSB1", NAME="pda", SYMLINK="palmtop handheld" +KERNEL="ttyUSB1", NAME="pda", SYMLINK="palmtop handheld" # multiple USB webcams with symlinks to be called webcam0, webcam1, ... -LABEL, BUS="usb", SYSFS_model="WebCam V3", NAME="video%n", SYMLINK="webcam%n" +BUS="usb", SYSFS{model}="XV3", NAME="video%n", SYMLINK="webcam%n" .fi .P Permissions and ownership for the created device files may specified at @@ -192,11 +286,6 @@ file. Every line lists a device name followed by owner, group and permission mode. All values are separated by colons. The name field may contain a pattern to apply the values to a whole class of devices. -.br -If -.B udev -was built using klibc or is used before the user database is accessible (e.g. -.BR initrd "(4)), only numeric owner and group values may be used." .sp .RI "A sample " udev.permissions " might look like this:" .sp @@ -208,6 +297,17 @@ video*:root:video:0660 dsp1:::0666 .fi .P +The value +.I $local +can be substituted for a specific username. In that case, udev will determine +the current local user at the time of device node creation and substitute +that username as the owner of the new device node. This is useful, for +example, to let hot-plugged devices, such as cameras, be owned by the user at +the current console. Note that if no user is currently logged in, or if udev +otherwise fails to determine a current user, the +.I default_owner +value is used in lieu. +.P A number of different fields in the above configuration files support a simple form of shell style pattern matching. It supports the following pattern characters: .TP @@ -220,8 +320,8 @@ Matches any single character, but does not match zero characters. .B [ ] Matches any single character specified within the brackets. For example, the pattern string "tty[SR]" would match either "ttyS" or "ttyR". Ranges are also -supported within this match with the '-' character. For example, to match on -the range of all digits, the pattern [0-9] would be used. If the first character +supported within this match with the '\-' character. For example, to match on +the range of all digits, the pattern [0\-9] would be used. If the first character following the '[' is a '!' then any character not enclosed is matched. .SH "FILES" .nf @@ -231,10 +331,12 @@ following the '[' is a '!' then any character not enclosed is matched. .fi .LP .SH "SEE ALSO" +.BR udevinfo (8), +.BR udevd (8), .BR hotplug (8) .PP The -.I http://linux-hotplug.sourceforge.net/ +.I http://linux\-hotplug.sourceforge.net/ web site. .SH AUTHORS .B udev