là encore c’est easy 😉 2 cas de figure, le plus simple avec une machine entièrement dédiée à NetBSD:
# sysctl -w kern.rtc_offset=0
# rm -f /etc/localtime
# ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime
# date 200610111832
Avec une machine dual boot:
# echo rtclocaltime=YES >>/etc/rc.conf
# rm -f /etc/localtime
# ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime
# date 200610111832
# /etc/rc.d/rtclocaltime restart
Le principe: en gros, et par défaut, le kernel stocke dans le hardware la date en GMT (ou UTC c’est à peu près pareil). Pour ça, il va ajouter ou retirer du temps en fonction du fuseau horaire défini par /etc/localtime avant de lire (boot) ou d’écrire (shutdown) l’hardware clock. Si on a un système en dual boot avec un autre OS qui veut une hardware clock en heure locale (ex: heure de Paris) il faut en plus « feinter » le système avec kern.rtc_offset. C’est ce que fait /etc/rc.d/rtclocaltime.
On a donc pour un dual boot:
heure locale (18h30) = heure hardware (18h30) + kern.rtc_offset (-2h) + /etc/localtime (+2h)
et pour un système dédié:
heure locale (18h30) = heure hardware (16h30) + kern_rtc_offset (0) + /etc/localtime (+2h)
presque clair non? 🙂