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:
parent
25943be498
commit
448491ee86
@ -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
33
etc/rc.d/rtclocaltime
Executable 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"
|
Loading…
Reference in New Issue
Block a user