-udev - a userspace implementation of devfs
+udev - a userspace device manager
For more information on the design, and structure of this project, see the
files in the docs/ directory.
- You must be running a 2.6 version of the Linux kernel.
-- Make sure sysfs is mounted. udev will figure out where sysfs is mounted, but
- the traditional place for it is at /sys. You can mount it by hand by running:
+- Your 2.6 kernel must have had CONFIG_HOTPLUG enabled when it was built.
+
+- Make sure sysfs is mounted at /sys. No other location is supported.
+ You can mount it by running:
mount -t sysfs none /sys
-- Make sure you have the latest version of the linux-hotplug scripts. They are
- available at linux-hotplug.sf.net or from your local kernel.org mirror at:
- kernel.org/pub/linux/utils/kernel/hotplug/
- They are required in order for udev to work properly.
+- Make sure you integrate udev with your hotplug setup. There is a copy of
+ the rules files for all major distros in the etc/udev folder. You may look
+ there how others are doing it.
- If for some reason you do not install the hotplug scripts, you must tell the
- kernel to point the hotplug binary at wherever you install udev at. This can
- be done by:
+- Make sure you integrate with the kernel hotplug events. Later versions of
+ udev are able to listen directly to a netlink socket, older versions used
+ udevsend to feed the udev daemon with the kernel event. The most basic
+ setup to run udev is to let the kernel for the udev binary directly:
echo "/sbin/udev" > /proc/sys/kernel/hotplug
+ While this may work in some setups, it is not recommended to do. A recent
+ kernel and udev version is able to operate with the event serializing daemon
+ udevd, that makes sure, that no "remove" event will beat a "add" event for
+ the same device.
+
- Build the project:
make
+ Note:
+ There are a number of different flags that you can use when building
+ udev. They are as follows:
+ prefix
+ set this to the default root that you want udev to be
+ installed into. This works just like the 'configure --prefix'
+ script does. Default value is ''. Only override this if you
+ really know what you are doing.
+ USE_KLIBC
+ if set to 'true', udev is built and linked against the
+ included version of klibc. Default value is 'false'.
+ USE_LOG
+ if set to 'true', udev will emit messages to the syslog when
+ it creates or removes device nodes. This is helpful to see
+ what udev is doing. This is enabled by default. Note, if you
+ are building udev against klibc it is recommended that you
+ disable this option (due to klibc's syslog implementation.)
+ USE_SELINUX
+ if set to 'true', udev will be built with SELinux support
+ enabled. This is disabled by default.
+ DEBUG
+ if set to 'true', debugging messages will be sent to the syslog
+ as udev is run. Default value is 'false'.
+ KERNEL_DIR
+ If this is not set it will default to /lib/modules/`uname -r`/build
+ This is used if USE_KLIBC=true to find the kernel include
+ directory that klibc needs to build against. This must be set
+ if you are not building udev while running a 2.6 kernel.
+ EXTRAS
+ if set, will build the "extra" helper programs as specified
+ as listed (see below for an example.)
+
+ So, if you want to build udev using klibc with debugging messages, you
+ would do:
+ make USE_KLIBC=true DEBUG=true
+
+ If you want to build the udev helper program cdrom_id and scsi_id you
+ would do:
+ make EXTRAS="extras/cdrom_id extras/scsi_id"
+
+ udev will follow the setting of the debug level in udev.conf. Adapt this
+ value to see the debug in syslog.
+
- Install the project:
make install
- This will put the udev binary in /sbin, create the /udev and /etc/udev
- directories, and place the udev configuration files in /etc/udev. You
- will probably want to edit the namedev.* files to create custom naming
+ This will put the udev binaries in /sbin, create the and /etc/udev
+ directories, and place the udev configuration files in /etc/udev/. You
+ will probably want to edit the *.rules files to create custom naming
rules. More info on how the config files are set up are contained in
comments in the files, and is located in the documentation.
- Add and remove devices from the system and marvel as nodes are created
- and removed in /udev/ based on the device types.
+ and removed in /dev based on the device types.
- If you later get sick of it, uninstall it:
make uninstall
+If nothing seems to happen, make sure your build worked properly by
+running the udev-test.pl script as root in the test/ subdirectory of the
+udev source tree. Running udevstart should populate an empty /dev
+directory. You may test, if a node is recreated after running udevstart.
-Things are still quite rough, and it's a bit beyond proof of concept
-code. Help is very much appreciated, see the TODO file for a list of
-things left to be done.
+Development and documentation help is very much appreciated, see the TODO
+file for a list of things left to be done.
-If you want to build using klibc, use the Makefile.klibc file:
- - read the klibc/klibc/README file for how to set up the linux
- symlink properly.
- - make clean
- - make -f Makefile.klibc
-and marvel at the tiny binary you just created :)
-
-Any comment/questions/concerns please let me know.
+Any comment/questions/concerns please let me and the other udev developers
+know by sending a message to the linux-hotplug-devel mailing list at:
+ linux-hotplug-devel@lists.sourceforge.net
greg k-h
greg@kroah.com
-
-