Menu
Categories
Archlinux, ntpd и VMware Player
June 27, 2013 Сеть и интернет

Одно время мне никак не удавалось заставить работающую внутри VMware систему типа Arch заставить показывать корректное время сразу после загрузки. В системе был указан корректный московский часовой пояс и был запущен и настроен ntpd. Вот только, по всей видимости, VMware подставляет виртуальной машине системное время под видом UTC, и в итоге после запуска мы получаем в виртуалке время, сдвинутое на +4 часа. А ntpd не торопился его выправлять, в итоге получить точное время можно было лишь спустя 5-10 минут после запуска системы.

Проблему можно было бы разрешить путем задания в Archlinux’е пояса UTC, и таким образом заставить систему никуда не сдвигать время относительно выставляемого VMware. Но так как это было бы слишком просто, пойдем другим путем, и попутно научимся создавать скрипт rc.local в системе с непонятным и неудобным systemd.

Создаем описание нового сервиса rc.local, для этого пишем файл /etc/systemd/system/rc-local.service:

[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

Активируем его:

[root@arch] # systemctl enable rc-local.service

Создаем файл /etc/rc.local и добавляем в него команду синхронизации времени:

#!/bin/bash
sleep 10
ntpdate -u ntp1.vniiftri.ru

Команда sleep организует искусственную задержку, без которой мне не удалось заставить это работать.
Возможно, не успевала прогрузиться сеть.

Делаем скрипт запускаемым:

[root@arch] # chmod +x /etc/rc.local

Перезапускаем виртуалку, и через 10 секунд после старта получаем корректное системное время.

PS: Да, я допускаю, что должна быть какая-то возможность настроить VMware так, чтобы оно выдавало в виртуалки реальное UTC-время, а не выдавало системное время MSK хост-машины за UTC, тем самым вводя виртуальные машины в заблуждение.

Leave a Reply




*