Index: start_udev =================================================================== --- start_udev (revision 999) +++ start_udev (working copy) @@ -1,170 +1,44 @@ -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 +# +# /sbin/udev_start: Create initial device nodes and launch udev +# -# modified for crux 12.20.2005 (jaeger) +# Some video drivers require exec access in /dev +mount -n -t tmpfs udev /dev -o exec,nosuid,mode=0755 -udev_version() { - local version=0 +# Copy over persistant nodes +cp -pru /lib/udev/devices/* /dev - if [[ -x /sbin/udev ]] ; then - version=$(/sbin/udev -V) - # We need it without a leading '0', else bash do the wrong thing - version=${version##0} - # Older udevs will print nothing - [[ -z ${version} ]] && version=0 - fi +# Not provided by sysfs but needed +ln -snf /proc/self/fd /dev/fd +ln -snf fd/0 /dev/stdin +ln -snf fd/1 /dev/stdout +ln -snf fd/2 /dev/stderr - echo "${version}" -} +if [ -e /proc/kcore ]; then + ln -snf /proc/kcore /dev/core +fi -# This works for 2.6.15 kernels or greater -trigger_events() { - list="" - # if you want real coldplug (with all modules being loaded for all - # devices in the system), uncomment out the next line. - #list="$list $(echo /sys/bus/*/devices/*/uevent)" - list="$list $(echo /sys/class/*/*/uevent)" - list="$list $(echo /sys/block/*/uevent /sys/block/*/*/uevent)" - for i in $list; do - case "$i" in - */device/uevent) - # skip followed device symlinks - continue - ;; - */class/mem/*|*/class/tty/*) - first="$first $i" - ;; - */block/md*) - last="$last $i" - ;; - */*) - default="$default $i" - ;; - esac - done +# Create problematic directories +mkdir /dev/{pts,shm} - # trigger the sorted events - for i in $first $default $last; do - echo "add" > "$i" - done -} +# Setup hotplugging +echo "/sbin/udevsend" > /proc/sys/kernel/hotplug -populate_udev() { - # populate /dev with devices already found by the kernel - #if [ "$(get_KV)" -gt "$(KV_to_int '2.6.14')" ] ; then - #ebegin "Populating /dev with existing devices through uevents" - #trigger_events - #eend 0 - #else - echo "Populating /dev with existing devices with udevstart..." - /sbin/udevstart - #fi +# Start udevd +/sbin/udevd --daemon - # loop until everything is finished - # there's gotta be a better way... - echo "Letting udev process events..." - loop=0 - while test -d /dev/.udev/queue; do - sleep 0.1; - test "$loop" -gt 300 && break - loop=$(($loop + 1)) - done - #einfo "loop = $loop" +# Probe for devices and create nodes +/sbin/udevstart - return 0 -} +# Create nodes that udev can't +if [ -x /sbin/dmsetup ]; then + /sbin/dmsetup mknodes &> /dev/null +fi -seed_dev() { - # Seed /dev with some things that we know we need - echo "Seeding /dev with needed nodes..." +if [ -x /sbin/lvm ]; then + /sbin/lvm vgscan -P --mknodes --ignorelockingfailure &> /dev/null +fi - # copy over any persistant things - cp --preserve=all --recursive --update /lib/udev/devices/* /dev - - # Not provided by sysfs but needed - ln -snf /proc/self/fd /dev/fd - ln -snf fd/0 /dev/stdin - ln -snf fd/1 /dev/stdout - ln -snf fd/2 /dev/stderr - [[ -e /proc/kcore ]] && ln -snf /proc/kcore /dev/core - - # Create problematic directories - mkdir -p /dev/{pts,shm} -} - - -main() { - # Setup temporary storage for /dev - #echo "Mounting /dev for udev" - #if [[ ${RC_USE_FSTAB} == "yes" ]] ; then - #mntcmd=$(get_mount_fstab /dev) - #else - #unset mntcmd - #fi - #if [[ -n ${mntcmd} ]] ; then - #try mount -n ${mntcmd} - #else - #if egrep -qs tmpfs /proc/filesystems ; then - mntcmd="tmpfs" - #else - #mntcmd="ramfs" - #fi - # many video drivers require exec access in /dev #92921 - mount -n -t ${mntcmd} udev /dev -o exec,nosuid,mode=0755 - #fi - #eend $? - - # Selinux lovin; /selinux should be mounted by selinux-patched init - #if [[ -x /sbin/restorecon && -c /selinux/null ]] ; then - #restorecon /dev &> /selinux/null - #fi - - # Actually get udev rolling - #if [[ ${RC_DEVICE_TARBALL} == "yes" && \ - #-s /lib/udev-state/devices.tar.bz2 ]] ; then - #ebegin "Populating /dev with saved device nodes" - #try tar -jxpf /lib/udev-state/devices.tar.bz2 -C /dev - #eend $? - #fi - - seed_dev - - # Setup hotplugging (if possible) - echo -n "Setting up hotplug agent... " - if [[ -e /proc/sys/kernel/hotplug ]] ; then - #if [ "$(get_KV)" -gt "$(KV_to_int '2.6.14')" ] ; then - #einfo " Using netlink for hotplug events..." - #echo "" > /proc/sys/kernel/hotplug - if [[ $(udev_version) -ge "48" ]] ; then - echo "/sbin/udevsend" - echo "/sbin/udevsend" > /proc/sys/kernel/hotplug - elif [[ -x /sbin/hotplug ]] ; then - echo "/sbin/hotplug" - else - echo "/sbin/udev" - echo "/sbin/udev" > /proc/sys/kernel/hotplug - fi - fi - #eend 0 - - echo "Starting udevd..." - /sbin/udevd --daemon - #eend $? - - populate_udev - - # Create nodes that udev can't - echo "Finalizing udev configuration..." - [[ -x /sbin/dmsetup ]] && /sbin/dmsetup mknodes &>/dev/null - [[ -x /sbin/lvm ]] && \ - /sbin/lvm vgscan -P --mknodes --ignorelockingfailure &>/dev/null - [[ -x /sbin/evms_activate ]] && /sbin/evms_activate -q &>/dev/null - #eend 0 - - # Same thing as /dev/.devfsd - touch /dev/.udev -} - -main - -# vim:ts=4 +if [ -x /sbin/evms_activate ]; then + /sbin/evms_activate -q &> /dev/null +fi Index: .md5sum =================================================================== --- .md5sum (revision 999) +++ .md5sum (working copy) @@ -1,3 +1,3 @@ -a7d745a3f3b8e222b6957aefec1cdd2f start_udev +3f993aca3f9833c31a64b9f9ebc8e220 start_udev 8659e14a4f376b33134c72df180bfbbe udev-087.tar.bz2 40c08f72053eae0035f9c3da9418fc18 udev.rules