Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

Ознакомьтесь с 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);

Ответ 2

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

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

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

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

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

  • запустить терминал
  • скопируйте и вставьте эту команду sudo kate /etc/default/rcS нажмите Enter
  • введите пароль пользователя (ваш пароль для входа) нажмите Enter
  • текстовый редактор откроется на рабочем столе
  • измените строку UTC=yes на UTC=no
  • и нажмите "Сохранить" (наверху панели вкладок текстового редактора).
  • перезагрузка