WSL 2 (подсистема Windows для Linux 2) обеспечивает плавную интеграцию сред Linux с операционной системой Windows. Однако одной из распространенных проблем, с которыми сталкиваются пользователи, является синхронизация времени между подсистемой Linux и хост-системой Windows. В этой статье мы рассмотрим различные методы обеспечения точного учета времени в WSL 2, а также приведем примеры кода для каждого подхода.
Метод 1. Использование NTP (сетевого протокола времени).
NTP — широко распространенный протокол синхронизации времени в сетях. Настроив WSL 2 для использования серверов NTP, мы можем обеспечить точный учет времени. Выполните следующие действия:
Шаг 1. Установите пакет NTP в дистрибутив WSL 2:
$ sudo apt-get update
$ sudo apt-get install ntp
Шаг 2. Настройте NTP-серверы в файле /etc/ntp.conf:
$ sudo nano /etc/ntp.conf
Добавьте адреса NTP-серверов в директиве server:
server pool.ntp.org
Шаг 3. Перезапустите службу NTP:
$ sudo service ntp restart
Метод 2: использование Chrony
Chrony является альтернативой NTP и предлагает аналогичные функции. Выполните следующие действия, чтобы использовать Chrony для синхронизации времени в WSL 2:
Шаг 1. Установите Chrony в свой дистрибутив WSL 2:
$ sudo apt-get update
$ sudo apt-get install chrony
Шаг 2. Настройте серверы Chrony в файле /etc/chrony/chrony.conf:
$ sudo nano /etc/chrony/chrony.conf
Добавьте адреса серверов Chrony в директиве server:
server pool.ntp.org iburst
Шаг 3. Перезапустите службу Chrony:
$ sudo service chrony restart
Метод 3: синхронизация времени вручную с Windows
Вы можете вручную синхронизировать время между WSL 2 и хост-системой Windows с помощью команды wsl --set-time. Выполните следующие действия:
Шаг 1. Запустите терминал WSL 2 и выполните следующую команду:
$ wsl --set-time <UnixTimestamp>
Замените <UnixTimestamp>текущей отметкой времени в формате Unix.
Метод 4. Автоматизация синхронизации времени при запуске Windows
Чтобы автоматизировать синхронизацию времени во время запуска WSL 2, вы можете создать сценарий, который запускается при запуске Windows. Выполните следующие действия:
Шаг 1. Создайте пакетный скрипт, например wsl_time_sync.bat, со следующим содержимым:
@echo off
wsl --set-time <UnixTimestamp>
Замените <UnixTimestamp>текущей отметкой времени в формате Unix.
Шаг 2. Поместите пакетный скрипт в папку автозагрузки Windows:
C:\Users\<Username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Точная синхронизация времени имеет решающее значение при работе с WSL 2. В этой статье мы рассмотрели различные методы обеспечения точного учета времени в WSL 2, включая использование NTP, Chrony, ручную синхронизацию времени с Windows и автоматизацию синхронизации времени во время запуска. Следуя этим подходам, вы сможете устранить неточности во времени и улучшить общее впечатление от использования WSL 2.