For any OS installation, you must know your Time Zone. This is expressed in terms of a city, a state or a country. You must also decide how to set BIOS time, and we may follow two strategies here:
In this case you should set BIOS time to UTC time. DST changes will be dynamically managed by Time Zone configurations.
Windows handles time in a more primitive way than Linux. For Windows, BIOS time is allways your local time, so DST changes are more aggressive because they directly change hardware clock. And since both Linux and Windows initially get and set time from the hardware, when they are together, Linux must handle it in the same way. So set BIOS time to your localtime.
On Red Hat Linux and derived systems, you can set the hardware clock strategy and Time Zone using the timeconfig command, that shows a user-friendly dialog. You can also use it non-interactively:
Example 2. Time Configuration Tool
bash# timeconfig "Brasil/East" # set HC to localtime, and TZ to "Brazil/East" bash# timeconfig --utc "Brasil/East" # set HC to UTC, and TZ to "Brazil/East" |
Anyway, it changes /etc/sysconfig/clock file that is read at boot time. You can edit it by hand, and that is how it looks:
I encourage you to only set your HC after understanding how to get accurate time, described on Section 4.
The hwclock command reads and sets the HC, based on several options you give him, documented in its man page. But you don't have to use it if you have a modern Linux distribution. After defining your HC strategy and Time Zone, you can use the high level setclock command to correctly set your HC. You don't need to pass any parameters because setclock intelligently calls hwclock to set the BIOS based on your OS current date and time. So you should allways use the setclock command.
But if you are a minimalist and prefer hard work, here are some hwclock examples:
Example 4. setclock and hwclock usage
bash# setclock # The easy way to set HC bash# hwclock # reads HC bash# hwclock --systohc --utc # set HC with UTC time based on OS current time bash# hwclock --systohc # set HC with local time based on OS current time bash# hwclock --set --date "22 Mar 2002 13:17" # set HC with time specified on string |
Since the OS time is independent from the hardware clock, any BIOS change we make will take place in the next boot.
Another option to change HC is rebooting and accessing your computer BIOS screens. On IBM e-server zSeries platforms you'll have to do it on z/VM level, because Linux here runs on virtual machines created by z/VM.