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 >
Text File  |  2006-11-29  |  3KB  |  121 lines

  1. #! /bin/sh
  2. #
  3. # Copyright (c) 2001-2002 SuSE Linux AG, Nuernberg, Germany.
  4. # All rights reserved.
  5. #
  6. # /etc/init.d/boot.clock
  7. #
  8. ### BEGIN INIT INFO
  9. # Provides:          boot.clock
  10. # Required-Start:    boot.rootfsck
  11. # Should-Start:      boot.localfs
  12. # Default-Start:     B S
  13. # Default-Stop:
  14. # Description:       Read or set hardware clock
  15. ### END INIT INFO
  16.  
  17. . /etc/rc.status
  18. . /etc/sysconfig/clock
  19. rc_reset
  20.  
  21. case "$1" in
  22.     start|restart)
  23.     #
  24.     # mkinitrd will set this variable if the system time was older than
  25.     # the mkinitrd.rpm build time.
  26.     if test "$SYSTEM_TIME_INCORRECT" != "" ; then
  27.         echo -n "The system time was incorrect: '$SYSTEM_TIME_INCORRECT'"
  28.         rc_status -s
  29.         rc_exit
  30.     fi
  31.     # Set and adjust the hardware clock
  32.     #    
  33.     if test "$HOSTTYPE" = "s390" -o "$HOSTTYPE" = "s390x" ; then
  34.  
  35.         echo -n Setting up the system clock
  36.  
  37.         # On s390 the hwclock is set outside Linux currently.  The kernel
  38.         # always assumes it to be set to UTC.  So if it is set to local
  39.         # time, we have to compensate for that.  We might achieve this
  40.         # using this special settimeofday(2) linux feature:
  41.         #   Under  Linux there is some peculiar `warp clock' semantics
  42.         #   associated to the settimeofday system call if on the  very
  43.         #   first  call  (after  booting) that has a non-NULL tz argu-
  44.         #   ment, the tv argument is NULL and the tz_minuteswest field
  45.         #   is  nonzero.  In  such  a case it is assumed that the CMOS
  46.         #   clock is on local time, and that it has to be  incremented
  47.         #   by  this  amount to get UTC system time.  No doubt it is a
  48.         #   bad idea to use this feature.  (settimeofday(2) man page)
  49.         # But unless someone complains we simply will use date(1) to shift
  50.         # the system time by the difference between UTC and local time, if
  51.         # the system clock is set to local time.  This will introduce a
  52.         # minimal shift due to the delay between gettimeofday and
  53.         # settimeofday, and it only works as long as $0 is executed
  54.         # exactly once, at boot.
  55.  
  56.         if test "$HWCLOCK" != "-u"; then
  57.         date $(date -u +'%m%d%H%M%Y.%S')
  58.         rc_status
  59.         fi
  60.         #
  61.         # Let zic set timezone - if present.
  62.         #
  63.         if test -n "$TIMEZONE" -a -x /usr/sbin/zic ; then
  64.         echo -n Setting up timezone data
  65.         /usr/sbin/zic -l $TIMEZONE
  66.         rc_status
  67.         fi
  68.  
  69.         rc_status -v -r
  70.     else
  71.  
  72.         echo -n Setting up the hardware clock
  73.  
  74.         if test "$SYSTOHC" = "yes" ; then
  75.         #
  76.         # We write back the system time later at
  77.         # reboot/shutdown time.
  78.         #
  79.         if test ! -f /etc/adjtime ; then
  80.             echo "0.0 0 0"     >  /etc/adjtime
  81.             echo "0"           >> /etc/adjtime
  82.             case "$HWCLOCK" in
  83.             *-u*) echo "UTC"   >> /etc/adjtime ;;
  84.             *-l*) echo "LOCAL" >> /etc/adjtime ;;
  85.             esac
  86.         fi
  87.         /sbin/hwclock --adjust $HWCLOCK
  88.         rc_status
  89.         /sbin/hwclock --hctosys $HWCLOCK
  90.         rc_status
  91.         else
  92.         /sbin/hwclock --hctosys --noadjfile $HWCLOCK
  93.         fi
  94.  
  95.         rc_status -v -r
  96.     fi
  97.     ;;
  98.     stop)
  99.     if test "$HOSTTYPE" != "s390" -a "$HOSTTYPE" != "s390x" ; then
  100.         if test "$SYSTOHC" = "yes" ; then
  101.         echo -n "Set Hardware Clock to the current System Time"
  102.         #
  103.         # Write back to hardware clock and calculate adjtime
  104.         #
  105.         /sbin/hwclock --systohc $HWCLOCK
  106.         rc_status -v -r
  107.         fi
  108.     fi
  109.     ;;
  110.     status)
  111.     rc_failed 4
  112.     rc_status -v
  113.     ;;
  114.     *)
  115.     echo "Usage: $0 {start|stop|status|restart}"
  116.     exit 1
  117.     ;;
  118. esac
  119.  
  120. rc_exit
  121.