Освоение синхронизации времени в WSL 2: подробное руководство

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.