summaryrefslogtreecommitdiffstats
path: root/source/a/udev
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2009-08-26 10:00:38 -0500
committer Eric Hameleers <alien@slackware.com>2018-05-31 22:41:17 +0200
commit5a12e7c134274dba706667107d10d231517d3e05 (patch)
tree55718d5acb710fde798d9f38d0bbaf594ed4b296 /source/a/udev
downloadcurrent-5a12e7c134274dba706667107d10d231517d3e05.tar.gz
current-5a12e7c134274dba706667107d10d231517d3e05.tar.xz
Slackware 13.0slackware-13.0
Wed Aug 26 10:00:38 CDT 2009 Slackware 13.0 x86_64 is released as stable! Thanks to everyone who helped make this release possible -- see the RELEASE_NOTES for the credits. The ISOs are off to the replicator. This time it will be a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD. We're taking pre-orders now at store.slackware.com. Please consider picking up a copy to help support the project. Once again, thanks to the entire Slackware community for all the help testing and fixing things and offering suggestions during this development cycle. As always, have fun and enjoy! -P.
Diffstat (limited to 'source/a/udev')
-rw-r--r--source/a/udev/config/modprobe.d/blacklist.conf.new270
-rw-r--r--source/a/udev/config/modprobe.d/isapnp.conf.new15
-rw-r--r--source/a/udev/config/modprobe.d/psmouse.conf.new6
-rw-r--r--source/a/udev/config/modprobe.d/usb-controller.conf.new4
-rw-r--r--source/a/udev/config/rc.d/rc.udev.new133
-rw-r--r--source/a/udev/config/rules.d/40-slackware.rules16
-rw-r--r--source/a/udev/config/rules.d/65-permissions.rules52
-rw-r--r--source/a/udev/config/rules.d/90-network.rules5
-rwxr-xr-xsource/a/udev/config/scripts/nethelper.sh62
-rw-r--r--source/a/udev/config/udev.conf14
-rw-r--r--source/a/udev/doinst.sh39
-rw-r--r--source/a/udev/rule_generator.diff80
-rw-r--r--source/a/udev/slack-desc19
-rw-r--r--source/a/udev/udev-141.tar.bz2.sign8
-rwxr-xr-xsource/a/udev/udev.SlackBuild140
15 files changed, 863 insertions, 0 deletions
diff --git a/source/a/udev/config/modprobe.d/blacklist.conf.new b/source/a/udev/config/modprobe.d/blacklist.conf.new
new file mode 100644
index 000000000..25811703d
--- /dev/null
+++ b/source/a/udev/config/modprobe.d/blacklist.conf.new
@@ -0,0 +1,270 @@
+#
+# Listing a module here prevents the hotplug scripts from loading it.
+# Usually that'd be so that some other driver will bind it instead,
+# no matter which driver happens to get probed first. Sometimes user
+# mode tools can also control driver binding.
+
+# PC Speaker support:
+# This one is loaded by /etc/rc.d/rc.modules. If you don't like
+# the beeps and buzz from speaker, edit /etc/rc.d/rc.modules.
+blacklist pcspkr
+
+# tulip ... de4x5, xircom_tulip_cb, dmfe (...) handle same devices
+blacklist de4x5
+
+# At least 2.4.3 and later xircom_tulip doesn't have that conflict
+# xircom_tulip_cb
+blacklist dmfe
+
+#evbug is a debug tool and should be loaded explicitly
+blacklist evbug
+
+# Alternate Intel EtherExpress Pro/100 support driver. List it
+# here so it won't conflict with an already-loaded e100 module.
+blacklist eepro100
+
+# Alternate 8139 driver. Some 8139 cards need this specific driver,
+# though...
+blacklist 8139cp
+
+# Deprecated BCM4318 driver.
+blacklist bcm43xx
+
+# Modules used to run a wireless adaptor as an access point. These
+# conflict with the normal driver for the device, and so should be
+# loaded manually.
+blacklist hostap_cs
+blacklist hostap_pci
+blacklist hostap_plx
+blacklist hostap
+
+# Ethernet over IEEE1394 module. In too many cases this will load
+# when there's no eth1394 device present (just an IEEE1394 port)
+blacklist eth1394
+
+# This module has also been known to cause crashes with some hardware.
+blacklist hw_random
+
+# The kernel lists this as "experimental", but for now it's "broken"
+blacklist via-ircc
+
+# ALSA modules to support sound modems. These should be loaded manually
+# if needed. For most people they just break sound support...
+blacklist snd-atiixp-modem
+blacklist snd-intel8x0m
+blacklist snd-via82xx-modem
+
+# OSS (Open Sound System) modules. This is the old and deprecated Linux
+# sound system. If you want to use OSS, remove the alsa-driver package
+# and cut out (or comment out) this list. With these modules
+# blacklisted ALSA will load by default.
+blacklist ac97
+blacklist ac97_codec
+blacklist aci
+blacklist ad1816
+blacklist ad1848
+blacklist ad1889
+blacklist adlib_card
+blacklist aedsp16
+blacklist ali5455
+blacklist awe_wave
+blacklist btaudio
+blacklist cmpci
+blacklist cs4232
+blacklist cs4281
+blacklist cs46xx
+blacklist emu10k1
+blacklist es1370
+blacklist es1371
+blacklist esssolo1
+blacklist forte
+blacklist gus
+blacklist i810_audio
+blacklist kahlua
+blacklist mad16
+blacklist maestro
+blacklist maestro3
+blacklist maui
+blacklist mpu401
+blacklist msnd
+blacklist msnd_classic
+blacklist msnd_pinnacle
+blacklist nm256_audio
+blacklist opl3
+blacklist opl3sa
+blacklist opl3sa2
+blacklist pas2
+blacklist pss
+blacklist rme96xx
+blacklist sb
+blacklist sb_lib
+blacklist sgalaxy
+blacklist sonicvibes
+blacklist sound
+blacklist sscape
+blacklist trident
+blacklist trix
+blacklist uart401
+blacklist uart6850
+blacklist v_midi
+blacklist via82cxxx_audio
+blacklist wavefront
+blacklist ymfpci
+
+# Hardware specific video framebuffer modules. If the user wants
+# these, they can load them manually or de-blacklist them. Having
+# them load automatically may lead to funny side effects with
+# certain revisions of video hardware.
+blacklist arcfb
+blacklist aty128fb
+blacklist atyfb
+blacklist cirrusfb
+blacklist clgenfb
+blacklist cyber2000fb
+blacklist fbcon-cfb2
+blacklist fbcon-cfb4
+blacklist fbcon-hga
+blacklist fbcon-mfb
+blacklist fbcon-vga-planes
+blacklist fbgen
+blacklist hgafb
+blacklist i2c-matroxfb
+blacklist i810fb
+blacklist intelfb
+blacklist kyrofb
+blacklist matroxfb_DAC1064
+blacklist matroxfb_Ti3026
+blacklist matroxfb_accel
+blacklist matroxfb_base
+blacklist matroxfb_crtc2
+blacklist matroxfb_g450
+blacklist matroxfb_maven
+blacklist matroxfb_misc
+blacklist neofb
+blacklist nvidiafb
+blacklist pm2fb
+blacklist pm3fb
+blacklist radeonfb
+blacklist rivafb
+blacklist savagefb
+blacklist sisfb
+blacklist sstfb
+blacklist tdfxfb
+blacklist tridentfb
+blacklist vga16fb
+
+# SCSI and SATA controller modules. Typically these are either
+# built into the kernel or loaded with an initrd already.
+blacklist 3w-xxxx
+blacklist 53c7,8xx
+blacklist AM53C974
+blacklist BusLogic
+blacklist NCR53c406a
+blacklist a100u2w
+blacklist advansys
+blacklist aha152x
+blacklist aha1542
+blacklist aha1740
+blacklist aic79xx
+blacklist aic7xxx
+blacklist aic7xxx_old
+blacklist aic94xx
+blacklist ata_piix
+blacklist atp870u
+blacklist cpqfc
+blacklist dc395x
+blacklist dmx3191d
+blacklist dpt_i2o
+blacklist dtc
+blacklist eata
+blacklist eata_dma
+blacklist eata_pio
+blacklist fdomain
+blacklist g_NCR5380
+blacklist g_NCR5380_mmio
+blacklist gdth
+blacklist ide-scsi
+blacklist imm
+blacklist in2000
+blacklist initio
+blacklist ipr
+blacklist ips
+blacklist libata
+blacklist megaraid
+blacklist ncr53c8xx
+blacklist nsp32
+blacklist osst
+blacklist pas16
+blacklist pci2000
+blacklist pci2220i
+blacklist ppa
+blacklist psi240i
+blacklist qla1280
+blacklist qla2100
+blacklist qla2200
+blacklist qla2300
+blacklist qla2322
+blacklist qla2xxx
+blacklist qla6312
+blacklist qla6322
+blacklist qlogicfas
+blacklist qlogicfas408
+blacklist qlogicfc
+blacklist qlogicisp
+blacklist seagate
+blacklist sim710
+blacklist sata_promise
+blacklist sata_sil
+blacklist sata_sis
+blacklist sata_svw
+blacklist sata_sx4
+blacklist sata_via
+blacklist sata_vsc
+blacklist scsi_debug
+blacklist scsi_transport_fc
+blacklist scsi_transport_spi
+blacklist sym53c416
+blacklist sym53c8xx
+blacklist sym53c8xx
+blacklist t128
+blacklist tmscsim
+blacklist u14-34f
+
+# Blacklist all watchdog modules. Many motherboards hangs with them and,
+# if you really need an watchdog you probably know how to load the module
+blacklist acquirewdt
+blacklist advantechwdt
+blacklist alim1535_wdt
+blacklist alim7101_wdt
+blacklist cpu5wdt
+blacklist eurotechwdt
+blacklist hpwdt
+blacklist i6300esb
+blacklist iTCO_vendor_support
+blacklist iTCO_wdt
+blacklist ib700wdt
+blacklist ibmasr
+blacklist it8712f_wdt
+blacklist machzwd
+blacklist mixcomwd
+blacklist pc87413_wdt
+blacklist pcwd
+blacklist pcwd_pci
+blacklist pcwd_usb
+blacklist sbc60xxwdt
+blacklist sbc7240_wdt
+blacklist sbc8360
+blacklist sbc_epx_c3
+blacklist sc1200wdt
+blacklist sc520_wdt
+blacklist scx200_wdt
+blacklist smsc37b787_wdt
+blacklist softdog
+blacklist w83627hf_wdt
+blacklist w83697hf_wdt
+blacklist w83877f_wdt
+blacklist w83977f_wdt
+blacklist wafer5823wdt
+blacklist wdt
+blacklist wdt_pci
+
diff --git a/source/a/udev/config/modprobe.d/isapnp.conf.new b/source/a/udev/config/modprobe.d/isapnp.conf.new
new file mode 100644
index 000000000..2ed9305ee
--- /dev/null
+++ b/source/a/udev/config/modprobe.d/isapnp.conf.new
@@ -0,0 +1,15 @@
+# These aliases are here because many PnP modules do not
+# provide aliases for them.
+alias pnp:dPNP0400 parport_pc
+alias pnp:dPNP0401 parport_pc
+alias pnp:dPNP0510 irtty-sir
+alias pnp:dPNP0511 irtty-sir
+alias pnp:dPNP0700 floppy
+alias pnp:dPNP0B00 rtc
+alias acpi:PNP0B00: rtc-cmos
+alias acpi:PNP0B01: rtc-cmos
+alias acpi:PNP0B02: rtc-cmos
+alias pnp:dPNPB02F analog
+alias pnp:dPNP0F13 psmouse
+alias pnp:dPNP0800 pcspkr
+alias pnp:dPNP0303 atkbd
diff --git a/source/a/udev/config/modprobe.d/psmouse.conf.new b/source/a/udev/config/modprobe.d/psmouse.conf.new
new file mode 100644
index 000000000..70c0d8195
--- /dev/null
+++ b/source/a/udev/config/modprobe.d/psmouse.conf.new
@@ -0,0 +1,6 @@
+# PS/2 mouse support:
+# The default options when the psmouse module can cause problems with KVM
+# switches. If you experience this, you may want to uncomment the line
+# below to use a more basic mouse protocol with the psmouse module:
+#options psmouse proto=imps
+
diff --git a/source/a/udev/config/modprobe.d/usb-controller.conf.new b/source/a/udev/config/modprobe.d/usb-controller.conf.new
new file mode 100644
index 000000000..4b77fd825
--- /dev/null
+++ b/source/a/udev/config/modprobe.d/usb-controller.conf.new
@@ -0,0 +1,4 @@
+# Make sure that ehci-hcd is always loaded before uhci-hci
+# # or ohci-hcd to prevent a kernel warning:
+install uhci-hcd /sbin/modprobe ehci-hcd ; /sbin/modprobe -i uhci-hcd
+install ohci-hcd /sbin/modprobe ehci-hcd ; /sbin/modprobe -i ohci-hcd
diff --git a/source/a/udev/config/rc.d/rc.udev.new b/source/a/udev/config/rc.d/rc.udev.new
new file mode 100644
index 000000000..8c238b0dd
--- /dev/null
+++ b/source/a/udev/config/rc.d/rc.udev.new
@@ -0,0 +1,133 @@
+#!/bin/sh
+# This is a script to initialize udev, which populates the /dev
+# directory with device nodes, scans for devices, loads the
+# appropriate kernel modules, and configures the devices.
+
+PATH="/sbin:/bin"
+OPT=""
+
+. /etc/udev/udev.conf
+
+# remove trailing slash from udev_root
+UDEV_ROOT=$(echo "${udev_root}" |sed 's/\/*$//')
+
+case "$1" in
+ start)
+ # Sanity check #1, udev requires that the kernel support tmpfs:
+ if ! grep -wq tmpfs /proc/filesystems ; then
+ echo "Sorry, but you need tmpfs support in the kernel to use udev."
+ echo
+ echo "FATAL: Refusing to run /etc/rc.d/rc.udev."
+ exit 1
+ fi
+
+ # Sanity check #2, make sure that a 2.6.x kernel is new enough:
+ if [ "$(uname -r | cut -f 1,2 -d .)" = "2.6" ]; then
+ if [ "$(uname -r | cut -f 3 -d . | sed 's/[^[:digit:]].*//')" -lt "15" ]; then
+ echo "Sorry, but you need a 2.6.15+ kernel to use udev."
+ echo "Your kernel version is only $(uname -r)."
+ echo
+ echo "FATAL: Refusing to run /etc/rc.d/rc.udev."
+ exit 1
+ fi
+ fi
+
+ # Sanity check #3, make sure the udev package was not removed. If udevd
+ # is not there, this will also shut off this script to prevent further
+ # problems:
+ if [ ! -x /sbin/udevd ]; then
+ chmod 644 /etc/rc.d/rc.udev
+ echo "No udevd daemon found."
+ echo "Turning off udev: chmod 644 /etc/rc.d/rc.udev"
+ echo "FATAL: Refusing to run /etc/rc.d/rc.udev."
+ exit 1
+ fi
+
+ # Disable hotplug helper since udevd listens to netlink:
+ if [ -e /proc/sys/kernel/hotplug ]; then
+ echo "" > /proc/sys/kernel/hotplug
+ fi
+
+ # if udevd is already running, rc.udev start will try to re-run
+ # failed events. Else, it will start udevd.
+ if ps axc | grep -q udevd ; then
+ OPT="--type=failed $OPT"
+ ( cd ${UDEV_ROOT}/.udev
+ for TMPFILE in tmp-rules-*.rules ; do
+ mv $TMPFILE /etc/udev/rules.d/${TMPFILE/tmp-rules--/} 2>/dev/null
+ done
+ )
+ else
+ # Mount tmpfs on $UDEV_ROOT:
+ if ! grep -E -q "^[^[:space:]]+ $UDEV_ROOT tmpfs" /proc/mounts; then
+ # umount shm if needed
+ if grep -E -q "^[^[:space:]]+ $UDEV_ROOT/shm tmpfs" /proc/mounts; then
+ umount -l $UDEV_ROOT/shm
+ fi
+
+ # Umount pts if needed, we will remount it later:
+ if grep -E -q "^[^[:space:]]+ $UDEV_ROOT/pts devpts" /proc/mounts; then
+ umount -l $UDEV_ROOT/pts
+ fi
+
+ # Mount tmpfs on $UDEV_ROOT:
+ # the -n is because we don't want $UDEV_ROOT umounted when
+ # someone (rc.[06]) calls umount -a
+ mount -n -o mode=0755 -t tmpfs tmpfs $UDEV_ROOT
+
+ # Remount pts:
+ mkdir $UDEV_ROOT/pts 2> /dev/null
+ mount -n -o mode=0620,gid=5 -t devpts devpts $UDEV_ROOT/pts
+ fi
+
+ # Add the static nodes to $UDEV_ROOT:
+ cp --preserve=all --recursive --remove-destination /lib/udev/devices/* $UDEV_ROOT
+
+ # Start udevd:
+ echo "Starting udevd: /sbin/udevd --daemon"
+ /sbin/udevd --daemon
+
+ # Create rootdev rules
+ DEVICENUMBER=$( /bin/stat -c %d / )
+ MAJORNUMBER=$(($DEVICENUMBER / 256))
+ MINORNUMBER=$(($DEVICENUMBER % 256))
+
+ echo 'ACTION=="add|change", SUBSYSTEM=="block", ENV{MAJOR}=="'$MAJORNUMBER'", ENV{MINOR}=="'$MINORNUMBER'", SYMLINK+="root"' > /dev/.udev/rules.d/61-dev-root-link.rules
+
+ fi
+
+ echo "Triggering udev events: /sbin/udevadm trigger $OPT"
+ # Call udevtrigger and udevsettle to do the device configuration:
+ /sbin/udevadm trigger $OPT && /sbin/udevadm settle --timeout=120
+
+ ;;
+ stop)
+ echo "Stopping udevd"
+ if [ -e /proc/sys/kernel/hotplug ]; then
+ echo /sbin/hotplug > /proc/sys/kernel/hotplug
+ fi
+ killall udevd
+ ;;
+ restart)
+ echo "Restarting udevd"
+ killall udevd
+ sleep 5
+ udevd --daemon
+ ;;
+ reload)
+ echo "Reloading udev rules"
+ udevadm control --reload-rules
+ cp --preserve=all --recursive --update /lib/udev/devices/* $UDEV_ROOT
+ ;;
+ force-reload)
+ echo "Updating all available device nodes in $UDEV_ROOT"
+ udevadm control --reload-rules
+ rm -rf $UDEV_ROOT/.udev $UDEV_ROOT/disk
+ cp --preserve=all --recursive --update /lib/udev/devices/* $UDEV_ROOT
+ ;;
+
+ *)
+ echo "Usage: $0 {start|stop|restart|reload|force-reload}"
+ exit 1
+ ;;
+esac
diff --git a/source/a/udev/config/rules.d/40-slackware.rules b/source/a/udev/config/rules.d/40-slackware.rules
new file mode 100644
index 000000000..29b6071e0
--- /dev/null
+++ b/source/a/udev/config/rules.d/40-slackware.rules
@@ -0,0 +1,16 @@
+# /lib/udev/rules.d/40-slackware.rules
+#
+# Slackware custom udev rules
+# Also see the following Slackware-provided custom rules files:
+# 65-permissions.rules and 90-network.rules
+#
+# Any change in this file will be overwritten in upgrades. Put your
+# custom rules somewhere else (90-local.rules is a good idea).
+#
+# See the udev man page to know the parameters you can use in udev
+# rules.
+#
+
+# input devices
+KERNEL=="mice", SYMLINK+="mouse"
+
diff --git a/source/a/udev/config/rules.d/65-permissions.rules b/source/a/udev/config/rules.d/65-permissions.rules
new file mode 100644
index 000000000..b0cfb2590
--- /dev/null
+++ b/source/a/udev/config/rules.d/65-permissions.rules
@@ -0,0 +1,52 @@
+# Slackware permission rules
+#
+# These rules are here instead of 40-slackware.rules because
+# many of them need to run after the block section in
+# 50-udev.default.rules
+#
+# Remember, in any upgrade, this file will be overwritten.
+# Put your custom rules somewhere else (90-local.rules is
+# a good idea).
+#
+
+# all disks with group disk
+KERNEL!="fd*", SUBSYSTEM=="block", GROUP="disk"
+
+# permissions for IDE floppy devices
+KERNEL=="hd*[!0-9]", SUBSYSTEMS=="ide", ATTRS{media}=="floppy", \
+ SYMLINK+="floppy floppy-%k", OPTIONS+="ignore_remove"
+KERNEL=="hd*[0-9]", ATTRS{media}=="floppy", ATTRS{removable}=="1", \
+ SYMLINK+="floppy-%k", OPTIONS+="ignore_remove"
+
+# put all removable devices in group "plugdev"
+KERNEL=="hd*[!0-9]", ATTR{removable}=="1", GROUP="plugdev"
+KERNEL=="hd*[0-9]", ATTRS{removable}=="1", GROUP="plugdev"
+KERNEL=="sd*[!0-9]", ATTR{removable}=="1", GROUP="plugdev"
+KERNEL=="sd*[0-9]", ATTRS{removable}=="1", GROUP="plugdev"
+
+# Many hot-pluggable devices (ZIP, Jazz, LS-120, etc...)
+# need to be in plugdev, too.
+KERNEL=="diskonkey*", GROUP="plugdev"
+KERNEL=="jaz*", GROUP="plugdev"
+KERNEL=="pocketzip*", GROUP="plugdev"
+KERNEL=="zip*", GROUP="plugdev"
+KERNEL=="ls120", GROUP="plugdev"
+KERNEL=="microdrive*", GROUP="plugdev"
+
+# CD group and permissions
+ENV{ID_CDROM}=="?*", GROUP="cdrom", MODE="0660"
+KERNEL=="pktcdvd", GROUP="cdrom", MODE="0660"
+KERNEL=="pktcdvd[0-9]*", GROUP="cdrom", MODE="0660"
+# permissions for SCSI sg devices
+SUBSYSTEMS=="scsi", KERNEL=="s[gt][0-9]*", ATTRS{type}=="5", \
+ GROUP="cdrom", MODE="0660"
+
+# Make DRI video devices usable by anyone in group "video":
+KERNEL=="card[0-9]*",GROUP:="video"
+
+# alsa devices
+SUBSYSTEM=="sound", GROUP="audio"
+
+# Make the real time clock readable by all, and writable by root:
+KERNEL=="rtc|rtc0", MODE="0644"
+
diff --git a/source/a/udev/config/rules.d/90-network.rules b/source/a/udev/config/rules.d/90-network.rules
new file mode 100644
index 000000000..03f2ddc76
--- /dev/null
+++ b/source/a/udev/config/rules.d/90-network.rules
@@ -0,0 +1,5 @@
+# This file will be overwritten in next upgrade. Please put your
+# custom rules somewhere else (90-local.rules is a good idea)
+
+SUBSYSTEM=="net", NAME=="?*", ACTION=="add", RUN+="nethelper.sh $env{INTERFACE} start"
+SUBSYSTEM=="net", NAME=="?*", ACTION=="remove", RUN+="nethelper.sh $env{INTERFACE} stop"
diff --git a/source/a/udev/config/scripts/nethelper.sh b/source/a/udev/config/scripts/nethelper.sh
new file mode 100755
index 000000000..9e1720271
--- /dev/null
+++ b/source/a/udev/config/scripts/nethelper.sh
@@ -0,0 +1,62 @@
+#!/bin/sh
+DEVNAME="$1"
+COMMAND="$2"
+
+testwrite() {
+ if touch /var/run/checkrw 2>/dev/null ; then
+ rm -rf /var/run/checkrw
+ RW=1
+ fi
+}
+
+case $DEVNAME in
+ eth*|ath*|wlan*|ra*|sta*|ctc*|lcs*|hsi*)
+ case $COMMAND in
+ 'start')
+ testwrite
+
+ if [ $RW ]; then
+ if [ -x /etc/rc.d/rc.inet1 ]; then
+ if ! /sbin/ifconfig | /bin/grep -q "^${DEVNAME} "; then
+ /etc/rc.d/rc.inet1 ${DEVNAME}_start
+ fi
+ fi
+ exit 0
+ else
+ exit 1
+ fi
+ ;;
+ 'stop')
+ if [ -x /etc/rc.d/rc.inet1 ]; then
+ if /sbin/ifconfig | /bin/grep -q "^${DEVNAME} "; then
+ /etc/rc.d/rc.inet1 ${DEVNAME}_stop
+ fi
+ fi
+ # Does dhcpcd appear to still be running on the
+ # interface? If so, try to stop it.
+ if [ -r /etc/dhcpc/dhcpcd-$DEVNAME.pid -o -r /var/run/dhcpcd-$DEVNAME.pid ]; then
+ /sbin/dhcpcd -k -d $DEVNAME
+ # Force garbage removal, if needed:
+ if [ -r /etc/dhcpc/dhcpcd-$DEVNAME.pid ]; then
+ /bin/rm -f /etc/dhcpc/dhcpcd-$DEVNAME.pid
+ elif [ -r /var/run/dhcpcd-$DEVNAME.pid ]; then
+ /bin/rm -f /var/run/dhcpcd-$DEVNAME.pid
+ fi
+ fi
+ # If the interface is now down, exit with a status of 0:
+ if /sbin/ifconfig | /bin/grep -q "^${DEVNAME} " ; then
+ exit 0
+ fi
+ ;;
+ *)
+ echo "usage $0 interface start|stop"
+ exit 1
+ ;;
+ esac
+ ;;
+ *)
+ echo "Interface $DEVNAME not supported."
+ exit 1
+ ;;
+esac
+exit 0
diff --git a/source/a/udev/config/udev.conf b/source/a/udev/config/udev.conf
new file mode 100644
index 000000000..b0421a08b
--- /dev/null
+++ b/source/a/udev/config/udev.conf
@@ -0,0 +1,14 @@
+# udev.conf
+# The main config file for udev
+#
+# This file can be used to override some of udev's default values for where it
+# looks for files, and where it places device nodes.
+
+# udev_root - where in the filesystem to place the device nodes
+udev_root="/dev/"
+
+# udev_log - The initial syslog(3) priority: "err", "info", "debug" or
+# its numerical equivalent. For runtime debugging, the daemons
+# internal state can be changed with: udevcontrol log_priority=<value>
+udev_log="err"
+
diff --git a/source/a/udev/doinst.sh b/source/a/udev/doinst.sh
new file mode 100644
index 000000000..5e737ca0c
--- /dev/null
+++ b/source/a/udev/doinst.sh
@@ -0,0 +1,39 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+# Keep same perms on rc.udev.new:
+if [ -e etc/rc.d/rc.udev ]; then
+ cp -a etc/rc.d/rc.udev etc/rc.d/rc.udev.new.incoming
+ cat etc/rc.d/rc.udev.new > etc/rc.d/rc.udev.new.incoming
+ mv etc/rc.d/rc.udev.new.incoming etc/rc.d/rc.udev.new
+fi
+
+# There's no reason for a user to edit rc.udev, so overwrite it:
+if [ -r etc/rc.d/rc.udev.new ]; then
+ mv etc/rc.d/rc.udev.new etc/rc.d/rc.udev
+fi
+
+# This should catch *all* files in /etc/modprobe.d/ and move them over to
+# have .conf extensions
+for modfile in $(ls etc/modprobe.d/ | grep -v "\.\(conf\|bak\|orig\|new\)"); do
+ if [ -e etc/modprobe.d/$modfile -a ! -e etc/modprobe.d/$modfile.conf ]; then
+ mv etc/modprobe.d/$modfile etc/modprobe.d/$modfile.conf
+ elif [ -e etc/modprobe.d/$modfile -a -e etc/modprobe.d/$modfile.conf ]; then
+ mv etc/modprobe.d/$modfile etc/modprobe.d/$modfile.bak
+ fi
+done
+
+config etc/modprobe.d/blacklist.conf.new
+config etc/modprobe.d/isapnp.conf.new
+config etc/modprobe.d/psmouse.conf.new
+config etc/modprobe.d/usb-controller.conf.new
+
diff --git a/source/a/udev/rule_generator.diff b/source/a/udev/rule_generator.diff
new file mode 100644
index 000000000..0ff218a6c
--- /dev/null
+++ b/source/a/udev/rule_generator.diff
@@ -0,0 +1,80 @@
+diff -Naur udev-114/extras/rule_generator/write_cd_rules udev-114slk/extras/rule_generator/write_cd_rules
+--- udev-114/extras/rule_generator/write_cd_rules 2007-08-05 09:08:47.000000000 -0300
++++ udev-114slk/extras/rule_generator/write_cd_rules 2007-08-22 20:17:24.000000000 -0300
+@@ -3,7 +3,8 @@
+ # This script is run if an optical drive lacks a rule for persistent naming.
+ #
+ # It adds symlinks for optical drives based on the device class determined
+-# by cdrom_id and used ID_PATH to identify the device.
++# by cdrom_id and used ID_PATH or ID_SERIAL or ID_MODEL and ID_REVISION
++# to identify the device.
+ #
+ # (C) 2006 Marco d'Itri <md@Linux.IT>
+ #
+@@ -97,18 +98,59 @@
+ choose_rules_file
+
+ link_num=$(find_next_available 'cdrom[0-9]*')
++[ "$link_num" = "" ] && link_num=0
+
+ match="ENV{ID_CDROM}==\"?*\", $RULE"
+
+ comment="$ID_MODEL ($ID_PATH)"
+-
+ write_rule "$match" "cdrom$link_num" "$comment"
+-[ "$ID_CDROM_CD_R" -o "$ID_CDROM_CD_RW" ] && \
+- write_rule "$match" "cdrw$link_num"
+-[ "$ID_CDROM_DVD" ] && \
+- write_rule "$match" "dvd$link_num"
+-[ "$ID_CDROM_DVD_R" -o "$ID_CDROM_DVD_RW" -o "$ID_CDROM_DVD_RAM" ] && \
+- write_rule "$match" "dvdrw$link_num"
++ if [ "$(find_all_rules 'SYMLINK+=' cdrom)" = "" ]; then
++ write_rule "$match" "cdrom"
++ fi
++
++ if [ "$ID_CDROM_CD_R" ]; then
++ write_rule "$match" "cdr$link_num"
++ if [ "$(find_all_rules 'SYMLINK+=' cdr)" = "" ]; then
++ write_rule "$match" "cdr"
++ fi
++
++ write_rule "$match" "cdwriter$link_num"
++ if [ "$(find_all_rules 'SYMLINK+=' cdwriter)" = "" ]; then
++ write_rule "$match" "cdwriter"
++ fi
++
++ if [ "$ID_CDROM_CD_RW" ]; then
++ write_rule "$match" "cdrw$link_num"
++ if [ "$(find_all_rules 'SYMLINK+=' cdrw)" = "" ]; then
++ write_rule "$match" "cdrw"
++ fi
++ fi
++
++ if [ "$(find_all_rules 'SYMLINK+=' writer)" = "" ]; then
++ write_rule "$match" "writer"
++ fi
++ fi
++
++ if [ "$ID_CDROM_DVD" ]; then
++ write_rule "$match" "dvd$link_num"
++ if [ "$(find_all_rules 'SYMLINK+=' dvd)" = "" ]; then
++ write_rule "$match" "dvd"
++ fi
++
++ if [ "$ID_CDROM_DVD_R" -o "$ID_CDROM_DVD_RW" -o "$ID_CDROM_DVD_RAM" ]; then
++ write_rule "$match" "dvdrw$link_num"
++ if [ "$(find_all_rules 'SYMLINK+=' dvdrw)" = "" ]; then
++ write_rule "$match" "dvdrw"
++ fi
++
++ write_rule "$match" "dvdwriter$link_num"
++ if [ "$(find_all_rules 'SYMLINK+=' dvdwriter)" = "" ]; then
++ write_rule "$match" "dvdwriter"
++ fi
++ fi
++ fi
++
++
+
+ unlock_rules_file
+
diff --git a/source/a/udev/slack-desc b/source/a/udev/slack-desc
new file mode 100644
index 000000000..c411756c8
--- /dev/null
+++ b/source/a/udev/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler-------------------------------------------------------|
+udev: udev (dynamic device directory system)
+udev:
+udev: udev provides a dynamic device directory containing only the files
+udev: for the devices which are actually present. It creates or removes
+udev: device node files usually located in the /dev directory.
+udev:
+udev: udev requires a 2.6 or newer kernel.
+udev:
+udev: Kay Sievers is the udev maintainer.
+udev:
+udev:
diff --git a/source/a/udev/udev-141.tar.bz2.sign b/source/a/udev/udev-141.tar.bz2.sign
new file mode 100644
index 000000000..a30826919
--- /dev/null
+++ b/source/a/udev/udev-141.tar.bz2.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD8DBQBJ3TgkyGugalF9Dw4RAtJCAJ4+ns9bz4ZIu+3ecfra/BWrn3euqwCeOFQZ
+6A7UqbHlTlD48sOk249ZATA=
+=AY1A
+-----END PGP SIGNATURE-----
diff --git a/source/a/udev/udev.SlackBuild b/source/a/udev/udev.SlackBuild
new file mode 100755
index 000000000..0c6327486
--- /dev/null
+++ b/source/a/udev/udev.SlackBuild
@@ -0,0 +1,140 @@
+#!/bin/sh
+
+# Copyright 2006, 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+VERSION=${VERSION:-141}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-3}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+if [ "$ARCH" = "x86_64" ]; then
+ LIBDIRSUFFIX="64"
+else
+ LIBDIRSUFFIX=""
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-udev
+
+rm -rf $PKG
+mkdir -p $TMP $PKG/lib/udev
+cd $TMP
+rm -rf udev-$VERSION
+tar xvf $CWD/udev-$VERSION.tar.bz2 || exit 1
+cd udev-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+zcat $CWD/rule_generator.diff.gz | patch -p1 --verbose || exit 1
+
+./configure \
+ --prefix=/usr \
+ --exec-prefix=/ \
+ --sysconfdir=/etc \
+ --mandir=/usr/man \
+ --with-libdir-name=lib${LIBDIRSUFFIX} \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null || true
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+)
+
+# scsi_id and vol_id are needed by multipath
+( cd $PKG/sbin
+ ln -s ../lib/udev/scsi_id scsi_id
+ ln -s ../lib/udev/vol_id vol_id
+)
+
+mkdir -p \
+ $PKG/etc/modprobe.d \
+ $PKG/etc/rc.d \
+ $PKG/etc/udev/rules.d \
+ $PKG/lib/firmware
+
+# Yes, these will clobber existing config files.
+cp -a $CWD/config/udev.conf $PKG/etc/udev/udev.conf
+# Copy Slackware custom rules
+cp -a $CWD/config/rules.d/* $PKG/lib/udev/rules.d/
+# Copy some files from upstream
+cp -a rules/packages/40-alsa.rules $PKG/lib/udev/rules.d/
+cp -a rules/packages/40-isdn.rules $PKG/lib/udev/rules.d/
+cp -a rules/packages/40-zaptel.rules $PKG/lib/udev/rules.d/
+cp -a rules/packages/40-infiniband.rules $PKG/lib/udev/rules.d/
+#cp -a rules/packages/40-pilot-links.rules $PKG/etc/udev/rules.d/
+#cp -a rules/packages/64-md-raid.rules $PKG/etc/udev/rules.d/
+# Now the init script and module-init-tools stuff
+cp -a $CWD/config/rc.d/rc.udev.new $PKG/etc/rc.d/rc.udev.new
+cp -a $CWD/config/modprobe.d/* $PKG/etc/modprobe.d
+
+chown -R root:root $PKG/etc
+find $PKG/etc -type f -exec chmod 644 {} \;
+find $PKG/etc -type d -exec chmod 755 {} \;
+chmod 755 $PKG/etc/rc.d/rc.udev.new
+
+# Add extra device nodes to the package that udev doesn't make:
+tar xvf $CWD/udev-fixed-devices.tar.gz -C $PKG
+
+# Add various helper scripts:
+for file in $CWD/config/scripts/* ; do
+ cp -a $file $PKG/lib/udev/
+done
+chown -R root:root $PKG/lib/udev
+chmod 755 $PKG/lib/udev/*
+
+mkdir -p $PKG/usr/doc/udev-$VERSION
+cp -a \
+ COPYING* FAQ README* TODO RELEASE-NOTES docs \
+ $PKG/usr/doc/udev-$VERSION
+
+# Compress and fix manpage symlinks:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+mkdir -p $PKG/install
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c y $TMP/udev-$VERSION-$ARCH-$BUILD.txz