diff options
author | Patrick J Volkerding <volkerdi@slackware.com> | 2016-06-30 20:26:57 +0000 |
---|---|---|
committer | Eric Hameleers <alien@slackware.com> | 2018-05-31 23:31:18 +0200 |
commit | d31c50870d0bee042ce660e445c9294a59a3a65b (patch) | |
tree | 6bfc0de3c95267b401b620c2c67859557dc60f97 /source/a/eudev/config/rc.d/rc.udev.new | |
parent | 76fc4757ac91ac7947a01fb7b53dddf9a78a01d1 (diff) | |
download | current-d31c50870d0bee042ce660e445c9294a59a3a65b.tar.gz current-d31c50870d0bee042ce660e445c9294a59a3a65b.tar.xz |
Slackware 14.2slackware-14.2
Thu Jun 30 20:26:57 UTC 2016
Slackware 14.2 x86_64 stable is released!
The long development cycle (the Linux community has lately been living in
"interesting times", as they say) is finally behind us, and we're proud to
announce the release of Slackware 14.2. The new release brings many updates
and modern tools, has switched from udev to eudev (no systemd), and adds
well over a hundred new packages to the system. Thanks to the team, the
upstream developers, the dedicated Slackware community, and everyone else
who pitched in to help make this release a reality.
The ISOs are off to be replicated, a 6 CD-ROM 32-bit set and a dual-sided
32-bit/64-bit x86/x86_64 DVD. Please consider supporting the Slackware
project by picking up a copy from store.slackware.com. We're taking
pre-orders now, and offer a discount if you sign up for a subscription.
Have fun! :-)
Diffstat (limited to 'source/a/eudev/config/rc.d/rc.udev.new')
-rwxr-xr-x | source/a/eudev/config/rc.d/rc.udev.new | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/source/a/eudev/config/rc.d/rc.udev.new b/source/a/eudev/config/rc.d/rc.udev.new new file mode 100755 index 000000000..aaa1eb155 --- /dev/null +++ b/source/a/eudev/config/rc.d/rc.udev.new @@ -0,0 +1,185 @@ +#!/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" + +check_mounted() { + grep -E -q "^[^[:space:]]+ $1 $2" /proc/mounts + return $? +} + +mount_devpts() { + if ! check_mounted /dev/pts devpts ; then + mkdir /dev/pts 2> /dev/null + mount -n -o mode=0620,gid=5 -t devpts devpts /dev/pts + fi +} + +mount_devshm() { + if ! check_mounted /dev/shm tmpfs ; then + mkdir /dev/shm 2> /dev/null + mount /dev/shm + fi +} + +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 "32" ]; then + echo "Sorry, but you need a 2.6.32+ kernel to use this 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 0644 /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 grep -qw devtmpfs /proc/filesystems ; then + if ! check_mounted /dev devtmpfs ; then + # umount shm if needed + check_mounted /dev/shm tmpfs && umount -l /dev/shm + + # Umount pts if needed, we will remount it later: + check_mounted /dev/pts devpts && umount -l /dev/pts + + # Mount tmpfs on /dev: + mount -n -t devtmpfs devtmpfs /dev + fi + else + # Mount tmpfs on /dev: + if ! check_mounted /dev tmpfs ; then + # umount shm if needed + check_mounted /dev/shm tmpfs && umount -l /dev/shm + + # Umount pts if needed, we will remount it later: + check_mounted /dev/pts devpts && umount -l /dev/pts + + # Mount tmpfs on /dev: + # the -n is because we don't want /dev umounted when + # someone (rc.[06]) calls umount -a + mount -n -o mode=0755 -t tmpfs tmpfs /dev + fi + fi + + # Mount devpts + mount_devpts + mount_devshm + + if ! /sbin/pidof udevd 1>/dev/null 2>/dev/null; then # start udevd + echo "Creating static nodes in /dev." + kmod static-nodes -f tmpfiles --output /run/static-nodes + grep "^d\ " /run/static-nodes | while read line ; do + mkdir -p -m $(echo $line | cut -f 3 -d ' ') $(echo $line | cut -f 2 -d ' ') + done + grep -v "^d\ " /run/static-nodes | while read line ; do + mknod -m $(echo $line | cut -f 3 -d ' ') \ + $(echo $line | cut -f 2 -d ' ') \ + $(echo $line | cut -b1 ) \ + $(echo $line | cut -f 7 -d ' ' | cut -f 1 -d :) \ + $(echo $line | cut -f 7 -d ' ' | cut -f 2 -d :) 2> /dev/null + done + rm -f /run/static-nodes + # Add any system defined additional device nodes: + cp --preserve=all --recursive --update /lib/udev/devices/* /dev 2> /dev/null + # Add any locally defined additional device nodes: + cp --preserve=all --recursive --update /etc/udev/devices/* /dev 2> /dev/null + echo "Starting udevd: /sbin/udevd --daemon" + /sbin/udevd --daemon + # Since udev is just now being started we want to use add events: + echo "Triggering udev events: /sbin/udevadm trigger --action=add" + # Call udevtrigger and udevsettle to do the device configuration: + /sbin/udevadm trigger --type=subsystems --action=add + /sbin/udevadm trigger --type=devices --action=add + else # trigger changes for already running udevd + # If the persistent network rules file does not exist, trigger an add event: + if [ ! -r /etc/udev/rules.d/70-persistent-net.rules ]; then + # Test that we can actually write to the directory first: + if touch /etc/udev/rules.d/testfile 2> /dev/null ; then + rm -f /etc/udev/rules.d/testfile + # This should add persistent net rules: + echo "Triggering udev to write persistent rules to /etc/udev/rules.d/" + /sbin/udevadm trigger --type=devices --action=add + sleep 3 + # Create the files if they don't exist at this point. + # If a machine does not have a network device or an optical + # device, we don't want to waste time trying to generate + # rules at every boot. + # To force another attempt, delete the file(s). + touch /etc/udev/rules.d/70-persistent-net.rules + fi + fi + # Update the hardware database index (/etc/udev/hwdb.bin), if possible: + if touch /etc/udev/testfile 2> /dev/null ; then + rm -f /etc/udev/testfile + echo "Updating hardware database index: /sbin/udevadm hwdb --update" + /sbin/udevadm hwdb --update + fi + # Since udevd is running, most of the time we only need change events: + echo "Triggering udev events: /sbin/udevadm trigger --action=change" + /sbin/udevadm trigger --type=subsystems --action=change + /sbin/udevadm trigger --type=devices --action=change + fi + /sbin/udevadm settle --timeout=120 + ;; + stop) + echo "Stopping udevd is STRONGLY discouraged and not supported." + echo "If you are sure you want to do this, use 'force-stop' instead." + ;; + force-stop) + echo "Stopping udevd" + udevadm control --exit + killall udevd 2>/dev/null + ;; + restart) + echo "Restarting udevd is STRONGLY discouraged and not supported." + echo "If you are sure you want to do this, use 'force-restart' instead." + ;; + force-restart) + echo "Restarting udevd" + udevadm control --exit + sleep 3 + udevd --daemon + ;; + reload) + echo "Reloading udev rules" + udevadm control --reload + ;; + force-reload) + echo "Updating all available device nodes in /dev" + udevadm control --reload + rm -rf /dev/.udev /dev/disk + cp --preserve=all --recursive --update /lib/udev/devices/* /dev 2> /dev/null + ;; + + *) + echo "Usage: $0 {start|stop|restart|reload|force-reload}" + exit 1 + ;; +esac |