3 # /etc/rc.d/rc.sysinit - run once at boot time
4 # $Id: rc.sysinit,v 1.51 2000/03/22 17:24:28 wiget Exp $
6 # Taken in part from Miquel van Smoorenburg's bcheckrc.
7 # Changes: Arkadiusz Mi¶kiewicz <misiek@pld.org.pl>
11 PATH=/bin:/sbin:/usr/bin:/usr/sbin
15 if [ -f /etc/sysconfig/i18n ]; then
17 [ -n "$LANG" ] && export LANG || unset LANG
18 [ -n "$LC_CTYPE" ] && export LC_CTYPE || unset LC_CTYPE
19 [ -n "$LC_COLLATE" ] && export LC_COLLATE || unset LC_COLLATE
20 [ -n "$LC_MESSAGES" ] && export LC_MESSAGES || unset LC_MESSAGES
21 [ -n "$LC_NUMERIC" ] && export LC_NUMERIC || unset LC_NUMERIC
22 [ -n "$LC_MONETARY" ] && export LC_MONETARY || unset LC_MONETARY
23 [ -n "$LC_TIME" ] && export LC_TIME || unset LC_TIME
24 [ -n "$LC_ALL" ] && export LC_ALL || unset LC_ALL
25 [ -n "$LANGUAGE" ] && export LANGUAGE || unset LANGUAGE
26 [ -n "$LINGUAS" ] && export LINGUAS || unset LINGUAS
30 . /etc/rc.d/init.d/functions
32 # Read network config data.
33 if [ -f /etc/sysconfig/network ]; then
34 . /etc/sysconfig/network
40 # Read system config data.
41 if [ -f /etc/sysconfig/system ]; then
42 . /etc/sysconfig/system
44 RUN_SULOGIN_ON_ERR=yes
55 # Print welcome message
56 echo -e "\t\t\t`termput setaf 6`Powered by `termput setaf 2`PLD GNU/Linux`termput setaf 7`"
57 if [ "$PROMPT" != "no" ]; then
58 echo -en "\t\t`nls "Press"` '`termput setaf 1`I`termput setaf 7`' `nls "to enter interactive startup."`"
64 if [ -x /sbin/devfsd -a -f /etc/devfsd.conf ]; then
65 if [ "$RUN_DEVFSD" = "yes" ]; then
66 run_cmd "Starting Device Filesystem Daemon" /sbin/devfsd /dev
70 # Set console loglevel
71 /bin/dmesg -n $CONSOLE_LOGLEVEL
74 if [ -f /proc/sys/kernel/sysrq -a "$MAGIC_SYSRQ" = "no" ]; then
75 echo "0" > /proc/sys/kernel/sysrq
76 run_cmd "Turning off Magic SysRq key" /bin/true
80 if [ -f /proc/sys/kernel/stop-a -a "$STOP_A" = "no" ]; then
81 echo "0" > /proc/sys/kernel/stop-a
82 run_cmd "Turning off Stop-A/Break-A" /bin/true
85 # we need /proc mounted before starting fsck
86 mount -n -t proc /proc /proc
89 run_cmd "`nls "Activating swap partitions"`" swapon -a
92 run_cmd "`nls "Host:"` ${HOSTNAME}" hostname ${HOSTNAME}
94 # Set the NIS domain name
95 if [ -n "$NISDOMAIN" ]; then
96 run_cmd "`nls "NIS Domain:"` ${NISDOMAIN}" domainname $NISDOMAIN
101 if [ -f /fsckoptions ]; then
102 fsckoptions=`cat /fsckoptions`
107 if [ -f /forcefsck ]; then
108 fsckoptions="-f $fsckoptions"
112 if [ ! -f /fastboot -o awk '{ if ($2 ~ /^\/$/ && ( $3 ~ /^(nfs|romfs)$/ || $6 ~ /^0$/ ) ) exit 0 ; else exit 1}' /etc/fstab ]; then
113 show "Checking root filesystems."; started
114 initlog -c "fsck -C -T -a $fsckoptions /"
118 # A return of 2 or higher means there were serious problems.
119 if [ $rc -gt 1 ]; then
120 # don't use '\n' in nls macro !
122 nls "*** An error occurred during the file system check."
123 nls "*** Dropping you to a shell; the system will reboot"
124 nls "*** when you leave the shell."
127 PS1="`nls "(Repair filesystem)# "`"; export PS1
128 if [ "$RUN_SULOGIN_ON_ERR" = "yes" ]; then
134 run_cmd "Unmounting file systems" umount -a
135 mount -n -o remount,ro /
136 run_cmd "Automatic reboot in progress." reboot
137 elif [ "$rc" = "1" ]; then
142 # check for arguments
143 if grep -i nopnp /proc/cmdline >/dev/null ; then
150 if [ -x /sbin/isapnp -a -f /etc/isapnp/isapnp.conf ]; then
151 if [ -n "$PNP" -a "$RUN_ISAPNP" = "yes" ]; then
152 run_cmd "Setting up ISA PNP devices" /sbin/isapnp /etc/isapnp/isapnp.conf
157 # Remount the root filesystem read-write.
158 run_cmd "Remounting root filesystem in rw mode" mount -n -o remount,rw /
160 # Update quotas if fsck was run on /.
161 if [ X"$_RUN_QUOTACHECK" = "X1" -a -x /sbin/quotacheck ]; then
162 run_cmd "Checking root filesystem quotas" /sbin/quotacheck -v /
165 # /etc/nologin when starting system
166 [ -f /etc/nologin.boot ] && rm -f /etc/nologin /etc/nologin.boot
168 if [ "$DELAY_LOGIN" = "yes" -a ! -f /etc/nologin ]; then
169 show "Enabling Delay Login"; busy
171 nls "System bootup in progress - please wait" >> /etc/nologin
173 chmod 644 /etc/nologin
174 cp -fp /etc/nologin /etc/nologin.boot
178 echo ${HOSTNAME} > /etc/HOSTNAME
183 # Enter root and /proc into mtab.
187 if ! grep -i nomodules /proc/cmdline >/dev/null && [ -f /proc/ksyms ]; then
193 # Kernel dependent links
194 rm -f /lib/modules/preferred
195 rm -f /lib/modules/default
196 if [ -x /sbin/depmod -a -n "$USEMODULES" ]; then
197 if [ "$SET_SLINKS" != "no" ]; then
198 # Get ready for kmod if module support in the kernel
199 if [ -z `uname -r | grep "-"` ]; then
200 # we're using a new kernel, no preferred needed
203 ktag="`cat /proc/version`"
204 mtag=grep -l "$ktag" /lib/modules/*/.rhkmvtag 2> /dev/null
205 if [ -n "$mtag" ]; then
206 mver=echo $mtag | sed -e 's,/lib/modules/,,' -e 's, \
207 /.rhkmvtag,,' -e 's,[ ].*$,,'
209 if [ -n "$mver" ]; then
210 ln -sf /lib/modules/$mver /lib/modules/default
214 [ -n "$mver" -a -f "/boot/module-info-$mver" ] && \
215 ln -sf /boot/module-info-$mver /boot/module-info
216 [ -n "$mver" -a -f "/boot/System.map-$mver" ] && \
217 ln -sf /boot/System.map-$mver /boot/System.map
219 # Run depmod if: a) user requested; b) modules.dep is missing
220 # c) modules.dep is older than /etc/modules.conf
221 if [ "$RUN_DEPMOD" != "no" ]; then
222 if [ "$RUN_DEPMOD" = "ifmissing" -a ! -r /lib/modules/$mver/modules.dep ] || (find /lib/modules/$mver/ -name modules.dep ! -newer /etc/modules.conf -print 2>&1 | grep -q "modules.dep"); then
223 run_cmd "Finding module dependencies" depmod -a
229 if [ -n "$USEMODULES" -a "$LOAD_SOUND" = "yes" ]; then
230 if grep -s -q "^alias sound" /etc/modules.conf ; then
231 run_cmd "Loading sound module" modprobe -s sound
233 if grep -s -q "^alias midi" /etc/modules.conf ; then
234 run_cmd "Loading midi module" modprobe -s midi
238 if [ -f /proc/sys/kernel/modprobe ]; then
239 # /proc/sys/kernel/modprobe indicates built-in kmod instead
240 echo "/sbin/modprobe" > /proc/sys/kernel/modprobe
244 if [ -f /etc/rc.d/rc.modules ]; then
249 if [ -f /proc/mdstat -a -f /etc/raidtab ]; then
250 show "Starting up RAID devices."; started
254 for i in `grep "raiddev" /etc/raidtab | awk '{print $2}'`
256 RAIDDEV=`basename $i`
257 RAIDSTAT=`grep "^$RAIDDEV : active" /proc/mdstat`
258 if [ -z "$RAIDSTAT" ]; then
259 # Try raidstart first...if that fails then
260 # fall back to raid0run.
262 if [ -x /sbin/raidstart ]; then
266 if [ $RESULT -gt 0 -a -x /sbin/raid0run ]; then
272 # A non-zero return means there were problems.
273 if [ $rc -gt 0 ]; then
274 show "Starting up RAID devices."; fail
276 nls "*** An error occurred during the RAID startup"
277 nls "*** Dropping you to a shell; the system will reboot"
278 nls "*** when you leave the shell."
281 PS1="`nls "(RAID Repair)# "`"; export PS1
282 if [ "$RUN_SULOGIN_ON_ERR" = "yes" ]; then
288 run_cmd "Unmounting file systems" umount -a
289 run_cmd "Remounting root filesystem in ro mode" mount -n -o remount,ro /
290 run_cmd "Automatic reboot in progress" reboot
292 show "Starting up RAID devices."; ok
296 if [ ! -f /fastboot ]; then
297 show "Checking filesystems."; started
298 initlog -c "fsck -C -T -R -A -a $fsckoptions"
302 # A return of 2 or higher means there were serious problems.
303 if [ $rc -gt 1 ]; then
305 nls "*** An error occurred during the file system check."
306 nls "*** Dropping you to a shell; the system will reboot"
307 nls "*** when you leave the shell."
310 PS1="`nls "(Repair filesystem)# "`"; export PS1
311 if [ "$RUN_SULOGIN_ON_ERR" = "yes" ]; then
317 run_cmd "Unmounting file systems" umount -a
318 run_cmd "Remounting root filesystem in ro mode" mount -n -o remount,ro /
319 run_cmd "Automatic reboot in progress." reboot
320 elif [ "$rc" = "1" -a -x /sbin/quotacheck ]; then
321 run_cmd "Checking filesystem quotas" /sbin/quotacheck -v -R -a
325 # Mount all other filesystems (except for NFS and /proc, which is already
326 # mounted). Contrary to standard usage,
327 # filesystems are NOT unmounted in single user mode.
328 run_cmd "Mounting local filesystems." mount -a -t nonfs,smbfs,ncpfs,proc
330 # set the console font
331 #if [ -x /sbin/setsysfont ]; then
332 # show "Loading default system font"; busy
333 # if (/sbin/setsysfont > /dev/null 2>&1); then deltext; ok; else deltext; fail; fi
336 if [ -x /sbin/quotaon ]; then
337 run_cmd "Turning on quotas for local filesystems" /sbin/quotaon -a
341 # Clean out /etc & /var/{run/*,log/{b,w}tmpx}}.
342 rm -f /etc/mtab~ /fastboot /fsckoptions /forcefsck
347 chown root.utmp /var/run/utmp /var/log/wtmp
348 chmod 0664 /var/run/utmp /var/log/wtmp
349 if [ -n "$NEED_XFILES" ]; then
352 chown root.utmp /var/run/utmpx /var/log/wtmpx
353 chmod 0664 /var/run/utmpx /var/log/wtmpx
357 if [ "$CLEAN_TMP" = "yes" ]; then
361 # Delete UUCP lock files.
364 # Delete stale subsystem files.
365 rm -f /var/lock/subsys/*
367 # Delete stale pam_console locks.
368 rm -f /var/lock/console/*
369 rm -f /var/lock/console.lock
371 # Delete stale pid files
373 rm -f /var/spool/postoffice/.pid.*
378 # Delete Postgres sockets
379 rm -f /tmp/.s.PGSQL.*
381 # Set the system clock.
382 show "Setting clock"; busy
386 if [ -f /etc/sysconfig/clock ]; then
387 . /etc/sysconfig/clock
389 # convert old style clock config to new values
390 if [ "${CLOCKMODE}" = "GMT" ]; then
392 elif [ "${CLOCKMODE}" = "ARC" ]; then
397 if [ -x /sbin/hwclock ]; then
398 CLOCKFLAGS="--hctosys"
407 CLOCKFLAGS="$CLOCKFLAGS -u";
414 CLOCKFLAGS="$CLOCKFLAGS -A";
420 if ($CLOCK $CLOCKFLAGS); then deltext; ok; else deltext; fail; fi
422 show "`nls "Date set to"` `date`"; ok
424 # Right, now turn on swap in case we swap to files.
425 swapon -a >/dev/null 2>&1
426 run_cmd "Enabling swap space" /bin/true
427 #show "Enabling swap space"; busy
428 #if [ "`LANG=C swapon -a 2>&1 | grep -v "busy"`" = "" ]; then
434 # Initialize the serial ports.
435 if [ -f /etc/rc.d/rc.serial ]; then
436 . /etc/rc.d/rc.serial
439 # If a SCSI tape has been detected, load the st module unconditionally
440 # since many SCSI tapes don't deal well with st being loaded and unloaded
441 if [ -f /proc/scsi/scsi ] && cat /proc/scsi/scsi | grep -q 'Type: Sequential-Access' 2>/dev/null ; then
442 if cat /proc/devices | grep -qv ' 9 st' ; then
443 if [ -n "$USEMODULES" ] ; then
444 # Try to load the module. If it fails, ignore it...
445 insmod -p st >/dev/null 2>&1 && modprobe -s st >/dev/null 2>&1
450 # there could be a new kernel version. remove old psdevtab database
453 if [ -f /proc/sys/kernel/panic -a "$PANIC_REBOOT_TIME" -gt "0" ]; then
454 show "`nls "Sending val. %s to /proc/sys/kernel/panic" "$PANIC_REBOOT_TIME"`"; busy
455 if (echo $PANIC_REBOOT_TIME > /proc/sys/kernel/panic); then deltext; ok; else deltext; fail; fi
458 # If needed increase number of available system files
459 # There are two versions of each setting, because file names
460 # changed between Linux 2.0 and 2.2
461 if [ -f /proc/sys/kernel/file-max -a "$VFS_FILE_MAX" -gt 0 ]; then
462 echo $VFS_FILE_MAX >/proc/sys/kernel/file-max
464 if [ -f /proc/sys/fs/file-max -a "$VFS_FILE_MAX" -gt 0 ]; then
465 echo $VFS_FILE_MAX >/proc/sys/fs/file-max
467 if [ -f /proc/sys/kernel/inode-max -a "$VFS_INODE_MAX" -gt 0 ]; then
468 echo $VFS_INODE_MAX >/proc/sys/kernel/inode-max
470 if [ -f /proc/sys/fs/inode-max -a "$VFS_INODE_MAX" -gt 0 ]; then
471 echo $VFS_INODE_MAX >/proc/sys/fs/inode-max
475 # Now that we have all of our basic modules loaded and the kernel going,
476 # let's dump the syslog ring somewhere so we can find it later
477 dmesg > /var/log/dmesg
478 chmod 640 /var/log/dmesg
480 # Now that we have all of our basic modules loaded and the kernel going,
481 # let's dump the syslog ring somewhere so we can find it later
482 kill -TERM `/sbin/pidof getkey` >/dev/null 2>&1
484 if [ "$PROMPT" != "no" ]; then
485 /sbin/getkey i && touch /var/run/confirm
489 # Feed entropy into the entropy pool
490 /etc/rc.d/init.d/random start