Подсистема Windows для Linux 3.0.2: что нового и как обновиться

2026-10-06 125 комментарии
Обновление WSL исправляет запуск виртуальных машин с большим числом процессоров и предоставляет дистрибутивам заголовки работающего ядра Linux и perf. Версия 3.0.2 пока имеет статус Pre-release; для получения предварительных выпусков нужна команда wsl --update --pre-release. Режим sparse VHD включается отдельно и остаётся экспериментальным

Microsoft выпустила предварительную версию набора компонентов Подсистема Windows для Linux 3.0.2. Обновление устраняет причину сбоя при запуске виртуальных машин с большим числом процессоров и включает экспериментальное создание разреженных виртуальных дисков. Разработчики также предоставили дистрибутивам доступ к заголовкам установленного ядра Linux и утилите perf, исправили сетевые ошибки и расширили журнал событий контейнеров. WSL 3.0.2 имеет статус Pre-release, а актуальной стабильной версией остаётся 3.0.1.

Новый выпуск продолжает ветку пакетов WSL 3.0.x. В предыдущем обновлении Microsoft объявила об общедоступном выпуске Linux-контейнеров WSLC, которыми можно управлять из Windows через wslc.exe.

Запуск WSL на серверах с более чем 256 логическими процессорами

WSL 3.0.2 автоматически запрашивает виртуальную топологию NUMA для виртуальных машин WSL и WSLC. Изменение действует в Windows со сборкой 26100 или новее. На более старых сборках разработчики сохранили прежнюю конфигурацию.

Поводом стал отчёт инженера Intel Картика Гопалакришнана: Debian 13 не устанавливался и не запускался в WSL 2 на двухсокетном сервере с Intel Xeon 6 6972P, Windows Server 2025 и 384 логическими процессорами. Подсистема выдавала ошибку HCS/E_INVALIDARG. Ограничение числа процессоров до 256 в настройках WSL позволяло запустить дистрибутив.

Ранее WSL не передавала службе Host Compute Service конфигурацию NUMA, поэтому та рассматривала виртуальную машину как один виртуальный узел и сокет. Запрос на 384 процессора превышал предел в 256 процессоров на сокет. Теперь HCS может сформировать подходящую виртуальную топологию с учётом ресурсов виртуальной машины и устройства сервера. Исправление устраняет эту причину отказа запуска; результатов сравнения производительности Microsoft не опубликовала.

Экспериментальные sparse VHD и команды включения

Разработчики включили создание разреженных виртуальных дисков для дистрибутивов WSL. Настройка sparseVhd существовала и раньше, однако создание таких дисков временно блокировали из-за риска повреждения данных. В версии 3.0.2 блокировку сняли, сохранив экспериментальный статус и предупреждение при включении режима.

Разреженный виртуальный диск, или sparse VHD – виртуальный диск, файл которого не требует физического места для незаполненных областей. В WSL этот режим позволяет также освобождать место, занятое виртуальным диском, по мере освобождения его блоков.

Для новых дисков дистрибутивов WSL 2 нужно добавить настройку в файл %UserProfile%\.wslconfig. Если файл уже существует, дополните его содержимое; при наличии раздела [experimental] добавьте параметр в этот раздел:

[experimental]
sparseVhd=true

По умолчанию sparseVhd имеет значение false. Параметр применяется к создаваемым дискам и не переводит существующие дистрибутивы в разреженный режим. Диски с фиксированным размером при создании остаются неразреженными.

После изменения .wslconfig сохраните работу в Linux-приложениях и завершите WSL следующей командой в PowerShell. Она остановит все работающие дистрибутивы и виртуальную машину WSL 2:

wsl --shutdown

Для существующего дистрибутива режим включается отдельно. Например, для Ubuntu:

wsl --manage Ubuntu --set-sparse true

Вместо Ubuntu укажите точное название своего дистрибутива. Его можно посмотреть командой:

wsl --list --verbose

В WSL 3.0.2 включение sparse-режима больше не требует параметра --allow-unsafe; старый параметр продолжает приниматься для совместимости. Отключить режим можно после остановки дистрибутива:

wsl --manage Ubuntu --set-sparse false

Настройка .wslconfig относится к WSL 2. Поддержка разреженного хранилища сессий и томов WSLC развивается отдельной правкой, которая на момент публикации остаётся открытой и не входит в список изменений WSL 3.0.2.

Расположение файла и правила применения параметров описаны в документации по настройке WSL.

Заголовки ядра Linux и perf внутри дистрибутивов

WSL 3.0.2 подключает к дистрибутивам заголовочные файлы и инструменты perf, соответствующие работающему ядру Linux. Это полезно разработчикам, которым нужны заголовки для сборки кода под установленное ядро и perf для анализа производительности.

Заголовки доступны по следующему пути, где команда uname -r возвращает версию работающего ядра:

/usr/src/linux-headers-$(uname -r)

Путь сборки модулей /lib/modules/$(uname -r)/build указывает на эти заголовки. Инструменты perf размещаются в каталоге:

/usr/lib/linux-tools/$(uname -r)

WSL добавляет этот каталог в стандартный PATH и настраивает PERF_EXEC_PATH. Если дистрибутив уже содержит /usr/bin/perf, подсистема предоставляет вместо него подходящий поставляемый бинарный файл, сохраняя исходный файл дистрибутива.

Исправления сети, VPN и доступа к дискам Windows

В обычном WSL разработчики исправили перенаправление IPv4-подключений к localhost в режиме NAT, когда приложение Linux принимает соединения одновременно по IPv4 и IPv6. Ранее обработчик таких портов мог создавать в Windows только перенаправление для IPv6.

Для сетевой модели Consomme, которую использует WSLC, исправили два отдельных сценария:

  • Отключённый IPv6 внутри виртуальной машины. Ошибка настройки IPv6 на loopback-адаптере больше не приводит к отказу настройки Consomme.
  • VPN с маршрутом по умолчанию через 0.0.0.0. Ранее Consomme могла использовать этот адрес как DNS-сервер, из-за чего переставали разрешаться доменные имена, а запуск dockerd мог завершаться по тайм-ауту. Теперь подсистема использует сгенерированный адрес шлюза, если подходящий IPv4-шлюз отсутствует.

Установщик также исключает wslc.exe и wslcsession.exe из обработки сторонними поставщиками LSP в сетевом стеке Windows. Изменение связано со сбоем, при котором команды WSLC возвращали WSAEOPNOTSUPP.

Ещё одно исправление касается DrvFs – доступа к дискам Windows из Linux. После создания пользователя при первом запуске дистрибутива WSL обновляет UID и GID автоматически подключённых дисков. Ранее они могли оставаться равными 0:0 до перезапуска дистрибутива, вызывая ошибки доступа. Подключённые вручную ресурсы не перемонтируются, чтобы сохранить заданные пользователем значения UID и GID.

События WSLC: JSON, состояние контейнеров и точное время

Команда wslc events получила вывод в JSON. Каждое событие печатается отдельным объектом в новой строке, что удобно для обработки в скриптах и системах мониторинга:

wslc events --format json

Вывод содержит поля Type, Action, Actor, scope, time и timeNano; для контейнеров доступны также status, id и from. Обычный текстовый вывод сохранился. Формат близок к docker events --format json, но это не гарантирует совместимость со всеми существующими Docker-скриптами: например, WSLC скрывает собственные внутренние метки.

Разработчики добавили в поток события состояния здоровья контейнеров и сохранили наносекундную точность временных меток. При отображении времени используются девять знаков дробной части секунды и обозначение Z для UTC; фильтрация по секундам не изменилась.

События завершения процесса контейнера die и остановки stop теперь учитываются отдельно. Для die сохраняется код завершения, а события kill и stop остаются доступны даже после автоматического удаления контейнера. Также исправлено сохранение запрошенного имени образа для контейнеров с параметром -P и после восстановления.

Перенос дистрибутивов, запуск программ Windows и другие изменения

Microsoft отменила включение защиты процессов RedirectionGuard, чтобы исправить регрессию WSL 3.0.1: дистрибутив из Microsoft Store, перенесённый на другой диск через настройки Windows, мог перестать запускаться с ошибкой MountDisk/0x800701c0.

Подсистема снова восстанавливает свою запись binfmt_misc, если её перезаписывает systemd-binfmt. Эта запись нужна для запуска исполняемых файлов Windows из Linux; восстановление применяется с учётом включённого взаимодействия с Windows и настройки boot.protectBinfmt.

При создании виртуальных дисков WSL предоставляет полный доступ создавшему их пользователю и группе BUILTIN\Administrators, отключая наследование разрешений. Доступ администраторов сохраняет совместимость со старыми версиями WSL, которые открывают диски от имени SYSTEM.

В выпуск вошли и другие изменения:

  • Исправлена гонка между обращением к работающему экземпляру и его завершением, которая могла приводить к обращению к уже освобождённой памяти.
  • Установщик больше не записывает журнал установки по пути, который указывает на каталог или точку повторной обработки файловой системы.
  • Компонент Microsoft.RemoteDesktop.Client.MSRDC.SessionHost обновлён до версии 1.2.7391.
  • Обновлены код подписи ESRP и документация API WSLC SDK, переработаны отмена чтения потока событий, табличный вывод и внутренняя реализация копирования файлов контейнеров.

Как установить WSL 3.0.2

Проверить установленную версию подсистемы можно в PowerShell:

wsl --version

Для обычного обновления стабильной версии используется команда:

wsl --update

Для получения предварительных выпусков, к которым сейчас относится WSL 3.0.2, используется отдельный параметр:

wsl --update --pre-release

Эта команда запрашивает актуальный предварительный выпуск, а не закрепляет установку за версией 3.0.2. Стабильный и предварительный пакеты доступны также на странице Подсистемы Windows для Linux.

Вывод

WSL 3.0.2 наиболее полезна владельцам серверов с большим числом логических процессоров и пользователям WSLC, которые столкнулись с сетевыми сбоями или нуждаются в подробных событиях контейнеров. Разработчики Linux-приложений получают инструменты, согласованные с работающим ядром, а sparse VHD открывает возможность освобождать место без постоянного ручного сжатия виртуального диска. Проверять эти изменения пока можно в предварительном выпуске; разреженные диски дополнительно сохраняют экспериментальный статус.

© .
Комментарии и отзывы

Нашли ошибку?

Новое на сайте