hwclock and Debian: When udev is running, hwclock -systz will be called when the RTC clock device is created. When udev is not running, hwclock --hctosys will be called during system startup. In both cases, hwclock --systohc will be called during system shutdown. To set the date/time of the system, just use the standard UNIX date facilities (such as date) or any of the advanced timekeeping utilities (ntp, ntpdate, chrony). Other methods of setting the clock (such as hwclock) are likely to cause trouble, do not use them. Please note that because the shutdown scripts call hwclock --systohc, you cannot set the clock using hwclock only, as your adjustment will be lost on the next reboot. THIS MEANS YOU MUST *NOT* FOLLOW THE PROCEDURES IN THE hwclock(8) MAN PAGE TO SET THE CLOCK DATE/TIME USING A REBOOT UNLESS YOU EDIT THE SHUTDOWN SCRIPTS. The full story: A Linux system actually has two clocks: - The System Clock, kept by the kernel. This is the clock that Linux uses for day-to-day activities, and this is also the clock you set using date. - The Hardware Clock, also called RTC, which is used as a backup to keep time while the computer is turned off, or in APM suspended state. This is the clock you set using hwclock --set. (you can get more information about these two clocks in the hwclock(8) man page). hwclock is used to copy time between these two clocks. For the Debian standard install, the system clock is initialized with the value of the hardware clock during startup, and the value of the system clock is copied back to the hardware clock during system shutdown/reboot. So, in a Debian default install, you can keep the illusion that there's a single clock. Unless you use a program that modifies the hardware clock directly and does not set the system clock as well, that is. Issues with hwclock --adjust: hwclock has a facility to try to correct for systematic drift in the hardware clock, accessed by hwclock --adjust. This facility is *dangerous* because it has a severe drawback: it assumes that no program other than hwclock --systohc will ever be used to change the hardware clock. This assumption is often false, as many common utilities such as ntp, chrony, as well as your computer's System Setup BIOS program, and any other OS you have in your machine will change the clock. Also, if hwclock --adjust is used, one must make sure the drift file (/etc/adjtime) is deleted every time the system clock is set to a very different value (even if you're using hwclock itself to do it!), or the drift computation might become invalid and cause the hardware clock to be incorrectly set the next time hwclock --adjust is used. hwclock currently does not perform any sort of sanity checks in the values it uses to compute the drift file, and will corrupt your clock time by potentially very large amounts if anything goes wrong. Don't use the hwclock --adjust facility, refer to alternate (and much safer) programs such as ntp or chrony if you need precision timekeeping.