adjkerntz(8)
NAME
- adjkerntz - adjust local time CMOS clock to reflect time
- zone changes and
keep current timezone offset for the kernel
SYNOPSIS
adjkerntz -i adjkerntz -a [-s]
DESCRIPTION
- The adjkerntz utility maintains the proper relationship be
- tween the kernel clock, which is always set to UTC, and the CMOS clock,
- which may be
set to local time. The adjkerntz utility also informs the - kernel about
machine timezone shifts to maintain proper timestamps for - local time file
systems such as the MS-DOS file system. The main purpose of - this thing
is not general fixing of initially broken MS-DOS file times - tamp idea but
keeping the same timestamps between FreeBSD MS-DOS file sys - tem and MS-DOS
operating system installed on the same machine. If the file
/etc/wall_cmos_clock exists, it means that CMOS clock keeps - local time
(MS-DOS and MS-Windows compatible mode). If that file does - not exist, it
means that the CMOS clock keeps UTC time. The adjkerntz - utility passes
this state to the machdep.wall_cmos_clock kernel variable. - Adjustments may be needed at system startup and shutdown,
- and whenever a
time zone change occurs. To handle these different situa - tions, adjkerntz
is invoked in two ways: - -i This form handles system startups and shutdowns. The
- adjkerntz
- utility is invoked with this option from /etc/rc on
- entry to multiuser mode, before any other daemons have been started.
- The
adjkerntz utility puts itself into the background. - Then, for a
local time CMOS clock, adjkerntz reads the local time - from it and
sets the kernel clock to the corresponding UTC time. - The adjkerntz
utility also stores the local time zone offset into - the
machdep.adjkerntz kernel variable, for use by subse - quent invocations of 'adjkerntz -a' and by local time file sys
- tems.
- For a local time CMOS clock 'adjkerntz -i' pauses, and
- remains
inactive as a background daemon until it receives a - SIGTERM. The
SIGTERM will normally be sent by init(8) when the sys - tem leaves
multi-user mode (usually, because the system is being - shut down).
After receiving the SIGTERM, adjkerntz reads the UTC - kernel clock
and updates the CMOS clock, if necessary, to ensure - that it
reflects the current local time zone. Then adjkerntz - exits.
- -a [-s]
- This form is used to update the local time CMOS clock
- and kernel
machdep.adjkerntz variable when time zone changes oc - cur, e.g., when
entering or leaving daylight savings time. The - adjkerntz utility
uses the kernel clock's UTC time, the previously - stored time zone
offset, and the changed time zone rule to calculate a - new time zone
offset. It stores the new offset into the - machdep.adjkerntz kernel
variable, and updates the wall CMOS clock to the new - local time.
If 'adjkerntz -a' was started at a nonexistent time - (during a timezone change), it exits with a warning diagnostic un
- less the -s
option was used, in which case adjkerntz sleeps 30 - minutes and
tries again. - This form should be invoked from root's crontab(5) ev
- ery half hour
between midnight and 5am, when most modern time zone - changes occur.
Warning: do not use the -s option in a crontab(5) com - mand line, or
multiple 'adjkerntz -a' instances could conflict with - each other.
- The adjkerntz utility clears the kernel timezone structure
- and makes the
kernel clock run in the UTC time zone. Super-user privi - leges are
required for all operations.
ENVIRONMENT
- TZ Time zone change rule, see tzset(3); not needed
- when
- tzsetup(8) or zic(8) is used.
FILES
- /etc/localtime Current zoneinfo file, see tzsetup(8)
- and zic(8).
/etc/wall_cmos_clock Empty file. Its presence indicates - that the
- machine's CMOS clock is set to local
- time, while
its absence indicates a UTC CMOS - clock.
DIAGNOSTICS
- No diagnostics. If an error occurs, adjkerntz logs an error
- message via
syslog(3) and exits with a nonzero return code.
SEE ALSO
HISTORY
The adjkerntz utility appeared in FreeBSD 1.0.
AUTHORS
- Andrey A. Chernov <ache@astral.msk.su>
- BSD April 4, 1996