increase root FS size to 128MB
[minix3.git] / etc / rc
blob7ce6dbc4a87a00bc3d98102dcc20154c088f0217
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
9 # Same settings as in the default /etc/profile. We do not source this file
10 # as the system administrator may decide to change those values for his users.
11 RC_TZ=/etc/rc.timezone
12 PATH=/usr/local/sbin:/usr/pkg/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/pkg/bin:/usr/bin:/bin
14 # Set TERM to minix if not present.
15 TERM="${TERM-minix}"
17 export TERM PATH
19 # Local variables
20 ARCH="`sysenv arch`"
22 usage()
24     echo >&2 "Usage: $0 [-saf] autoboot|start|stop|down"
25     exec intr sh
28 up()
30     # Function to dynamically start a system service
31     opt=""
32     prefix=$(expr "$1 " : '\(-\)')
33     if [ "$prefix" = "-" ];
34     then
35          opt=$1
36          shift
37     fi
38     service=$1
39     shift
41     service $opt up /service/$service "$@"
44 edit()
46     # Function to dynamically edit system service settings
47     opt=""
48     prefix=$(expr "$1 " : '\(-\)')
49     if [ "$prefix" = "-" ];
50     then
51          opt=$1
52          shift
53     fi
54     service=$1
55     shift
57     # Assume binaries are always in /service or /usr/pkg/service
58     binlocation=/service/$service
59     if [ ! -x $binlocation ]
60     then        binlocation=/usr/pkg/service/$service
61     fi
63     # Mostly to find init...
64     if [ ! -x $binlocation ]
65     then        binlocation=/sbin/$service
66     fi
67     service $opt edit $binlocation -label $service "$@" 
70 while getopts 'saf' opt
72     case $opt in
73     s)  sflag=t ;;      # Single user
74     a)  aflag=t ;;      # Ask for /usr
75     f)  fflag=-f ;;     # Force a full file system check
76     *)  usage
77     esac
78 done
79 shift `expr $OPTIND - 1`
81 case "$#:$1" in
82 1:start|1:stop|1:down|1:autoboot)
83     action=$1
84     ;;
85 *)  usage
86 esac
88 case $action in
89 autoboot|start)
91     # National keyboard?
92     test -f /etc/keymap && loadkeys /etc/keymap
94     # options for fsck. default is -r, which prompts the user for repairs.
95     optname=fsckopts
96     fsckopts=-p
97     if sysenv $optname >/dev/null
98     then       fsckopts="`sysenv $optname`"
99     fi
101     if [ "`sysenv debug_fkeys`" != 0 ]
102     then
103         up -n is -period 5HZ
104     fi
106     # Set timezone.
107     export TZ=GMT0
108     if [ -f "$RC_TZ" ]
109     then . "$RC_TZ"
110     fi
112     # Start real time clock driver & set system time, otherwise default date.
113     up readclock.drv
114     readclock -q || date 201301010000
116     # We are not shutting down.
117     rm -f /etc/nologin
119     # Initialize files.
120     >/var/run/utmp                              # /etc/utmp keeps track of logins
121     >/var/run/utmpx                             # /etc/utmpx keeps track of logins
123     # Use MFS binary only from kernel image?
124     if [ "`sysenv bin_img`" = 1 ]
125     then
126         bin_img="-i "
127     fi
129     # Are we booting from CD?
130     bootcd="`/bin/sysenv bootcd`"
132     # If booting from CD, mounting is a special case.
133     # We know what to do - only /usr is mounted and it's readonly.
134     if [ "$bootcd" = 1 ]
135     then        usrdev="$cddev"p2
136                 echo "/usr on cd is $usrdev"
137                 mount -r $usrdev /usr
138     else        
139     # If we're not booting from CD, fsck + mount using /etc/fstab.
140                 fsck -x / $fflag $fsckopts
141                 mount -a
142     fi
144     # Unmount and free now defunct ramdisk
145     umount /dev/imgrd > /dev/null || echo "Failed to unmount boot ramdisk"
146     ramdisk 0 /dev/imgrd || echo "Failed to free boot ramdisk"
148     # Edit settings for boot system services
149     if [ "`sysenv skip_boot_config`" != 1 ]
150     then
151         edit rs
152         edit vm
153         edit pm
154         edit sched
155         edit vfs
156         edit ds
157         edit tty
158         edit memory
159         edit pfs
160         edit init
161     fi
163     if [ "$sflag" ]
164     then
165         echo "Single user. Press ^D to resume multiuser startup."
166         intr sh
167         echo
168     fi
170     echo "Multiuser startup in progress ..."
172     case "`printroot -r`":$bootcd in
173     /dev/ram:)
174         # Remove boot-only things to make space,
175         # unless booting from CD, in which case we need them.
176         rm -rf /boot
177         # put the compiler on ram
178         cp /usr/lib/em* /usr/lib/cpp* /lib
179     esac
181     echo -n "Starting hotplugging infrastructure... "
182     rm -f /var/run/devmand.pid
183     devmand -d /etc/devmand -d /usr/pkg/etc/devmand &
184     echo "done."
186     # Things should be alright now.
187     ;;
188 down|stop)
189     sync
190     if [ -f /var/run/devmand.pid ]
191     then
192         kill -INT `cat /var/run/devmand.pid`
193         # without this delay the following will 
194         # be printed in the console
195         # RS: devman not running?
196         sleep 1
197     fi
198     #
199     # usbd needs to be stopped exactly 
200     # at this stage(before stopping devman
201     # and after stopping the services
202     # stated by devmand)
203     if [ -x /usr/pkg/etc/rc.d/usbd ]
204     then 
205         /usr/pkg/etc/rc.d/usbd stop
206     fi
208     if [ -x /service/usbd ]
209     then
210         service down usbd
211     fi
213     # Tell RS server we're going down.
214     service shutdown
215     ;;
216 esac
218 # Further initialization.
219 test -f /usr/etc/rc && sh /usr/etc/rc $action
220 test -f /usr/local/etc/rc && sh /usr/local/etc/rc $action
222 # Any messages?
223 if [ "$action" = start -o "$action" = autoboot ]
224 then    if [ -f /etc/issue ]
225         then    cat /etc/issue
226         fi
229 exit 0