-# These rules are to try to emulate a devfs naming scheme in udev
-# if there are any missing rules, please let the udev developers
-# know.
-#
-# There are a number of modifiers that are allowed to be used in the
-# a number of the different fields. They provide the following subsitutions:
-# %n - the "kernel number" of the device.
-# for example, 'sda3' has a "kernel number" of '3'
-# %M - the kernel major number for the device
-# %m - the kernel minor number for the device
-# %b - the bus id for the device
-# %c - the return value for the CALLOUT program (note, this doesn't work within
-# the PROGRAM field for the obvious reason.)
-# %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'
-#
+# 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.
# ide block devices
-NUMBER, BUS="ide", id="0.0", NAME="ide/host0/bus0/target0/lun0/%D"
-NUMBER, BUS="ide", id="0.1", NAME="ide/host0/bus0/target1/lun0/%D"
-NUMBER, BUS="ide", id="1.0", NAME="ide/host0/bus1/target0/lun0/%D"
-NUMBER, BUS="ide", id="1.1", NAME="ide/host0/bus1/target1/lun0/%D"
+BUS="ide", KERNEL="hd*", PROGRAM="/etc/udev/ide-devfs.sh %k %b %n", NAME="%k", SYMLINK="%c{1} %c{2}"
# md block devices
-REPLACE, KERNEL="md[0-9]*", NAME="md/%n"
+KERNEL="md[0-9]*", NAME="md/%n"
+
+# floppy devices
+KERNEL="fd[0-9]*", NAME="floppy/%n"
# tty devices
-REPLACE, KERNEL="tty[0-9]*", NAME="vc/%n"
-REPLACE, KERNEL="ttyS[0-9]*", NAME="tts/%n"
-REPLACE, KERNEL="ttyUSB[0-9]*", NAME="tts/USB%n"
+KERNEL="tty[0-9]*", NAME="vc/%n"
+KERNEL="ttyS[0-9]*", NAME="tts/%n"
+KERNEL="ttyUSB[0-9]*", NAME="tts/USB%n"
# vc devices
-REPLACE, KERNEL="vcs", NAME="vcc/0"
-REPLACE, KERNEL="vcs[0-9]*", NAME="vcc/%n"
-REPLACE, KERNEL="vcsa", NAME="vcc/a0"
-REPLACE, KERNEL="vcsa[0-9]*", NAME="vcc/a%n"
+KERNEL="vcs", NAME="vcc/0"
+KERNEL="vcs[0-9]*", NAME="vcc/%n"
+KERNEL="vcsa", NAME="vcc/a0"
+KERNEL="vcsa[0-9]*", NAME="vcc/a%n"
# v4l devices
-REPLACE, KERNEL="video[0-9]*", NAME="v4l/video%n"
-REPLACE, KERNEL="radio[0-9]*", NAME="v4l/radio%n"
-REPLACE, KERNEL="vbi[0-9]*", NAME="v4l/vbi%n"
-REPLACE, KERNEL="vtx[0-9]*", NAME="v4l/vtx%n"
+KERNEL="video[0-9]*", NAME="v4l/video%n"
+KERNEL="radio[0-9]*", NAME="v4l/radio%n"
+KERNEL="vbi[0-9]*", NAME="v4l/vbi%n"
+KERNEL="vtx[0-9]*", NAME="v4l/vtx%n"
+
+# dm devices (ignore them)
+KERNEL="dm-[0-9]*", NAME=""
+
+# i2c devices
+KERNEL="i2c-[0-9]*", NAME="i2c/%n", SYMLINK="%k"
+
+# loop devices
+KERNEL="loop[0-9]*", NAME="loop/%n", SYMLINK="%k"
+
+# ramdisks
+KERNEL="ram[0-9]*", NAME="rd/%n", SYMLINK="%k"
+
+# framebuffer devices
+KERNEL="fb[0-9]*", NAME="fb/%n", SYMLINK="%k"
+
+# misc
+KERNEL="rtc", NAME="misc/%k", SYMLINK="%k"
+KERNEL="psaux", NAME="misc/%k", SYMLINK="%k"
+KERNEL="agpgart", NAME="misc/%k", SYMLINK="%k"
+KERNEL="rtc", NAME="misc/%k", SYMLINK="%k"
+KERNEL="psaux", NAME="misc/%k", SYMLINK="%k"
+KERNEL="uinput", NAME="misc/%k", SYMLINK="%k"
+
+# alsa devices
+KERNEL="controlC[0-9]*", NAME="snd/%k"
+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"
+
+# oss devices
+KERNEL="audio*", NAME="sound/%k", SYMLINK="%k"
+KERNEL="dmmidi", NAME="sound/%k", SYMLINK="%k"
+KERNEL="dsp*", NAME="sound/%k", SYMLINK="%k"
+KERNEL="midi*", NAME="sound/%k", SYMLINK="%k"
+KERNEL="mixer*", NAME="sound/%k", SYMLINK="%k"
+KERNEL="sequencer*", NAME="sound/%k", SYMLINK="%k"
+
+# input devices
+KERNEL="mice", NAME="input/%k"
+KERNEL="mouse*", NAME="input/%k"
+KERNEL="event*", NAME="input/%k"
+KERNEL="js*", NAME="input/%k"
+KERNEL="ts*", NAME="input/%k"
+