home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2007 January, February, March & April
/
Chip-Cover-CD-2007-02.iso
/
boot
/
i386
/
rescue
/
etc
/
init.d
/
halt
< prev
next >
Wrap
Text File
|
2006-11-29
|
4KB
|
158 lines
#! /bin/sh
# Copyright (c) 1996-2002 SuSE Linux AG, Nuernberg, Germany.
# All rights reserved.
#
# Author: Florian La Roche, 1996
# Werner Fink <werner@suse.de>, 1996-2001
#
# Please send feedback to http://www.suse.de/feedback
#
# /etc/init.d/halt (and symlinked to reboot)
#
. /etc/rc.status
. /etc/sysconfig/clock
. /etc/sysconfig/shutdown
#
# Avoid being interrupted by child or keyboard
#
trap "echo" SIGINT SIGSEGV SIGQUIT SIGTERM
set +e
case "$0" in
*halt)
message="The system will be halted immediately."
case `/bin/uname -m` in
i?86)
command="halt"
if test -e /proc/apm -o -e /proc/acpi -o -e /proc/sys/acpi ; then
command="halt -p"
else
read cmdline < /proc/cmdline
case "$cmdline" in
*apm=smp-power-off*|*apm=power-off*) command="halt -p" ;;
esac
fi
;;
*)
command="halt -p"
;;
esac
;;
*reboot)
message="Please stand by while rebooting the system..."
command="reboot"
;;
*)
echo "$0: call me as \"halt\" or \"reboot\" please!"
exit 1
;;
esac
#
# first do local stuff
#
rc_reset
test -e /etc/init.d/halt.local && {
echo Running /etc/init.d/halt.local
/bin/sh /etc/init.d/halt.local
rc_status -v1 -r
}
# Write to wtmp file before unmounting /var
$command -w
# Set a flag that we had success upto this point
> /success
# Stop blogd before umounting /var
test -x /sbin/blogd && killproc -QUIT /sbin/blogd
echo "Sending all processes the TERM signal..."
killall5 -15
echo -e "$rc_done_up"
sleep 1
test "$1" = "fast" -o -e /fastboot || sleep 4
echo "Sending all processes the KILL signal..."
killall5 -9
echo -e "$rc_done_up"
# Redirect our mesages to default console
test -n "$REDIRECT" && exec 0<> $REDIRECT 1>&0 2>&0
#
# call modules in boot.d via K* symlinks
# (reverse sequence)
#
if test -d /etc/init.d/boot.d/ ; then
for i in /etc/init.d/boot.d/K*; do
test -f $i || continue
if test -x "$i" ; then
# Active boot scripts, should have their own messages
$i stop
else
# Old boot scripts, may not have any message
echo Skipping $i, not executable
fi
done
fi
# kill splash animation
test "$SPLASH" = yes && /sbin/splash -q
umount -anvt proc
# on umsdos fs this would lead to an error message, so direct errors to
# /dev/null
mount -no remount,ro / 2> /dev/null
sync
# show "the system is down" message
if test "$SPLASH" = yes ; then
mount -nt proc proc /proc
/sbin/splash -q -p 65535 -t "isdown"
umount -n /proc
fi
# Make reboot noise and wait a few seconds to give harddisks the chance
# to really flush their buffers before power goes down.
if test -n "$REDIRECT" ; then
sleep 1
case "$HALT_SOUND" in
"yes"|"quint")
echo -en "\033[10;393]\a\033[10;262]"
sleep 1
;;
"octave")
for tone in 524 491 440 393 349 328 295 ; do
echo -en "\033[10;${tone}]\a"
usleep 125000
done
echo -en "\033[10;262]"
;;
"no")
;;
*)
echo -en "\033[10;440]\a"
usleep 250000
;;
esac
else
test "$HALT_SOUND" = "no" || echo -en "\a"
sleep 2
fi
echo $message
test "$HALT_SOUND" = "no" || echo -en "\a"
test -n "$HALT_POWERDOWN_INSERT" && $HALT_POWERDOWN_INSERT
# Set system console back to intial value
test -n "$REDIRECT" -a -n "$CONSOLE" && setconsole $REDIRECT < $CONSOLE
# Now talk to kernel
exec $command -d -f