source: bootscripts/lfs/init.d/udev @ 163a6701

clfs-1.2clfs-2.1clfs-3.0.0-systemdclfs-3.0.0-sysvinitsystemdsysvinit
Last change on this file since 163a6701 was 163a6701, checked in by Jim Gifford <clfs@…>, 18 years ago

r720@server (orig r718): jim | 2005-11-18 08:06:26 -0800
Added bootscripts to cross-lfs svn

  • Property mode set to 100644
File size: 2.6 KB
Line 
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.
20make_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
30case "${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                ;;
86esac
87
88# End $rc_base/init.d/udev
Note: See TracBrowser for help on using the repository browser.