Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
ADJKERNTZ(8)		  BSD System Manager's Manual		  ADJKERNTZ(8)

     adjkerntz -- adjust local time CMOS clock to reflect time zone changes
     and keep current timezone offset for the kernel

     adjkerntz -i
     adjkerntz -a [-s]

     The adjkerntz utility maintains the proper	relationship between the ker-
     nel 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 timestamp idea but
     keeping the same timestamps between FreeBSD MS-DOS	file system 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 situations, 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	multi-
	   user	mode, before any other daemons have been started.  The
	   adjkerntz utility puts itself into the background.  Then, for a lo-
	   cal 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 subsequent invoca-
	   tions of 'adjkerntz -a' and by local	time file systems.

	   For a local time CMOS clock 'adjkerntz -i' pauses, and remains in-
	   active as a background daemon until it receives a SIGTERM.  The
	   SIGTERM will	normally be sent by init(8) when the system 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 re-
	   flects 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 occur, 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 time-
	   zone	change), it exits with a warning diagnostic unless the -s op-
	   tion	was used, in which case	adjkerntz sleeps 30 minutes and	tries

	   This	form should be invoked from root's crontab(5) every half hour
	   between midnight and	5am, when most modern time zone	changes	occur.
	   Warning: do not use the -s option in	a crontab(5) command 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	privileges are re-
     quired for	all operations.

     TZ		 Time zone change rule,	see tzset(3); not needed when
		 tzsetup(8) or zic(8) is used.

     /etc/localtime	   Current zoneinfo file, see tzsetup(8) and zic(8).
     /etc/wall_cmos_clock  Empty file.	Its presence indicates that the	ma-
			   chine's CMOS	clock is set to	local time, while its
			   absence indicates a UTC CMOS	clock.

     No	diagnostics.  If an error occurs, adjkerntz logs an error message via
     syslog(3) and exits with a	nonzero	return code.

     tzset(3), crontab(5), mount_msdosfs(8), rc(8), sysctl(8), tzsetup(8),

     The adjkerntz utility appeared in FreeBSD 1.0.

     Andrey A. Chernov <>

BSD				 April 4, 1996				   BSD


Want to link to this manual page? Use this URL:

home | help