Мне было поручено запустить наше программное обеспечение только для Windows в дистрибутиве Linux. Поэтому я решил запустить его на Wine в Ubuntu 18.04. Ubuntu из сетевой установки, так что у меня почти ничего нет, кроме X11, openbox, и я все настраиваю через xterm.
В Windows наше программное обеспечение получает время от нашего оборудования (работает на IRIG-B от спутникового GPS) и изменяет системное время, чтобы синхронизировать время компьютера и время оборудования. Программное обеспечение проверяет и пытается это каждые 5 минут.
Я оставил программное обеспечение, работающее на Wine, на выходных с wine "path" не отключая процесс от xterm, и когда я вернулся, я заметил, что получаю кучу этих сообщений в xterm, каждые 5 минут или около того:
err:ntdll:NtSetSystemTime Cannot set time to Mon Jun 18 09:49:19 2018
, time adjustment -3153: Operation not permitted
Поэтому я проверяю источник вина NtSetSystemTime и вижу, что это оболочка для settimeofday . Поэтому я смотрю man-страницу settimeofday и там говорится, что для этого требуется CAP_SYS_TIME . Поэтому я setcap cap_sys_time+ep для wine-stable , wineserver и исполняемого программного обеспечения, но это не работает.
Я пробовал комбинацию +ep , +ei и +eip , но это тоже не работает. Я выключил NTP с помощью timedatectl set-ntp 0 и попытался включить и выключить set-local-rtc .
Я также попытался изменить системное время примерно на 10 минут, чтобы посмотреть, изменит ли это его, но это тоже ничего не раскрыло.
У меня кончились вещи, чтобы попробовать. Что мне не хватает? Мне просто нужно, чтобы программа смогла изменить системное время.
