summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJaka Kranjc2007-01-26 22:14:04 +0100
committerJaka Kranjc2007-01-26 22:14:04 +0100
commitc5776d1b5f53aab1c360ac102a2506754a1f0a05 (patch)
treeb3563df0e56ad7ad457701d9ce01033ad3f5c694
parent0ea40f42955656ac1f67082669395459898c5182 (diff)
udev synced from stable-0.4
-rwxr-xr-xdisk/udev/BUILD25
-rwxr-xr-xdisk/udev/CONFIGURE27
-rwxr-xr-xdisk/udev/CONFLICTS1
-rwxr-xr-xdisk/udev/DEPENDS6
-rwxr-xr-xdisk/udev/DETAILS17
-rwxr-xr-xdisk/udev/FINAL27
-rw-r--r--disk/udev/HISTORY233
-rwxr-xr-xdisk/udev/INSTALL69
-rw-r--r--disk/udev/Makefile.patch8
-rwxr-xr-xdisk/udev/PREPARE26
-rwxr-xr-xdisk/udev/PRE_BUILD21
-rwxr-xr-xdisk/udev/TRIGGERS2
-rw-r--r--disk/udev/init.d/coldplug38
-rwxr-xr-xdisk/udev/init.d/udevd1
-rw-r--r--disk/udev/modprobe.aliases9
-rw-r--r--disk/udev/rules/40-alsa.rules15
-rw-r--r--disk/udev/rules/50-default.rules275
-rw-r--r--disk/udev/rules/52-modules.rules35
-rw-r--r--disk/udev/rules/70-cdrom_perms.rules3
-rw-r--r--disk/udev/rules/README4
-rw-r--r--disk/udev/rules/rules.examples30
21 files changed, 252 insertions, 620 deletions
diff --git a/disk/udev/BUILD b/disk/udev/BUILD
index b83f6f9069..a94395a421 100755
--- a/disk/udev/BUILD
+++ b/disk/udev/BUILD
@@ -1,20 +1,19 @@
make prefix=${INSTALL_ROOT}/ exec_prefix=${INSTALL_ROOT}/ V=true \
${OPTS} ${UDEV_DEBUG} &&
-make EXTRAS="extras/run_directory extras/cdrom_id extras/firmware \
- extras/rule_generator" prefix=${INSTALL_ROOT}/ exec_prefix=${INSTALL_ROOT}/ \
- ${OPTS} ${UDEV_DEBUG} DEST_DIR="./" V=true &&
+make EXTRAS="extras/run_directory extras/cdrom_id extras/firmware" \
+ prefix=${INSTALL_ROOT}/ exec_prefix=${INSTALL_ROOT}/ ${OPTS} \
+ ${UDEV_DEBUG} DEST_DIR="./" V=true &&
if [[ "$UDEV_EXTRAS" == 'y' ]]; then
- make EXTRAS="extras/ata_id extras/dasd_id extras/edd_id extras/floppy \
- extras/scsi_id extras/usb_id extras/volume_id" \
+ make EXTRAS="extras/ata_id extras/dasd_id extras/edd_id extras/floppy extras/scsi_id extras/usb_id extras/volume_id" \
prefix=${INSTALL_ROOT}/ exec_prefix=${INSTALL_ROOT}/ ${OPTS} \
${UDEV_DEBUG} DEST_DIR="./" V=true
-fi
+fi &&
-#if [[ "$UDEV_STATIC" == 'y' ]]; then
-# pushd __static__ &&
-# # we are not going to use `make install' so no need to set its parameters
-# message "${MESSAGE_COLOR}Building static utilities: $UDEV_STATIC_TARGET${DEFAULT_COLOR}" &&
-# make USE_STATIC=true V=true $OPTS $UDEV_STATIC_TARGET &&
-# popd
-#fi
+if [[ "$UDEV_STATIC" == 'y' ]]; then
+ pushd __static__ &&
+ # we are not going to use `make install' so no need to set its parameters
+ message "${MESSAGE_COLOR}Building static utilities: $UDEV_STATIC_TARGET${DEFAULT_COLOR}" &&
+ make USE_STATIC=true V=true $OPTS $UDEV_STATIC_TARGET &&
+ popd
+fi
diff --git a/disk/udev/CONFIGURE b/disk/udev/CONFIGURE
index 84286b3d86..82626a01d8 100755
--- a/disk/udev/CONFIGURE
+++ b/disk/udev/CONFIGURE
@@ -1,22 +1,17 @@
-config_query UDEV_PERSIST 'Install persistent storage rules?' n &&
-
-config_query UDEV_PERSIST_INPUT 'Install persistent input rules?' n
-
+config_query UDEV_PERSIST 'install persistent disk rules?' n &&
+config_query UDEV_STATIC 'Create static binaries in addition to dynamically linked ones?' n &&
config_query_option UDEV_DEBUG 'Compile extra debugging messages?' n 'DEBUG=true' 'DEBUG=false' &&
-
-#config_query UDEV_STATIC 'Create static binaries in addition to dynamically linked ones?' n &&
-#if [[ "$UDEV_STATIC" == 'y' ]]; then
-# if [[ -z "$UDEV_STATIC_TARGET" ]]; then
-# # add more UDEV utilities here as necessary, space-separated
-# local UDEV_STATIC_TARGET="udevstart"
-# fi &&
-# persistent_add UDEV_STATIC_TARGET &&
-# message "${MESSAGE_COLOR}Static utilities (with suffix .static): $UDEV_STATIC_TARGET${DEFAULT_COLOR}"
-#fi &&
-
+if [[ "$UDEV_STATIC" == 'y' ]]; then
+ if [[ -z "$UDEV_STATIC_TARGET" ]]; then
+ # add more UDEV utilities here as necessary, space-separated
+ UDEV_STATIC_TARGET="udevstart"
+ fi &&
+ persistent_add UDEV_STATIC_TARGET &&
+ message "${MESSAGE_COLOR}Static utilities (with suffix .static): $UDEV_STATIC_TARGET${DEFAULT_COLOR}"
+fi &&
if [[ "$UDEV_PERSIST" == "y" ]]; then
UDEV_EXTRAS=y &&
persistent_add UDEV_EXTRAS
else
- config_query UDEV_EXTRAS 'Compile extras helpers?' y
+ config_query UDEV_EXTRAS 'Do you want to compile extras helpers?' y
fi
diff --git a/disk/udev/CONFLICTS b/disk/udev/CONFLICTS
deleted file mode 100755
index a68b971d98..0000000000
--- a/disk/udev/CONFLICTS
+++ /dev/null
@@ -1 +0,0 @@
-conflicts udev-old n
diff --git a/disk/udev/DEPENDS b/disk/udev/DEPENDS
index 0b1f63063e..7e6c68d342 100755
--- a/disk/udev/DEPENDS
+++ b/disk/udev/DEPENDS
@@ -1,6 +1,12 @@
depends gnupg &&
depends smgl-fhs &&
+KVER=`installed_version linux |cut -c-6` &&
+
+if [[ "$KVER" < "2.6.13" ]]; then
+ depends hotplug
+fi &&
+
optional_depends libselinux \
"USE_SELINUX=true" \
"USE_SELINUX=false" \
diff --git a/disk/udev/DETAILS b/disk/udev/DETAILS
index 2d93df6986..b732d42e6d 100755
--- a/disk/udev/DETAILS
+++ b/disk/udev/DETAILS
@@ -1,17 +1,18 @@
SPELL=udev
- VERSION=103
- SOURCE=$SPELL-$VERSION.tar.bz2
- SOURCE2=$SOURCE.sign
-SOURCE_DIRECTORY=$BUILD_DIRECTORY/$SPELL-$VERSION
- SOURCE_URL=$KERNEL_URL/pub/linux/utils/kernel/hotplug/$SOURCE
- SOURCE2_URL=$SOURCE_URL.sign
+ VERSION=085
+ SOURCE=${SPELL}-${VERSION}.tar.bz2
+ SOURCE2=${SOURCE}.sign
+SOURCE_DIRECTORY=${BUILD_DIRECTORY}/${SPELL}-${VERSION}
+ SOURCE_URL=${KERNEL_URL}/pub/linux/utils/kernel/hotplug/${SOURCE}
+ SOURCE2_URL=${SOURCE_URL}.sign
SOURCE2_IGNORE=signature
- SOURCE_GPG="kernel.gpg:$SOURCE.sign"
+ SOURCE_GPG="kernel.gpg:${SOURCE}.sign"
WEB_SITE=http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html
ENTERED=20030725
+ UPDATED=20060107
+ PATCHLEVEL=7
DOCS="ChangeLog COPYING FAQ README docs/* RELEASE-NOTES"
LICENSE[0]=GPL
- KEYWORDS="disk devices nodes modules"
SHORT="Udev creates and removes device nodes"
cat << EOF
Udev creates and removes device nodes in /dev, based on events the kernel
diff --git a/disk/udev/FINAL b/disk/udev/FINAL
index 00a1e53ae3..9afbe88cff 100755
--- a/disk/udev/FINAL
+++ b/disk/udev/FINAL
@@ -1,3 +1,8 @@
+# moving the old rules to rules.d
+if [ -f ${UDEV_CFG}/udev.rules ];then
+ install_config_file ${UDEV_CFG}/udev.rules ${UDEV_CFG}/rules.d/00-local.rules &&
+ rm -f ${UDEV_CFG}/udev.rules
+fi
#Ensure that all groups used in 50-default.rules exist
create_group disk
create_group cdrom
@@ -7,12 +12,16 @@ create_group video
create_group audio
# warn of coming changes
-message ""
-message "${PROBLEM_COLOR}About persistent net interfaces naming:"
-message ""
-message "${MESSAGE_COLOR}The spell now uses udev rules generator. Next time you boot, udev will generate"
-message "a rules file called /etc/udev/rules.d/70-persistent-net.rules for all the"
-message "interfaces it has detected. Then you can modify the name of the interface by"
-message "changing the NAME key. Udev will not erase it."
-message "The old configuration stuff with the DEVICE_MAC field in netconf is now obsolete."
-message "${DEFAULT_COLOR}"
+cat << EOF
+MODALIAS and \$modalias are not needed and will be removed from one of
+the next udev versions, replace it in all rules with ENV{MODALIAS} or
+the sysfs "modalias" value.
+
+RUN="/bin/program" not longer automatically adds the subsystem
+as the first parameter. This is from the days of /sbin/hotplug
+which is dead now and it's just confusing to need to add a space at
+the end of the program name to prevent this.
+If you use rules that need the subsystem as the first parameter,
+like the old "udev_run_hotlugd" and "udev_run_devd", add the subsystem
+to the key like RUN+="/bin/program $env{SUBSYSTEM}".
+EOF
diff --git a/disk/udev/HISTORY b/disk/udev/HISTORY
index 81524c7742..0b9f4f98e3 100644
--- a/disk/udev/HISTORY
+++ b/disk/udev/HISTORY
@@ -1,236 +1,3 @@
-2006-10-21 Flavien Bridault <vlaaad@sourcemage.org>
- * DETAILS: Updated to 103
-
-2006-10-11 Flavien Bridault <vlaaad@sourcemage.org>
- * DETAILS: Updated to 102
-
-2006-10-01 Flavien Bridault <vlaaad@sourcemage.org>
- * DETAILS: updated to 101
- * DEPENDS: removed hotplug for old kernels since they are no longer
- supported in this spell
- * INSTALL: no longer installs custom helpers, use new udev rules
- generator, removed hotplug test for dedicated rules
- * BUILD: build rules generator
- * rules/70-cdrom_symlinks_and_perms.rules: removed
- * rules/70-cdrom_perms: added
- * helpers/{mac2name,cdrom_symlink_helper}: removed
- * rules/07-bindings.rules: removed
- * 52-modules.rules: moved in /rules directory
- * FINAL: removed old warns, added one about net interfaces naming
-
-2006-09-23 Flavien Bridault <vlaaad@sourcemage.org>
- * DETAILS: Removed 092
- * 50-default.rules: moved back firmware.sh there
- * PREPARE: Removed old version handling, prevent to cast udev
- if the kernel version is not recent enough
- * CONFIGURE, INSTALL: Removed old version handling
- * BUILD: Split a too long line
- * CONFLICTS: conflicts with new udev-old spell
-
-2006-09-10 Flavien Bridault <vlaaad@sourcemage.org>
- * DETAILS: Updated to 100
- * rules/*.rules, 52-modules.rules: Some keys have been renamed,
- BUS->SUBSYSTEMS, SYSFS->ATTRS, ID->KERNEL, DRIVER->DRIVERS, see
- the udev RELEASE-NOTES for more informations.
- * 50-default.rules: Removed cdrom_id related rules, a dedicated rules
- file is now installed by default, replaced cdrw group by burning group,
- as this is the name we employ for that, removed missing usb group,
- replaced scsi by disk group
- moved symlinks and perms rules for cdrom so that they are processed
- after the new file 60-cdrom_id.rules
- * 70-cdrom_symlinks_and_perms.rules: created
- * rules.examples: same renaming and replaced some = by == where
- needed, examples rules should also try to be correct ;-)
- * init.d/udevd: actually needs devices, caused troubles on boot
- * init.d/coldplug: only needs udevd since udevd now needs devices
-
-2006-09-05 Flavien Bridault <vlaaad@sourcemage.org>
- * INSTALL: handle rules files install for 092 (bug #13073)
-
-2006-08-15 Juuso Alasuutari <iuso@sourcemage.org>
- * DETAILS: [automated] Removed UPDATED (deprecated in favor of
- PATCHLEVEL).
-
-2006-08-15 Flavien Bridault <vlaaad@sourcemage.org>
- * DETAILS: PATCHLEVEL++ to get the alsa rules files that was actually
- not integrated in git repository
-
-2006-08-13 Flavien Bridault <vlaaad@sourcemage.org>
- * DETAILS: Updated to 097
- * rules.d/40-alsa.rules: Added since the file disappeared from the tarball
- * INSTALL: Added missing &&
- rules have moved in the tarball from etc/udev to etc/udev/rules.d
- install late rules from the tarball
-
-2006-07-11 Flavien Bridault <vlaaad@sourcemage.org>
- * DETAILS: Updated to 096
-
-2006-07-05 Flavien Bridault <vlaaad@sourcemage.org>
- * DETAILS: Updated to 095
- * ifrename_wait_retry.patch: removed, has been integrated in release
- * PRE_BUILD: removed patch above
-
-2006-06-25 Juuso Alasuutari <iuso@sourcemage.org>
- * PRE_BUILD: Added patch to allow network interface renaming
- with existing names. Added comments about patches, tidied
- code.
- * CONFIGURE, PRE_BUILD, BUILD, INSTALL: Commented out static
- target parts, it only installs udevstart which is deprecated
- now.
- * ifrename_wait_retry.patch: Added.
- * Makefile.patch: Updated.
-
-2006-06-24 Juuso Alasuutari <iuso@sourcemage.org>
- * helpers/mac2name: Edited to read DEVICE_MAC instead of MAC in
- /etc/sysconfig/network/*.dev. Fixed a bug where supplying no
- argument to the script resulted in an interface name. Edited
- to display message on error. Made small optimizations.
- * DETAILS: PATCHLEVEL++
-
-2006-06-21 Flavien Bridault <vlaaad@sourcemage.org>
- * rules/50-default.rules: removed OSS sound devices from /dev/sound
- (bug #12662)
- * DETAILS: PATCHLEVEL++
-
-2006-06-17 Flavien Bridault <vlaaad@sourcemage.org>
- * DETAILS: added 094. This one is not compatible with kernels older
- than 2.6.15rc1 because of udevsend, so we will keep both 092 and
- > 092 for a while, PATCHLEVEL++ to get the previous update
- * PREPARE: Removed the warning for the config files move, this stuff
- has been there for 14 months, added a test to use the right udev
- version according to the kernel version
- * CONFIGURE: Prompt for persistent input rules
- * INSTALL: Removed udevsend and udevstart install for kernels
- newer than 2.6.15rc1, added persistent input rules installing,
- added firmware rule generation according to the kernel version
- * FINAL: Removed the move of the config files
- * rules/50-default.rules: remove the rule for the firmware, now
- generated in INSTALL
- * init.d/coldplug: added udevsettle launching after udevtrigger to
- wait for udev events before the script exits
-
-2006-06-11 Juuso Alasuutari <iuso@sourcemage.org>
- * rules/50-default.rules: Removed deprecated %e from cdrom
- rules, rewrote to use new helper script instead. Did some
- reorganizing with cdrom and disk rules.
- * helpers/cdsymlink_helper: Added.
- * INSTALL: Added cdsymlink_helper script install.
-
-2006-05-15 Juuso Alasuutari <iuso@sourcemage.org>
- * PRE_BUILD: Removed fix for typo in alsa rules file, was fixed
- upstream
- * DEPENDS: Replaced "installed_version linux" with
- "get_kernel_version", fixes conditional for custom kernels
-
-2006-05-15 Flavien Bridault <vlaaad@sourcemage.org>
- * DETAILS: Updated to 092
-
-2006-05-12 Juuso Alasuutari <iuso@sourcemage.org>
- * rules/50-default.rules: Fixed invalid KERNEL fields
-
-2006-05-12 Juuso Alasuutari <iuso@sourcemage.org>
- * rules/50-default.rules: Fixed ptmx device permission error
- * DETAILS: PATCHLEVEL
-
-2006-05-11 Flavien Bridault <vlaaad@sourcemage.org>
- * INSTALL: install path_id in /lib/udev since this is a helper,
- otherwise udev persistent disk rules don't find it
-
-2006-05-10 Juuso Alasuutari <iuso@sourcemage.org>
- * rules/50-default.rules: Fixed incorrect node naming for usb
- printers, added new rules for various devices
- * DETAILS: Updated PATCHLEVEL, added some new keywords
-
-2006-05-02 Juuso Alasuutari <iuso@sourcemage.org>
- * INSTALL: Install early rules straight from source dir
- * rules/05-udev-early.rules: Deleted
- * rules/50-default.rules: Thiefed a ton of rules from gentoo
- rules file, fixed some typos
- * 52-modules.rules: Some edits
-
-2006-04-30 Juuso Alasuutari <iuso@sourcemage.org>
- * INSTALL: Install modprobe aliases for non-hotplug systems
-
-2006-04-29 Juuso Alasuutari <iuso@sourcemage.org>
- * PRE_BUILD: Add fix for upstream typo in alsa rules file
-
-2006-04-28 Juuso Alasuutari <iuso@sourcemage.org>
- * DETAILS: Updated PATCHLEVEL
-
-2006-04-28 Juuso Alasuutari <iuso@sourcemage.org>
- * 50-default.rules, 50-default.rules-hotplug: Deleted, see below
- * rules/50-default.rules: Added, now the differences between
- non-hotplug and hotplug systems are taken care of in
- 52-modules.rules*
- * 52-modules.rules, 52-modules.rules-hotplug: Added, different
- module loading rules for non-hotplug and hotplug systems. Also
- some new rules for non-hotplug, fixes e.g. SCSI driver
- loading.
- * INSTALL: Edited to install correct 52-modules.rules* file
- * rules/README: Updated the text a bit
-
-2006-04-27 Juuso Alasuutari <iuso@sourcemage.org>
- * DETAILS: Version 091
-
-2006-04-18 Juuso Alasuutari <iuso@sourcemage.org>
- * DETAILS: Version 090
- * rules/05-udev-early.rules: Added
-
-2006-04-18 Juuso Alasuutari <iuso@sourcemage.org>
- * CONFIGURE, INSTALL: Undid previous hack in favor of a better
- one. Now interface names are bound if MAC addresses are set
- for them with netconf. Thanks to Mads Laursen for the idea and
- Arwed von Merkatz for pointing out how to do it.
- * bindings: Deleted
- * helpers/mac2name: Added, helper script to retrieve interface
- names in exchange for MAC addresses
- * rules/07-bindings.rules: Added, calls mentioned script
-
-2006-04-15 Juuso Alasuutari <iuso@sourcemage.org>
- * CONFIGURE: Added prompt to install persistent network
- interface names, made prompts more uniform
- * INSTALL: Edited to source a script to install persistent
- network interface name rules
- * bindings: Added, this is the mentioned script
-
-2006-04-06 Flavien Bridault <vlaaad@sourcemage.org>
- * 50-default.rules-hotplug, 50-default.rules: added a rule for svgalib
- devices (bug #10858)
-
-2006-04-04 Flavien Bridault <vlaaad@sourcemage.org>
- * 50-default.rules-hotplug, 50-default.rules: corrected path to cdrom_id
-
-2006-04-04 Juuso Alasuutari <iuso@sourcemage.org>
- * INSTALL: made loop vars local
-
-2006-04-04 Juuso Alasuutari <iuso@sourcemage.org>
- * INSTALL: edited to install different default rules for hotplug
- and non-hotplug systems because rulesets are incompatible.
- removed one unused var, made another var local, and did some
- minor and not so minor fixes.
- * rules/50-default.rules: deleted
- * 50-default.rules-hotplug: added (same file as above, moved &
- renamed)
- * 50-default.rules: added (new udev-only module autoload rules
- file)
- * TRIGGERS: hotplug cast/dispel now triggers udev cast to keep
- rules up to date
- * DETAILS: PATCHLEVEL up
- * DEPENDS: made 1 var local
- * CONFIGURE: made 1 var local
- * PRE_BUILD: removed a sedit that fixes something already fixed
- upstream
-
-2006-04-03 David Brown <dmlb2000@gmail.com>
- * DETAILS: updated 089
- * init.d/coldplug: all you need is the udevtrigger instead of big script
-
-2006-03-12 Karsten Behrmann <BearPerson@sourcemage.org>
- * DETAILS: (automated) Add KEYWORDS
-
-2006-02-27 Treeve Jelbert <treeve01@pi.be>
- * DETAILS: version 086
-
2006-02-16 Treeve Jelbert <treeve01@pi.be>
* DETAILS: version 085
diff --git a/disk/udev/INSTALL b/disk/udev/INSTALL
index 69de8210c4..4d8386ec03 100755
--- a/disk/udev/INSTALL
+++ b/disk/udev/INSTALL
@@ -1,48 +1,45 @@
-install -d ${INSTALL_ROOT}/sys &&
-local FILE UDEV_CFG=${INSTALL_ROOT}/etc/udev &&
-mkdir -p ${UDEV_CFG}/rules.d &&
+install -d ${INSTALL_ROOT}/sys &&
+UDEV_CFG=${INSTALL_ROOT}/etc/udev &&
+DEV_DDIR=/etc/dev.d &&
+mkdir -p ${UDEV_CFG}/rules.d &&
-install_config_file $SCRIPT_DIRECTORY/udev.conf ${UDEV_CFG}/udev.conf &&
-install_config_file $SCRIPT_DIRECTORY/udev.missing ${UDEV_CFG}/udev.missing &&
+for file in $SCRIPT_DIRECTORY/udev.{conf,missing} ; do
+ install_config_file $file ${UDEV_CFG}/$(basename $file)
+done &&
-for FILE in $SCRIPT_DIRECTORY/rules/* ; do
- install_config_file $FILE ${UDEV_CFG}/rules.d/$(basename $FILE)
+for file in $SCRIPT_DIRECTORY/rules/* ; do
+ install_config_file $file ${UDEV_CFG}/rules.d/$(basename $file)
done &&
-# install required modprobe aliases for non-hotplug rules
-mkdir -p $INSTALL_ROOT/etc/modprobe.d &&
-install_config_file $SCRIPT_DIRECTORY/modprobe.aliases $INSTALL_ROOT/etc/modprobe.d/udev
+# install some of the suse rules
+for file in etc/udev/suse/40-alsa.rules ; do
+ install_config_file $file ${UDEV_CFG}/rules.d/$(basename $file)
+done &&
-# install early rules
-install_config_file $SOURCE_DIRECTORY/etc/udev/rules.d/05-udev-early.rules \
- ${UDEV_CFG}/rules.d/05-udev-early.rules &&
-# install late rules
-install_config_file $SOURCE_DIRECTORY/etc/udev/rules.d/95-udev-late.rules \
- ${UDEV_CFG}/rules.d/95-udev-late.rules
+# udevstart and udevsend are nolonger installed by default. we still need them
+install udevsend udevstart ${INSTALL_ROOT}/sbin &&
make prefix=${INSTALL_ROOT}/ exec_prefix=${INSTALL_ROOT}/ V=true ${OPTS} install &&
-make EXTRAS="extras/run_directory extras/cdrom_id extras/firmware extras/rule_generator" \
+make EXTRAS="extras/run_directory extras/cdrom_id extras/firmware" \
prefix=${INSTALL_ROOT}/ exec_prefix=${INSTALL_ROOT}/ \
V=true ${OPTS} install &&
-
if [[ "$UDEV_EXTRAS" == 'y' ]]; then
make EXTRAS="extras/ata_id extras/dasd_id extras/edd_id extras/floppy extras/scsi_id extras/usb_id extras/volume_id" prefix=${INSTALL_ROOT}/ exec_prefix=${INSTALL_ROOT}/ ${OPTS} V=true install &&
- install extras/path_id/path_id ${INSTALL_ROOT}/lib/udev &&
-
- if [[ "$UDEV_PERSIST" == 'y' ]]; then
- install_config_file etc/udev/rules.d/60-persistent-storage.rules ${UDEV_CFG}/rules.d/60-persistent-storage.rules
- fi &&
-
- if [ "$UDEV_PERSIST_INPUT" == 'y' ]; then
- install_config_file etc/udev/rules.d/60-persistent-input.rules ${UDEV_CFG}/rules.d/60-persistent-input.rules
- fi
+ install extras/path_id ${INSTALL_ROOT}/sbin &&
+
+ if [[ "$UDEV_PERSIST" == 'y' ]];then
+ for file in etc/udev/persistent-disk.rules ; do
+ install_config_file $file ${UDEV_CFG}/rules.d/60-$(basename $file)
+ done
+ fi
+
+fi &&
+
+if [[ "$UDEV_STATIC" == 'y' ]]; then
+ pushd __static__ &&
+ # we are not supposed to use `make install'
+ for __FILE in $UDEV_STATIC_TARGET; do
+ install -D $__FILE $INSTALL_ROOT/usr/sbin/$__FILE.static
+ done &&
+ popd
fi
-
-#if [[ "$UDEV_STATIC" == 'y' ]]; then
-# pushd __static__ &&
-# # we are not supposed to use `make install'
-# for FILE in $UDEV_STATIC_TARGET; do
-# install -D $FILE $INSTALL_ROOT/usr/sbin/$FILE.static
-# done &&
-# popd
-#fi
diff --git a/disk/udev/Makefile.patch b/disk/udev/Makefile.patch
index 77c1c5be3c..6807c627d1 100644
--- a/disk/udev/Makefile.patch
+++ b/disk/udev/Makefile.patch
@@ -1,7 +1,7 @@
---- Makefile 2006-06-25 15:48:49.000000000 +0300
-+++ Makefile.new 2006-06-25 15:49:39.000000000 +0300
-@@ -294,11 +294,6 @@
- @extras="$(EXTRAS)"; for target in $$extras; do \
+--- Makefile 2005-12-03 19:11:40.000000000 +0100
++++ Makefile.new 2005-12-03 19:12:18.000000000 +0100
+@@ -340,11 +340,6 @@
+ echo $$target; \
$(MAKE) -C $$target $@ || exit 1; \
done;
-ifndef DESTDIR
diff --git a/disk/udev/PREPARE b/disk/udev/PREPARE
index e5e0a8ac80..bc1882307c 100755
--- a/disk/udev/PREPARE
+++ b/disk/udev/PREPARE
@@ -1,6 +1,3 @@
-# Source grimoire FUNCTIONS to have get_kernel_version
-. $SCRIPT_DIRECTORY/../../FUNCTIONS
-
# testing if the install_config_file function is available
# we don't want to spend time building udev if we can't install it properly
@@ -8,17 +5,18 @@ if ! grep -q install_config_file /var/lib/sorcery/modules/libapi ; then
message "${PROBLEM_COLOR}You don't have the latest stable Sorcery. Run
\`sorcery update\`${DEFAULT_COLOR}" &&
return 1
-fi
+fi &&
+
+message "${MESSAGE_COLOR}" &&
+message "This update will move your current udev.rules to /etc/udev/rules.d/00-local.rules" &&
+message "As this is a major change, it won't happen unless\
+ you answer y to the following question. ${DEFAULT_COLOR}" &&
-KERNEL_VERSION=$(get_kernel_version) &&
-PATCHLEVEL=`echo $KERNEL_VERSION | cut -d. -f2` &&
-SUBLEVEL=`echo $KERNEL_VERSION | cut -d. -f3` &&
-tmp=`echo $KERNEL_VERSION | cut -d. -f3 | sed 's/^[0-9]*//g'` &&
-SUBLEVEL=${SUBLEVEL/$tmp/} &&
+config_query UDEV_UPDATE2 "Do you still wish to continue?" n &&
-# kernel < 2.6.15-rc1 can't use udev > 0.93 tarballs because udevsend has been removed
-if [ $SUBLEVEL -lt 15 -o $PATCHLEVEL -lt 6 ]; then
- message "${PROBLEM_COLOR}You have a kernel < 2.6.15, it is too old for latest udev." &&
- message "Please use udev-old spell instead..." &&
- return 1
+if [ "$UDEV_UPDATE2" == "n" ]; then
+ return 1
+else
+ message "A default udev.rules will be placed in /etc/udev/rules.d/50-default.rules" &&
+ message "And some examples in /etc/udev/rules.d/rules.examples"
fi
diff --git a/disk/udev/PRE_BUILD b/disk/udev/PRE_BUILD
index 5a3ef7c09b..d9b5b0374c 100755
--- a/disk/udev/PRE_BUILD
+++ b/disk/udev/PRE_BUILD
@@ -1,12 +1,11 @@
-default_pre_build &&
-cd $SOURCE_DIRECTORY &&
+default_pre_build &&
+cd $SOURCE_DIRECTORY &&
+patch -p0 < $SCRIPT_DIRECTORY/Makefile.patch &&
-# Prevent udev restart on 'make install',
-# allow network interface renaming with existing name.
-patch -p0 < $SCRIPT_DIRECTORY/Makefile.patch
-
-#if [[ "$UDEV_STATIC" == 'y' ]]; then
-# message "${MESSAGE_COLOR}Setting up static build directory...${DEFAULT_COLOR}" &&
-# mkdir __static__ &&
-# cp -aRv Makefile *.{c,h} ./__static__/
-#fi
+if [[ "$UDEV_STATIC" == 'y' ]]; then
+ message "${MESSAGE_COLOR}Setting up static build directory...${DEFAULT_COLOR}" &&
+ mkdir __static__ &&
+ cp -aRv Makefile *.{c,h} ./__static__/ &&
+ # fix file so static build actually works
+ sedit '29i#include <errno.h>' __static__/udev_libc_wrapper.c
+fi
diff --git a/disk/udev/TRIGGERS b/disk/udev/TRIGGERS
deleted file mode 100755
index 0ae3c1985f..0000000000
--- a/disk/udev/TRIGGERS
+++ /dev/null
@@ -1,2 +0,0 @@
-on_cast hotplug cast_self
-on_dispel hotplug cast_self
diff --git a/disk/udev/init.d/coldplug b/disk/udev/init.d/coldplug
index cebfb79c35..dd01774431 100644
--- a/disk/udev/init.d/coldplug
+++ b/disk/udev/init.d/coldplug
@@ -1,19 +1,41 @@
#!/bin/bash
-PROGRAM=/bin/false
+PROGRAM=/bin/true
RUNLEVEL=DEV
ESSENTIAL=yes
-NEEDS="udevd"
+NEEDS="devices udevd"
# source function library
. /etc/init.d/smgl_init
-start()
-{
- echo "Populating /dev with existing devices"
- /sbin/udevtrigger
- # Wait for udev events
- /sbin/udevsettle --timeout=60
+
+start() {
+echo "starting coldplug"
+ list=$(builtin echo /sys/bus/*/devices/*/uevent)
+ list="$list $(builtin echo /sys/class/*/*/uevent)"
+ list="$list $(builtin echo /sys/block/*/uevent /sys/block/*/*/uevent)"
+ for i in $list; do
+ case "$i" in
+ */device/uevent|*\**)
+ continue
+ ;;
+ */class/mem/*|*/class/tty/*)
+ first="$first $i"
+ ;;
+ */block/md*)
+ last="$last $i"
+ ;;
+ */*)
+ default="$default $i"
+ ;;
+ esac
+ done
+
+ # trigger the sorted events
+ for i in $first $default $last; do
+ builtin echo "add" > "$i"
+ done
+echo "coldplug complete"
}
stop() { exit 0; }
diff --git a/disk/udev/init.d/udevd b/disk/udev/init.d/udevd
index 9942271fcb..ce632b8a9c 100755
--- a/disk/udev/init.d/udevd
+++ b/disk/udev/init.d/udevd
@@ -4,7 +4,6 @@ PROGRAM=/sbin/udevd
ARGS="--daemon"
RUNLEVEL=DEV
ESSENTIAL=yes
-NEEDS="devices"
. /etc/init.d/smgl_init
diff --git a/disk/udev/modprobe.aliases b/disk/udev/modprobe.aliases
deleted file mode 100644
index d8c455fce1..0000000000
--- a/disk/udev/modprobe.aliases
+++ /dev/null
@@ -1,9 +0,0 @@
-# These are needed by udev to autoload some modules
-alias pnp:dPNP0510 irtty-sir
-alias pnp:dPNP0511 irtty-sir
-alias pnp:dPNP0700 floppy
-alias pnp:dPNP0800 pcspkr
-alias pnp:dPNP0b00 rtc
-alias pnp:dPNP0303 atkbd
-alias pnp:dPNP0f13 psmouse
-alias pnp:dPNPb02f analog
diff --git a/disk/udev/rules/40-alsa.rules b/disk/udev/rules/40-alsa.rules
deleted file mode 100644
index 0d0f4c2cb1..0000000000
--- a/disk/udev/rules/40-alsa.rules
+++ /dev/null
@@ -1,15 +0,0 @@
-SUBSYSTEM=="sound", GROUP="audio"
-SUBSYSTEM=="snd", GROUP="audio"
-KERNEL=="controlC[0-9]*", NAME="snd/%k"
-KERNEL=="hwC[D0-9]*", NAME="snd/%k"
-KERNEL=="pcmC[D0-9cp]*", NAME="snd/%k"
-KERNEL=="midiC[D0-9]*", NAME="snd/%k"
-KERNEL=="timer", NAME="snd/%k"
-KERNEL=="seq", NAME="snd/%k"
-SUBSYSTEM=="usb", ACTION=="add", ENV{PRODUCT}=="1604/8000/*", RUN+="/sbin/fxload -s /usr/share/alsa/firmware/usx2yloader/tascam_loader.ihx -I /usr/share/alsa/firmware/usx2yloader/us428fw.ihx"
-SUBSYSTEM=="usb", ACTION=="add", ENV{PRODUCT}=="1604/8004/*", RUN+="/sbin/fxload -s /usr/share/alsa/firmware/usx2yloader/tascam_loader.ihx -I /usr/share/alsa/firmware/usx2yloader/us224fw.ihx"
-SUBSYSTEM=="usb", ACTION=="add", ENV{PRODUCT}=="1604/8006/*", RUN+="/sbin/fxload -s /usr/share/alsa/firmware/usx2yloader/tascam_loader.ihx -I /usr/share/alsa/firmware/usx2yloader/us122fw.ihx"
-SUBSYSTEM=="usb", ACTION=="add", ENV{PRODUCT}=="1604/8001/*", RUN+="/sbin/startproc /usr/bin/us428control"
-SUBSYSTEM=="usb", ACTION=="add", ENV{PRODUCT}=="1604/8005/*", RUN+="/sbin/startproc /usr/bin/us428control"
-SUBSYSTEM=="sound", KERNEL=="controlC?", RUN+="/usr/sbin/alsactl -F restore %n"
-SUBSYSTEM=="sound", KERNEL=="hwC?D2", DRIVERS=="EMU10K1_Audigy", RUN+="/etc/alsa.d/udev-soundfont"
diff --git a/disk/udev/rules/50-default.rules b/disk/udev/rules/50-default.rules
index e268c06511..e6f4855857 100644
--- a/disk/udev/rules/50-default.rules
+++ b/disk/udev/rules/50-default.rules
@@ -1,200 +1,107 @@
+# allow automatic module loading in kernels >= 2.6.15
+ENV{MODALIAS}=="?*", RUN+="/sbin/modprobe $env{MODALIAS}"
+
# There are a number of modifiers that are allowed to be used in some of the
# fields. See the udev man page for a full description of them.
-# tty devices
-KERNEL=="console", NAME="%k", MODE="0600"
-KERNEL=="tty", NAME="%k", MODE="0666"
-KERNEL=="tty[0-9]*", NAME="vc/%n", SYMLINK="%k"
-KERNEL=="ttyS[0-9]*", NAME="tts/%n", SYMLINK="%k"
-KERNEL=="ttyUSB[0-9]*", NAME="tts/USB%n", SYMLINK="%k", MODE="0660"
-KERNEL=="ippp0", NAME="%k"
-KERNEL=="isdn*", NAME="%k"
-KERNEL=="dcbri*", NAME="%k"
-KERNEL=="ircomm*", NAME="%k"
-
-# pty devices
-KERNEL=="ptmx", NAME="%k", MODE="0666"
-KERNEL=="pty[p-za-e][0-9a-f]*", NAME="pty/m%n", SYMLINK="%k"
-KERNEL=="tty[p-za-e][0-9a-f]*", NAME="pty/s%n", SYMLINK="%k"
-
-# vc devices
-KERNEL=="vcs", NAME="vcc/0", SYMLINK="%k"
-KERNEL=="vcs[0-9]*", NAME="vcc/%n", SYMLINK="%k"
-KERNEL=="vcsa", NAME="vcc/a0", SYMLINK="%k"
-KERNEL=="vcsa[0-9]*", NAME="vcc/a%n", SYMLINK="%k"
+# All block devices
+SUBSYSTEM=="block", GROUP="disk", MODE="0640"
+SUBSYSTEM=="block", SYSFS{removable}=="1", GROUP="floppy"
# device mapper creates its own device nodes so ignore these
-KERNEL=="dm-[0-9]*", OPTIONS="ignore_device"
+#KERNEL=="dm-[0-9]*", NAME=""
KERNEL=="device-mapper", NAME="mapper/control"
-# disk devices
+# Disk devices
KERNEL=="sd*", NAME="%k", GROUP="disk"
KERNEL=="dasd*", NAME="%k", GROUP="disk"
KERNEL=="ataraid*", NAME="%k", GROUP="disk"
-SUBSYSTEMS=="scsi", KERNEL=="sr[0-9]*", GROUP="disk"
-SUBSYSTEMS=="scsi", KERNEL=="sg[0-9]*", GROUP="burning"
-
-# all block devices
-SUBSYSTEM=="block", GROUP="disk", MODE="0640"
-SUBSYSTEM=="block", ATTRS{removable}=="1", GROUP="floppy", MODE="0660"
-
-# scsi cdrom devices
-SUBSYSTEMS=="scsi", KERNEL=="s[grt][0-9]*", ATTRS{type}=="5", MODE="0660", GROUP="cdrom"
-
-# tape devices
-KERNEL=="ht*", NAME="%k"
-KERNEL=="nht*", NAME="%k"
-KERNEL=="pt*", NAME="%k"
-KERNEL=="npt*", NAME="%k"
-KERNEL=="st*", NAME="%k"
-KERNEL=="nst*", NAME="%k"
-KERNEL=="osst*", NAME="%k"
-KERNEL=="nosst*", NAME="%k"
+BUS=="scsi", KERNEL=="sr[0-9]*", GROUP="scsi"
+BUS=="scsi", KERNEL=="sg[0-9]*", GROUP="burning"
+
+# CDrom devices
+BUS=="ide", KERNEL=="hd[a-z]", ACTION=="add", IMPORT="/sbin/cdrom_id --export $tempnode"
+BUS=="scsi", KERNEL=="sr[0-9]*", ACTION=="add", IMPORT="/sbin/cdrom_id --export $tempnode"
+BUS=="scsi", KERNEL=="scd[a-z]", ACTION=="add", IMPORT="/sbin/cdrom_id --export $tempnode"
+
+ENV{ID_CDROM}=="?*", SYMLINK+="cdrom%e", GROUP="cdrom"
+ENV{ID_CDROM_CD_RW}=="?*", SYMLINK+="cdrw%e", MODE="0660", GROUP="burning"
+ENV{ID_CDROM_DVD}=="?*", SYMLINK+="dvd%e"
+ENV{ID_CDROM_DVD_R}=="?*", SYMLINK+="dvdrw%e"
+
+# permissions for SCSI CD devices
+BUS=="scsi", KERNEL=="s[grt][0-9]*", SYSFS{type}=="5", MODE="0660", GROUP="cdrom"
+
+# alsa devices
+SUBSYSTEM=="sound", GROUP="audio", MODE="0660"
+KERNEL=="controlC[0-9]*", NAME="snd/%k", RUN="/usr/sbin/alsactl restore"
+KERNEL=="hw[CD0-9]*", NAME="snd/%k"
+KERNEL=="pcm[CD0-9cp]*", NAME="snd/%k"
+KERNEL=="midi[CD0-9]*", NAME="snd/%k"
+KERNEL=="timer", NAME="snd/%k"
+KERNEL=="seq", NAME="snd/%k"
+
+# sound devices
+KERNEL=="admmidi" NAME="sound/%k", SYMLINK="%k"
+KERNEL=="adsp", NAME="sound/%k", SYMLINK="%k"
+KERNEL=="amidi" NAME="sound/%k", SYMLINK="%k"
+KERNEL=="adsp[0-9]*", NAME="sound/%k", SYMLINK="%k"
+KERNEL=="audio", NAME="sound/%k", SYMLINK="%k"
+KERNEL=="dmmidi" NAME="sound/%k", SYMLINK="%k"
+KERNEL=="audio[0-9]*", NAME="sound/%k", SYMLINK="%k"
+KERNEL=="dsp", NAME="sound/%k", SYMLINK="%k"
+KERNEL=="dsp[0-9]*", NAME="sound/%k", SYMLINK="%k"
+KERNEL=="mixer", NAME="sound/%k", SYMLINK="%k"
+KERNEL=="mixer[0-9]*", NAME="sound/%k", SYMLINK="%k"
+KERNEL=="sequencer", NAME="sound/%k", SYMLINK="%k"
+KERNEL=="sequencer[0-9]*", NAME="sound/%k", SYMLINK="%k"
# input devices
-KERNEL=="mice", NAME="input/%k", MODE="0644"
-KERNEL=="mouse*", NAME="input/%k", MODE="0644"
-KERNEL=="event*", NAME="input/%k", MODE="0644"
-KERNEL=="js*", NAME="input/%k", MODE="0644"
-KERNEL=="ts*", NAME="input/%k", MODE="0644"
-KERNEL=="psaux", NAME="input/%k", SYMLINK="%k", MODE="0644"
+KERNEL=="mice", NAME="input/%k", MODE="0644"
+KERNEL=="mouse*", NAME="input/%k", MODE="0644"
+KERNEL=="event*", NAME="input/%k", MODE="0644"
+KERNEL=="js*", NAME="input/%k", MODE="0644"
+KERNEL=="ts*", NAME="input/%k", MODE="0644"
+KERNEL=="psaux" NAME="input/%k", SYMLINK="%k", MODE="0644"
# misc devices
-KERNEL=="agpgart", NAME="misc/%k", SYMLINK="%k"
-KERNEL=="rtc", NAME="misc/%k", SYMLINK+="%k", MODE="0644"
-KERNEL=="uinput", NAME="misc/%k", SYMLINK+="%k"
-KERNEL=="inotify", NAME="misc/%k", SYMLINK+="%k", MODE="0666"
-
-# capi devices
-KERNEL=="capi", NAME="capi20", SYMLINK="isdn/capi20"
-KERNEL=="capi*", NAME="capi/%n"
-
-# cpu devices
-KERNEL=="cpu[0-9]*", NAME="cpu/%n/cpuid"
-KERNEL=="msr[0-9]*", NAME="cpu/%n/msr"
-KERNEL=="microcode", NAME="cpu/microcode"
-
-# i2c devices
-KERNEL=="i2c-[0-9]*", NAME="i2c/%n", SYMLINK+="%k"
-
-# loop devices
-KERNEL=="loop[0-9]*", NAME="loop/%n", SYMLINK+="%k", GROUP="disk"
-
-# md block devices
-KERNEL=="md[0-9]*", NAME="md/%n", SYMLINK+="%k", GROUP="disk"
-
-# aoe char devices,
-SUBSYSTEM=="aoe", KERNEL=="discover", NAME="etherd/%k", GROUP="disk", MODE="0220"
-SUBSYSTEM=="aoe", KERNEL=="err", NAME="etherd/%k", GROUP="disk", MODE="0440"
-SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k", GROUP="disk", MODE="0220"
-
-# netlink devices
-KERNEL=="route", NAME="netlink/%k"
-KERNEL=="skip", NAME="netlink/%k"
-KERNEL=="usersock", NAME="netlink/%k"
-KERNEL=="fwmonitor", NAME="netlink/%k"
-KERNEL=="tcpdiag", NAME="netlink/%k"
-KERNEL=="nflog", NAME="netlink/%k"
-KERNEL=="xfrm", NAME="netlink/%k"
-KERNEL=="arpd", NAME="netlink/%k"
-KERNEL=="route6", NAME="netlink/%k"
-KERNEL=="ip6_fw", NAME="netlink/%k"
-KERNEL=="dnrtmsg", NAME="netlink/%k"
-KERNEL=="tap*", NAME="netlink/%k"
-
-# ramdisk devices
-KERNEL=="ram[0-9]*", NAME="rd/%n", SYMLINK+="%k"
-
-# IEEE1394 (firewire) devices (must be before raw devices below)
-KERNEL=="raw1394", NAME="%k", GROUP="video"
-KERNEL=="dv1394*", NAME="dv1394/%n", GROUP="video"
-KERNEL=="video1394*", NAME="video1394/%n", GROUP="video"
-
-# raw devices
-KERNEL=="raw[0-9]*", NAME="raw/%k", GROUP="disk"
-KERNEL=="ram*", NAME="%k", GROUP="disk"
-
-# memory devices
-KERNEL=="random", NAME="%k", MODE="0666"
-KERNEL=="urandom", NAME="%k", MODE="0444"
-KERNEL=="mem", NAME="%k", MODE="0640"
-KERNEL=="kmem", NAME="%k", MODE="0640"
-KERNEL=="port", NAME="%k", MODE="0640"
-KERNEL=="full", NAME="%k", MODE="0666"
-KERNEL=="null", NAME="%k", MODE="0666"
-KERNEL=="zero", NAME="%k", MODE="0666"
-
-# usb devices
-KERNEL=="hiddev*", NAME="usb/%k"
-KERNEL=="auer*", NAME="usb/%k"
-KERNEL=="legousbtower*", NAME="usb/%k"
-KERNEL=="dabusb*", NAME="usb/%k"
-
-# dvb devices
-SUBSYSTEM=="dvb", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter%%i/%%s $${K%%%%.*} $${K#*.}'", NAME="%c", GROUP="video"
-
-# Asterisk Zaptel devices
-KERNEL=="zapctl", NAME="zap/ctl"
-KERNEL=="zaptimer", NAME="zap/timer"
-KERNEL=="zapchannel", NAME="zap/channel"
-KERNEL=="zappseudo", NAME="zap/pseudo"
-KERNEL=="zap[0-9]*", NAME="zap/%n"
-
-# jaz devices
-KERNEL=="jaz*", NAME="%k", GROUP="disk"
-
-# zip devices
-KERNEL=="pocketzip*", NAME="%k", GROUP="disk"
-KERNEL=="zip*", NAME="%k", GROUP="disk"
-
-# ls120 devices
-KERNEL=="ls120", NAME="%k", GROUP="disk"
-
-# printer (usb printer rule must be before the rest)
-SUBSYSTEMS=="usb", KERNEL=="lp[0-9]*", NAME="usb/%k", GROUP="lp", MODE="0660"
-KERNEL=="lp*", NAME="%k", GROUP="lp", MODE="0660"
-KERNEL=="irlpt", NAME="%k", GROUP="lp", MODE="0660"
-KERNEL=="usblp", NAME="%k", GROUP="lp", MODE="0660"
-KERNEL=="parport*", NAME="%k", GROUP="lp", MODE="0660"
+KERNEL=="console" NAME="%k", MODE="0600"
+KERNEL=="full", NAME="%k", MODE="0666"
+KERNEL=="kmem", NAME="%k", MODE="0640"
+KERNEL=="mem", NAME="%k", MODE="0640"
+KERNEL=="null", NAME="%k", MODE="0666"
+KERNEL=="port", NAME="%k", MODE="0640"
+KERNEL=="random", NAME="%k", MODE="0644"
+KERNEL=="rtc", NAME="%k", MODE="0644"
+KERNEL=="tty", NAME="%k", MODE="0666"
+KERNEL=="urandom", NAME="%k", MODE="0644"
+KERNEL=="zero", NAME="%k", MODE="0666"
+
+# needed to create ptys
+KERNEL=="ptmx", NAME="%k", MODE="0666"
+
+# printer
+KERNEL=="lp*", NAME="%k", MODE="0660"
+# HP printers
+BUS=="usb", KERNEL=="lp[0-9]*", SYMLINK="usb%k"
# v4l devices
-KERNEL=="video[0-9]*", NAME="v4l/video%n", SYMLINK="video%n", GROUP="video", MODE="0660"
-KERNEL=="radio[0-9]*", NAME="v4l/radio%n", GROUP="video", MODE="0660"
-KERNEL=="vbi[0-9]*", NAME="v4l/vbi%n", SYMLINK="vbi%n", GROUP="video", MODE="0660"
-KERNEL=="vtx[0-9]*", NAME="v4l/vtx%n", GROUP="video", MODE="0660"
-
-# video devices
-KERNEL=="card*", NAME="dri/card%n", MODE="0660", GROUP="video"
-KERNEL=="3dfx*", NAME="%k", MODE="0660", GROUP="video"
-KERNEL=="nvidia*", NAME="%k", MODE="0660", GROUP="video"
-KERNEL=="fb[0-9]", NAME="%k", MODE="0660", GROUP="video"
-KERNEL=="svga[0-9]", NAME="%k", MODE="0660", GROUP="video"
-
-# network devices
-KERNEL=="tun", NAME="net/%k"
-KERNEL=="ippp*", NAME="net/%k", SYMLINK="%k", MODE="0644"
-KERNEL=="ipstate*", NAME="net/%k", SYMLINK="%k", MODE="0660"
-KERNEL=="spx", NAME="net/%k", SYMLINK="%k", MODE="0644"
-
-# diskonkey devices
-KERNEL=="diskonkey*", NAME="%k", GROUP="disk"
-
-# rem_ide devices
-KERNEL=="microdrive*", NAME="%k", GROUP="disk"
-
-# kbd devices
-KERNEL=="kbd", NAME="%k", MODE="0664"
-
-# Sony Vaio Jogdial sonypi device
-KERNEL=="sonypi", NAME="%k", MODE="0666"
-
-# packet devices
-KERNEL=="pktcdvd", NAME="pktcdvd/control", GROUP="burning", MODE="0660"
-KERNEL=="pktcdvd[0-9]*", NAME="pktcdvd/pktcdvd%n", GROUP="burning", MODE="0660"
-
-# infiniband devices
-KERNEL=="umad*", NAME="infiniband/%k"
-KERNEL=="issm*", NAME="infiniband/%k"
-
-# Load firmwares
-SUBSYSTEM=="firmware", ACTION=="add", RUN+="firmware.sh"
+KERNEL=="video[0-9]*", NAME="v4l/video%n", SYMLINK="video%n", GROUP="video", MODE="0660"
+KERNEL=="radio[0-9]*", NAME="v4l/radio%n", GROUP="video", MODE="0660"
+KERNEL=="vbi[0-9]*", NAME="v4l/vbi%n", SYMLINK="vbi%n", GROUP="video", MODE="0660"
+KERNEL=="vtx[0-9]*", NAME="v4l/vtx%n", GROUP="video", MODE="0660"
+
+#nvidia devices
+KERNEL=="nvidia*" NAME="%k", MODE="0660", GROUP="video"
+
+#framebuffer devices
+KERNEL=="fb[0-9]", NAME="%k", MODE="0660", GROUP="video"
+
+# Network devices
+KERNEL=="tun", NAME="net/%k"
+
+SUBSYSTEM=="firmware", ACTION="add", RUN+="/lib/udev/firmware_helper"
+
+# be backward compatible for a while with the /etc/hotplug.d/ system
+# run /etc/hotplug.d/ stuff only if we came from a hotplug event, not for udevstart
+ENV{UDEVD_EVENT}=="1", RUN="udev_run_hotplugd $env{SUBSYSTEM}"
diff --git a/disk/udev/rules/52-modules.rules b/disk/udev/rules/52-modules.rules
deleted file mode 100644
index fac6f9cb3a..0000000000
--- a/disk/udev/rules/52-modules.rules
+++ /dev/null
@@ -1,35 +0,0 @@
-# Module loading rules for systems without hotplug
-
-# Autoload modules that lack aliases but have them defined in
-# /etc/modprobe.conf
-ENV{MODALIAS}!="?*", SUBSYSTEM=="pnp", RUN+="/bin/sh -c 'while read id; do /sbin/modprobe pnp:d$$id; done < /sys$devpath/id'"
-
-# Check whether we need these rules for this event
-ACTION!="add", GOTO="modprobe_end"
-
-# Autoload modules with aliases
-ATTRS{modalias}=="?*", ACTION=="add", RUN+="/sbin/modprobe $env{MODALIAS}"
-
-# PCMCIA
-SUBSYSTEM=="pcmcia_socket", RUN+="/sbin/modprobe pcmcia"
-
-# I2O
-SUBSYSTEM!="i2o", GOTO="i2o_end"
-RUN+="/sbin/modprobe i2o-block"
-LABEL="i2o_end"
-
-# MMC
-SUBSYSTEM!="mmc", GOTO="mmc_end"
-RUN+="/sbin/modprobe mmc-block"
-LABEL="mmc_end"
-
-# SCSI
-SUBSYSTEM!="scsi_device", GOTO="scsi_device_end"
-ATTRS{type}=="0|7|14", RUN+="/sbin/modprobe sd_mod"
-ATTRS{type}=="1", ATTRS{vendor}=="Onstream", ATTRS{model}!="ADR*" RUN+="/sbin/modprobe osst"
-ATTRS{type}=="1", RUN+="/sbin/modprobe st"
-ATTRS{type}=="[345]", RUN+="/sbin/modprobe sr_mod"
-RUN+="/sbin/modprobe sg"
-LABEL="scsi_device_end"
-
-LABEL="modprobe_end"
diff --git a/disk/udev/rules/70-cdrom_perms.rules b/disk/udev/rules/70-cdrom_perms.rules
deleted file mode 100644
index a0409a5072..0000000000
--- a/disk/udev/rules/70-cdrom_perms.rules
+++ /dev/null
@@ -1,3 +0,0 @@
-# cdrom device symlinks and permissions
-ENV{ID_CDROM}=="?*", GROUP="cdrom"
-ENV{ID_CDROM_CD_R}=="?*", MODE="0660", GROUP="burning"
diff --git a/disk/udev/rules/README b/disk/udev/rules/README
index 00a082a0c6..3e5c56c3bc 100644
--- a/disk/udev/rules/README
+++ b/disk/udev/rules/README
@@ -6,6 +6,4 @@ an idea of what's possible with udev.
When a rule matches in one file, a different rule in another file will be
ignored, so be sure to name your own files properly.
-Be sure to leave rules files installed by the spell as they are, so the
-spell can update them when needed. If you need to make changes, always
-add your own rules files when possible.
+Be sure to leave 50-default.rules as it is, so the spell can update it when needed.
diff --git a/disk/udev/rules/rules.examples b/disk/udev/rules/rules.examples
index 16cc41edb8..c36098dd2d 100644
--- a/disk/udev/rules/rules.examples
+++ b/disk/udev/rules/rules.examples
@@ -3,40 +3,40 @@
# These are just some examples, check the manpage for the full options
# Looking for scsi bus id 42:0:0:1
-#SUBSYSTEMS=="scsi", PROGRAM="/bin/echo -n test-%b", RESULT="test-42:0:0:1", NAME="%c"
+#BUS="scsi", PROGRAM="/bin/echo -n test-%b", RESULT="test-42:0:0:1", NAME="%c"
# A usb camera.
-#SUBSYSTEMS=="usb", ATTRS{vendor}=="FUJIFILM", ATTRS{model}=="M100", NAME="camera%n"
+#BUS="usb", SYSFS_vendor="FUJIFILM", SYSFS_model="M100", NAME="camera%n"
# USB Epson printer to be called lp_epson
-#SUBSYSTEMS="usb", ATTRS{serial}="HXOLL0012202323480", NAME="lp_epson"
+#BUS="usb", SYSFS_serial="HXOLL0012202323480", NAME="lp_epson"
# USB HP printer to be called lp_hp
-#SUBSYSTEMS="usb", ATTRS{serial}="W09090207101241330", NAME="lp_hp"
+#BUS="usb", SYSFS_serial="W09090207101241330", NAME="lp_hp"
# sound card with PCI bus id 00:0b.0 to be the first sound card
-#SUBSYSTEMS=="pci", KERNELS=="00:0b.0", NAME="dsp"
+#BUS="pci", ID="00:0b.0", NAME="dsp"
# sound card with PCI bus id 00:07.1 to be the second sound card
-#SUBSYSTEMS=="pci", KERNELS=="00:07.1", NAME="dsp1"
+#BUS="pci", ID="00:07.1", NAME="dsp1"
# USB mouse plugged into the third port of the first hub to be called mouse0
-#SUBSYSTEMS=="usb", PLACE=="1.3", NAME="mouse0"
+#BUS="usb", PLACE="1.3", NAME="mouse0"
# USB tablet plugged into the third port of the second hub to be called mouse1
-#SUBSYSTEMS=="usb", PLACE=="2.3", NAME="mouse1"
-#SUBSYSTEMS=="usb", PLACE=="2.4", NAME="mouse2"
+#BUS="usb", PLACE="2.3", NAME="mouse1"
+#BUS="usb", PLACE="2.4", NAME="mouse2"
# ttyUSB1 should always be called visor
-#KERNEL=="ttyUSB1", NAME="visor"
-#KERNEL=="ttyUSB0", NAME="pl2303"
+#KERNEL="ttyUSB1", NAME="visor"
+#KERNEL="ttyUSB0", NAME="pl2303"
# a devfs like way to name some tty devices
-#KERNEL=="ttyS*", NAME="tts/%n"
-#KERNEL=="tty*", NAME="vc/%n"
+#KERNEL="ttyS*", NAME="tts/%n"
+#KERNEL="tty*", NAME="vc/%n"
# if this is a ide cdrom, name it the default name, and create a symlink to cdrom
-#SUBSYSTEMS=="ide", PROGRAM="/bin/cat /proc/ide/%k/media", RESULT=="cdrom", NAME="%k", SYMLINK="cdrom"
+#BUS="ide", PROGRAM="/bin/cat /proc/ide/%k/media", RESULT="cdrom", NAME="%k", SYMLINK="cdrom"
# DRI devices always go into a subdirectory (as per the LSB spec)
-#KERNEL=="card*", NAME="dri/card%n"
+#KERNEL="card*", NAME="dri/card%n"