Как программно установить аппаратные часы в Linux? - PullRequest
11 голосов
/ 14 октября 2008

Linux предоставляет вызов stime (2) для установки системного времени. Однако, хотя это обновит системное время, оно не установит аппаратные часы BIOS в соответствии с новым системным временем.

Системы Linux обычно синхронизируют аппаратные часы с системным временем при выключении и с периодическими интервалами. Тем не менее, если устройство выключается и включается перед одной из этих автоматических синхронизаций, время перезапуска будет неправильным.

Как обеспечить обновление аппаратных часов при установке системного времени?

Ответы [ 5 ]

14 голосов
/ 14 октября 2008

За подробностями обращайтесь к man-странице rtc, но если вы вошли в систему как root, что-то вроде этого:

    struct       rtc_time {
        int         tm_sec;      
        int         tm_min;      
        int         tm_hour;     
        int         tm_mday;     
        int         tm_mon;      
        int         tm_year;     
        int         tm_wday; /* unused */
        int         tm_yday; /* unused */
        int         tm_isdst;/* unused */
    };

struct rtc_time rt;
/* set your values here */
fd = open("/dev/rtc", O_RDONLY);
ioctl(fd, RTC_SET_TIME, &rt);
close(fd);
9 голосов
/ 14 октября 2008

После вызова stime () сделайте следующее:

system("/sbin/hwclock --systohc");

Для получения дополнительной информации см. Справочную страницу hwclock (8).

2 голосов
/ 14 октября 2008

Я бы начал с чтения исходного кода hwclock.

2 голосов
/ 14 октября 2008

Я также хотел бы отметить, что аппаратные часы точны только до точки (я видел системы, которые будут терять / набирать пару секунд в день).

Рассматривали ли вы настройку сетевого демона времени для синхронизации ваших часов с сервером времени?

По общему признанию, эта синхронизация не происходит до тех пор, пока не запустится демон, поэтому синхронизация аппаратных часов также помогает между включением питания и моментом, когда демон времени синхронизируется с сервером времени.

0 голосов
/ 30 октября 2010

Если текстовый редактор отличается от kubuntu (в редакторе по умолчанию используется kate), используйте свой собственный с командой sudo в терминале.

  1. запустить терминал
  2. скопируйте и вставьте эту команду sudo kate /etc/default/rcS нажмите Введите
  3. введите пароль пользователя (ваш пароль для входа в систему) нажмите Введите
  4. текстовый редактор откроется на рабочем столе
  5. изменить строку UTC=yes на UTC=no
  6. и нажмите кнопку Сохранить (вверху панели вкладок текстового редактора)
  7. перезагрузка
...