[163a6701] | 1 | #!/bin/sh
|
---|
| 2 | ########################################################################
|
---|
| 3 | # Begin $rc_base/init.d/udev
|
---|
| 4 | #
|
---|
| 5 | # Description : Udev cold-plugging script
|
---|
| 6 | #
|
---|
| 7 | # Authors : Zack Winkles
|
---|
| 8 | #
|
---|
| 9 | # Version : 00.01
|
---|
| 10 | #
|
---|
| 11 | # Notes :
|
---|
| 12 | #
|
---|
| 13 | ########################################################################
|
---|
| 14 |
|
---|
| 15 | . /etc/sysconfig/rc
|
---|
| 16 | . ${rc_functions}
|
---|
| 17 |
|
---|
| 18 | # Create some things that sysfs does not, and should not export for us. Feel
|
---|
| 19 | # free to add devices to this list.
|
---|
| 20 | make_extra_nodes() {
|
---|
| 21 | ln -s /proc/self/fd /dev/fd
|
---|
| 22 | ln -s /proc/self/fd/0 /dev/stdin
|
---|
| 23 | ln -s /proc/self/fd/1 /dev/stdout
|
---|
| 24 | ln -s /proc/self/fd/2 /dev/stderr
|
---|
| 25 | ln -s /proc/kcore /dev/core
|
---|
| 26 | mkdir /dev/pts
|
---|
| 27 | mkdir /dev/shm
|
---|
| 28 | }
|
---|
| 29 |
|
---|
| 30 | case "${1}" in
|
---|
| 31 | start)
|
---|
| 32 | boot_mesg "Populating /dev with device nodes..."
|
---|
| 33 | if ! grep -q '[[:space:]]sysfs' /proc/mounts; then
|
---|
| 34 | boot_log " The SysFS filesystem could not be found. Unable to continue."
|
---|
| 35 | echo_failure
|
---|
| 36 | boot_mesg -n "FAILURE:\n\nUnable to create" ${FAILURE}
|
---|
| 37 | boot_mesg -n " devices without a SysFS filesystem"
|
---|
| 38 | boot_mesg -n "\n\nAfter you press Enter, this system"
|
---|
| 39 | boot_mesg -n " will be halted and powered off."
|
---|
| 40 | boot_mesg -n "\n\nPress Enter to continue..." ${INFO}
|
---|
| 41 | boot_mesg "" ${NORMAL}
|
---|
| 42 | read ENTER
|
---|
| 43 | /etc/rc.d/init.d/halt stop
|
---|
| 44 | fi
|
---|
| 45 |
|
---|
| 46 | # Mount a temporary file system over /dev, so that any devices
|
---|
| 47 | # made or removed during this boot don't affect the next one.
|
---|
| 48 | # The reason we don't write to mtab is because we don't ever
|
---|
| 49 | # want /dev to be unavailable (such as by `umount -a').
|
---|
| 50 | mount -n -t tmpfs tmpfs /dev -o mode=755
|
---|
| 51 | if [ ${?} != 0 ]; then
|
---|
| 52 | boot_log "Unable to mount a tmpfs onto /dev."
|
---|
| 53 | echo_failure
|
---|
| 54 | boot_mesg -n "FAILURE:\n\nCannot mount a tmpfs" ${FAILURE}
|
---|
| 55 | boot_mesg -n " onto /dev, this system will be halted."
|
---|
| 56 | boot_mesg -n "\n\nAfter you press Enter, this system"
|
---|
| 57 | boot_mesg -n " will be halted and powered off."
|
---|
| 58 | boot_mesg -n "\n\nPress Enter to continue..." ${INFO}
|
---|
| 59 | boot_mesg "" ${NORMAL}
|
---|
| 60 | read ENTER
|
---|
| 61 | /etc/rc.d/init.d/halt stop
|
---|
| 62 | fi
|
---|
| 63 |
|
---|
| 64 | # Assign udevsend to get hotplug events. udevsend can manage the whole
|
---|
| 65 | # hotplug handling by taking over the kernel spawned event process
|
---|
| 66 | echo /sbin/udevsend > /proc/sys/kernel/hotplug
|
---|
| 67 |
|
---|
| 68 | # Populate /dev with all the devices that are already available,
|
---|
| 69 | # and save it's status so we can report failures.
|
---|
| 70 | udevstart || failed=1
|
---|
| 71 |
|
---|
| 72 | # Now, create some required files/directories/devices that sysfs
|
---|
| 73 | # doesn't export for us.
|
---|
| 74 | make_extra_nodes
|
---|
| 75 |
|
---|
| 76 | # When reporting the status, base it on the success or failure
|
---|
| 77 | # of the `udevstart' command, since that's the most important.
|
---|
| 78 | (exit ${failed})
|
---|
| 79 | evaluate_retval
|
---|
| 80 | ;;
|
---|
| 81 |
|
---|
| 82 | *)
|
---|
| 83 | echo "Usage ${0} {start}"
|
---|
| 84 | exit 1
|
---|
| 85 | ;;
|
---|
| 86 | esac
|
---|
| 87 |
|
---|
| 88 | # End $rc_base/init.d/udev
|
---|