Setting up time and time zones There are several things involved in getting time right under Linux: - /usr/lib/zoneinfo contains files that define what time zone you are in. If they are missing, no time zone calculations are done, i.e. your internal clock is assumed to be on local time rather than the Unix standard of GMT. The only file that you absolutely need is /usr/lib/zoneinfo/localtime, but I recommend also having /usr/lib/zoneinfo/posixrules. Posixrules is typically a copy of or link to localtime. Localtime defines your default zone. Posixrules is needed to interpret the TZ variable, which is used if you want to specify a zone other than the default. - the "date" command can be used to set or display the date/time. Note however that it does not set the hardware clock, so next time you reboot, you'll be back to the old time. I recommend that after changing the time with "date", you use "clock -w" or "clock -u -w" to update the hardware clock as well. (See below.) - the "clock" command can be used to set or display the date/time in the hardware (CMOS) clock. Typically your /etc/rc script will contain clock -s which will cause the Unix date/time to be initialized from the CMOS clock when you boot. If your CMOS clock is set to GMT (which is what I recommend) the correct command is clock -u -s The binary time distribution should be untarred under /usr. It contains lib/zoneinfo, bin/date, bin/clock, and doc/time.doc (this file). Once you've installed these files, you'll want to do four things: 1) set /usr/lib/zoneinfo/localtime and /usr/lib/zoneinfo/posixrules. You should copy the file for your time zone. E.g. if you are in the U.S. Eastern time zone, do cd /usr/lib/zoneinfo cp US/Eastern localtime ln localtime posixrules Localtime defines the local time zone. Posixrules defines the zone to be used to interpret the TZ environment variable. Since it's far more convenient simply to use the right time zone file, nothing more will be said here about how the TZ variable is used. Unless you intend to use TZ, you can ignore the next paragraph. If you want exact POSIX behavior, posixrules should be a copy of or link to one of the U.S. time zone files. (For non-U.S. daylight rules, the TZ variable defines the daylight transition rules.) However it may make more sense practically for it to be the same as localtime, as shown in the instructions above. 2) Once you've set up localtime and posixrules, you can remove the rest of the files in /usr/lib/zoneinfo, if you're sure you'll never want to operate in any other time zone. Or you can keep just the few time zones that you might need. 3) Put the correct "clock" command into /etc/rc. Which command to use depends upon whether you want your hardware clock to keep local time or GMT. I recommend using GMT, since that will allow daylight savings transitions to be completely automatic. However the same clock is used by DOS, and some people don't like the time in DOS being GMT. I use Unix-compatible software under DOS. It uses the TZ environment variable to do time zone conversion. Thus I prefer the clock being GMT even under DOS. But some people may not like that. Anyway, if your hardware clock is set to the local time, put the line clock -s in /etc/rc. This will set the Unix time from your hardware clock, doing the necessary time conversion. If your hardware clock is set to GMT, then you'll need the -u option: clock -u -s 4) Now make sure that your hardware clock is set correctly. Try "clock" with no arguments. It will print the current setting of the hardware clock. Make sure it is right, and that it is either local or GMT, as you decided. (If the hardware clock is supposed to be GMT, you can use "clock -u". This will convert from GMT to local and display it.) To set the clock, first use the "date" command to get the date right in Unix. Then use "clock -w" to set the hardware clock. Note that "clock -w" will set the hardware clock to the local time, and "clock -u -w" will set it to GMT. Verify with "clock" that the hardware clock is as you want it. From now on, the time should be right. If your hardware clock loses or gains time, you can update it at a future date by the same procedure just described: first get the Unix time right using "date" and then use "clock -w" or "clock -u -w" to set the hardware clock. If your hardware clock is set using local time, make sure to reset it when daylight time changes. If you're running Unix when daylight time changes, the Unix time will adjust automatically. In that case, all you need is "clock -w" to update the hardware clock. If you aren't running Unix during the transition, then your time will be an hour off the next time you boot. In that case, set the correct Unix time using "date", and then use "clock -w" to update the hardware clock. If your hardware clock is set using GMT time, none of this is necessary -- daylight time transitions will happen automatically.