kernel - don't print info about scheduled process if pagefault happened in kernel.
[minix.git] / etc / rc
blob62411feca8a4c4ca54e281089eb8484bd049af30
1 # /etc/rc - System startup script run by init before going multiuser.
3 exec >/dev/log
4 exec 2>/dev/log
5 exec </dev/null
7 umask 022
8 TERM="${TERM-minix}"
9 PATH=/usr/local/bin:/bin:/usr/bin:/usr/sbin
10 RC_TZ=/etc/rc.timezone
11 export TERM PATH
13 usage()
15     echo >&2 "Usage: $0 [-saf] start|stop|down"
16     exec intr sh
19 upopt()
21     opt=$1
22     shift
23     service=$1
24     shift
26     # Function to dynamically start a system service
27     echo -n " $service"
28     service $opt up /sbin/$service "$@"
31 while getopts 'saf' opt
33     case $opt in
34     s)  sflag=t ;;      # Single user
35     a)  aflag=t ;;      # Ask for /usr
36     f)  fflag=t ;;      # Force a full file system check
37     *)  usage
38     esac
39 done
40 shift `expr $OPTIND - 1`
42 case "$#:$1" in
43 1:start|1:stop|1:down)
44     action=$1
45     ;;
46 *)  usage
47 esac
49 case $action in
50 start)
51     echo -n "Multiuser startup in progress ...:"
53     # National keyboard?
54     test -f /etc/keymap && loadkeys /etc/keymap
56     # options for fsck. default is -r, which prompts the user for repairs.
57     fsckopts="`sysenv fsckopts`"
58     if [ ! "$fsckopts" ]
59     then        fsckopts=-r
60     fi
62     if [ "`sysenv debug_fkeys`" != 0 ]
63     then
64         upopt -n is -period 5HZ
65     fi
66     echo .
68     # Set timezone.
69     export TZ=GMT0
70     if [ -f "$RC_TZ" ]
71     then . "$RC_TZ"
72     fi
74     # Try to read the hardware real-time clock, otherwise do it manually.
75     readclock || intr date -q
77     # Initialize files.
78     printroot >/etc/mtab                # /etc/mtab keeps track of mounts
79     >/etc/utmp                          # /etc/utmp keeps track of logins
81     # /etc/fstab lists the root, tmp and usr devices.
82     . /etc/fstab
84     # Unmount now defunct ramdisk
85     umount /dev/imgrd > /dev/null || echo "Failed to unmount boot ramdisk"
87     # Use MFS binary only from kernel image?
88     if [ "`sysenv bin_img`" = 1 ]
89     then
90         bin_img="-i "
91     fi
93     # Are we booting from CD?
94     bootcd="`/bin/sysenv bootcd`"
96     # If booting from CD, /usr has to be mounted readonly.
97     # Also, $usr won't be specified correctly in the
98     # fstab (the CD could be anywhere), so we decide
99     # where it is based on sysenv (set by FS when probing for CD).
100     if [ "$bootcd" = 1 ]
101     then        
102                 #imagedev="`/bin/sysenv cdproberoot`"
103                 #usrdev="`expr $imagedev + 1`"
104                 usr_roflag="-r"
105                 usr="$cddev"p2
106                 echo "Setting /usr on cd is $usr"
107     fi
110     # Mount the /usr partition unless this is a single floppy Minix.
111     if [ ! -d /usr/bin ]
112     then
113         if [ "$aflag" -o "$usr" = unknown ]
114         then
115             # We need to ask what the /usr du jour is.
116             intr sh -c '
117                 echo -n "Finish the name of device to mount as /usr: /dev/"
118                 read usr
119                 echo "usr=/dev/$usr" >/tmp/usr'
120             . /tmp/usr
121         fi
123         mount $bin_img $usr_roflag $usr /usr || {
124             echo "\
125 Please try to mount something else as /usr, then hit CTRL-D to continue startup.
126 Mount $usr /usr failed -- Single user."
127             intr sh
128         }
129         rm -f /tmp/usr
130     fi
132     # Check if the system crashed.
133     if shutdown -C
134     then
135         echo
136         echo "The system was not properly shut down.  Checking file systems."
137         fflag=t
138     fi
140     if [ "$fflag" ]
141     then
142         umount $usr
143         echo "fsck / - $root"
144         intr fsck $fsckopts $root
145         echo "fsck /usr - $usr"
146         intr fsck $fsckopts $usr
147         if [ ! -z "$home" ]
148         then    echo "fsck /home - $home"
149                 intr fsck $fsckopts $home
150         fi
151         mount $bin_img $usr /usr
152     fi
154     if [ ! -z "$home" ]
155     then mount $bin_img $home /home || echo "WARNING: couldn't mount $home on /home"
156     fi
158     # This file is necessary for above 'shutdown -C' check.
159     # (Silence stderr in case of running from cd.)
160     touch /usr/adm/wtmp 2>/dev/null
162     if [ "$sflag" ]
163     then
164         echo "Single user."
165         intr sh
166     fi
168     case "`printroot -r`":$bootcd in
169     /dev/ram:)
170         # Remove boot-only things to make space,
171         # unless booting from CD, in which case we need them.
172         rm -rf /boot
173         # put the compiler on ram
174         cp /usr/lib/em* /usr/lib/cpp* /lib
175     esac
177     # Things should be alright now.
178     ;;
179 down|stop)
180     sync
181     # Tell RS server we're going down.
182     service shutdown
183     ;;
184 esac
186 # Further initialization.
187 test -f /usr/etc/rc && sh /usr/etc/rc $action
188 test -f /usr/local/etc/rc && sh /usr/local/etc/rc $action
190 # Any messages?
191 test "$action" = start -a -f /etc/issue && cat /etc/issue
193 exit 0