Мне было поручено запустить наше программное обеспечение только для 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 минут, чтобы посмотреть, изменит ли это его, но это тоже ничего не раскрыло.
У меня кончились вещи, чтобы попробовать. Что мне не хватает? Мне просто нужно, чтобы программа смогла изменить системное время.