Как вы программно устанавливаете аппаратные часы в Linux?
Linux предоставляет вызов stime (2) для установки системного времени. Однако, хотя это позволит обновить системное время, он не устанавливает аппаратные часы BIOS в соответствие с новым системным временем.
Системы Linux обычно синхронизируют аппаратные часы с системным временем при выключении и с периодическими интервалами. Однако, если машина получает питание до одной из этих автоматических синхронизаций, время будет неправильным при перезапуске машины.
Как вы обеспечиваете обновление аппаратных часов при установке системного времени?
Ответы
Ответ 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
- и нажмите "Сохранить" (наверху панели вкладок текстового редактора).
- перезагрузка