Um típico BIOS PC possui um relógio que armazena a hora sem uma indicação de fuso horário. Diferentes sistemas operacionais têm diferentes convenções: alguns exigem que o relógio armazene o UTC, outros exigem que o relógio armazene o horário local. Inicialização dupla entre sistemas que exigem diferentes convenções é um problema.
As versões mais antigas do Windows não tinham noção de um tempo de exibição separado da hora local. Daí você precisa definir o relógio do hardware para o tempo que você deseja exibir no Windows. Não sei se isso foi corrigido no Windows 7.
Os sistemas Unix têm uma configuração por usuário para o fuso horário e usam o UTC internamente. A maioria das variantes unix gosta de usar o UTC como relógio, mas os unices projetados para PCs geralmente oferecem uma maneira de coabitar com o Windows. No FreeBSD, execute tzsetup
então adjkerntz
para atualizar essa configuração. Você pode saber se o clock do hardware está usando o UTC ou a hora local: se /etc/wall_cmos_clock
existir, presume-se que o clock do hardware use o horário local.
Observe que, se você vive em um fuso horário com horário de verão e seu relógio de hardware usa o horário local, seus vários sistemas operacionais podem competir para redefinir o relógio quando o horário de verão é iniciado ou encerrado. Esse é um dos motivos pelos quais a configuração do clock do hardware para UTC é preferível: você deve definir o relógio do hardware para a hora local somente se usar um sistema operacional que o requeira absolutamente.