Add a new /etc/rc.conf option: rtclocaltime=YES adapts the RTC offset

at boot automatically, so a machine dual booting another OS that uses
the RTC at localtime and NetBSD agree on the current time even if daylight
saving started/ended (without recompiling a kernel twice per year).
Awk code by Matt Thomas.
This commit is contained in:
martin 2003-12-27 00:23:22 +00:00
parent 25943be498
commit 448491ee86
2 changed files with 38 additions and 1 deletions

View File

@ -1,4 +1,4 @@
# $NetBSD: rc.conf,v 1.51 2003/10/20 15:02:15 christos Exp $
# $NetBSD: rc.conf,v 1.52 2003/12/27 00:23:22 martin Exp $
#
# /etc/defaults/rc.conf --
# default configuration of /etc/rc.conf
@ -105,6 +105,10 @@ dmesg=YES dmesg_flags="" # write /var/run/dmesg.boot
accounting=NO # uses /var/account/acct
newsyslog=NO newsyslog_flags="" # trim log files
# cope with other OSes using the real time clock at localtime on this
# machine (by adjusting kern.rtc_offset at boot)
rtclocaltime=NO
# NOTE: default coredump name now set in /etc/sysctl.conf
#

33
etc/rc.d/rtclocaltime Executable file
View File

@ -0,0 +1,33 @@
#! /bin/sh
# PROVIDE: rtclocaltime
# REQUIRE: mountcritremote
# BEFORE: ntpdate ntpd
. /etc/rc.subr
name="rtclocaltime"
rcvar=$name
start_cmd="rtclocaltime_start"
stop_cmd=":"
rtclocaltime_start()
{
rtcoff=$(date '+%z' | awk '{
offset = int($1);
if (offset < 0) {
sign = -1;
offset = -offset;
} else {
sign = 1;
}
minutes = offset % 100;
hours = offset / 100;
offset = sign * (hours * 60 + minutes);
print offset;
}')
sysctl -w kern.rtc_offset=$((-1 * $rtcoff))
}
load_rc_config $name
run_rc_command "$1"