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
/
boot.clock
< prev
next >
Wrap
Text File
|
2006-11-29
|
3KB
|
121 lines
#! /bin/sh
#
# Copyright (c) 2001-2002 SuSE Linux AG, Nuernberg, Germany.
# All rights reserved.
#
# /etc/init.d/boot.clock
#
### BEGIN INIT INFO
# Provides: boot.clock
# Required-Start: boot.rootfsck
# Should-Start: boot.localfs
# Default-Start: B S
# Default-Stop:
# Description: Read or set hardware clock
### END INIT INFO
. /etc/rc.status
. /etc/sysconfig/clock
rc_reset
case "$1" in
start|restart)
#
# mkinitrd will set this variable if the system time was older than
# the mkinitrd.rpm build time.
if test "$SYSTEM_TIME_INCORRECT" != "" ; then
echo -n "The system time was incorrect: '$SYSTEM_TIME_INCORRECT'"
rc_status -s
rc_exit
fi
# Set and adjust the hardware clock
#
if test "$HOSTTYPE" = "s390" -o "$HOSTTYPE" = "s390x" ; then
echo -n Setting up the system clock
# On s390 the hwclock is set outside Linux currently. The kernel
# always assumes it to be set to UTC. So if it is set to local
# time, we have to compensate for that. We might achieve this
# using this special settimeofday(2) linux feature:
# Under Linux there is some peculiar `warp clock' semantics
# associated to the settimeofday system call if on the very
# first call (after booting) that has a non-NULL tz argu-
# ment, the tv argument is NULL and the tz_minuteswest field
# is nonzero. In such a case it is assumed that the CMOS
# clock is on local time, and that it has to be incremented
# by this amount to get UTC system time. No doubt it is a
# bad idea to use this feature. (settimeofday(2) man page)
# But unless someone complains we simply will use date(1) to shift
# the system time by the difference between UTC and local time, if
# the system clock is set to local time. This will introduce a
# minimal shift due to the delay between gettimeofday and
# settimeofday, and it only works as long as $0 is executed
# exactly once, at boot.
if test "$HWCLOCK" != "-u"; then
date $(date -u +'%m%d%H%M%Y.%S')
rc_status
fi
#
# Let zic set timezone - if present.
#
if test -n "$TIMEZONE" -a -x /usr/sbin/zic ; then
echo -n Setting up timezone data
/usr/sbin/zic -l $TIMEZONE
rc_status
fi
rc_status -v -r
else
echo -n Setting up the hardware clock
if test "$SYSTOHC" = "yes" ; then
#
# We write back the system time later at
# reboot/shutdown time.
#
if test ! -f /etc/adjtime ; then
echo "0.0 0 0" > /etc/adjtime
echo "0" >> /etc/adjtime
case "$HWCLOCK" in
*-u*) echo "UTC" >> /etc/adjtime ;;
*-l*) echo "LOCAL" >> /etc/adjtime ;;
esac
fi
/sbin/hwclock --adjust $HWCLOCK
rc_status
/sbin/hwclock --hctosys $HWCLOCK
rc_status
else
/sbin/hwclock --hctosys --noadjfile $HWCLOCK
fi
rc_status -v -r
fi
;;
stop)
if test "$HOSTTYPE" != "s390" -a "$HOSTTYPE" != "s390x" ; then
if test "$SYSTOHC" = "yes" ; then
echo -n "Set Hardware Clock to the current System Time"
#
# Write back to hardware clock and calculate adjtime
#
/sbin/hwclock --systohc $HWCLOCK
rc_status -v -r
fi
fi
;;
status)
rc_failed 4
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
rc_exit