Установка Linux в Windows с помощью WSL
Разработчики могут одновременно получить доступ к возможности Windows и Linux на компьютере с Windows. Подсистема Windows для Linux (WSL) позволяет разработчикам устанавливать дистрибутив Linux (например, Ubuntu, OpenSUSE, Kali, Debian, Arch Linux и т. д.) и использовать приложения Linux, служебные программы и средства командной строки Bash непосредственно в Windows, не измененные без затрат на традиционную виртуальную машину или двойную настройку.
Необходимые компоненты
Для использования приведенных ниже команд необходимо запустить Windows 10 версии 2004 и выше (сборка 19041 и выше) или Windows 11. Если вы находитесь в более ранних версиях, перейдите на страницу установки вручную.
Команда установки WSL
Теперь вы можете установить все необходимое для запуска WSL с помощью одной команды. Откройте Командную строку PowerShell или Windows в режиме администратора , щелкнув правой кнопкой мыши и выбрав команду «Запуск от имени администратора», введите команду wsl —install, а затем перезапустите компьютер.
wsl --install
Эта команда включит функции, необходимые для запуска WSL и установки дистрибутива Ubuntu для Linux. (Этот дистрибутив по умолчанию можно изменить.)
Если вы используете более раннюю сборку или не хотите использовать команду для установки и вам нужны пошаговые инструкции, см. статью Действия по установке WSL вручную для старых версий.
При первом запуске недавно установленного дистрибутива Linux откроется окно консоли. Вам будет предложено подождать, пока файлы будут распакованы и сохранены на компьютере. Все будущие запуски должны занимать меньше секунды.
Приведенная выше команда работает, только если WSL не установлена вообще. Если вы выполнили wsl —install и видите текст справки WSL, попробуйте выполнить wsl —list —online , чтобы просмотреть список доступных дистрибутивов. Затем выполните wsl —install -d для установки дистрибутива. Сведения об удалении WSL см. в разделе Удаление устаревшей версии WSL или Отмена регистрации или удаление дистрибутива Linux.
Изменение установленного дистрибутива Linux по умолчанию
По умолчанию в качестве устанавливаемого дистрибутива Linux используется Ubuntu. Для этого используйте флаг -d .
- Чтобы изменить установленный дистрибутив, введите wsl —install -d . Замените именем дистрибутива, который хотите установить.
- Чтобы просмотреть список доступных дистрибутивов Linux, доступных для скачивания через Интернет-магазин, введите wsl —list —online или wsl -l -o .
- Чтобы установить дополнительные дистрибутивы Linux после исходной установки, можно также использовать команду wsl —install -d .
Если вы хотите установить дополнительные дистрибутивы из командной строки Linux или Bash (а не из PowerShell или командной строки), используйте .exe в команде wsl.exe —install -d . Чтобы получить список доступных дистрибутивов, используйте wsl.exe -l -o .
Если во время установки возникла проблема, см. раздел Установка руководства по устранению неполадок.
Чтобы установить дистрибутив Linux, который не указан как доступный, можно импортировать его с помощью TAR-файла. В некоторых случаях, как с Arch Linux, можно выполнить установку с помощью файла .appx . Вы также можете создать собственный пользовательский дистрибутив Linux для использования с WSL.
Настройка сведений о пользователе Linux
После установки WSL необходимо создать учетную запись пользователя и пароль для установленного дистрибутива Linux. Дополнительные сведения см. в статье Рекомендации по настройке среды разработки WSL.
Советы и рекомендации
Мы рекомендуем использовать наше пошаговое руководство Рекомендации по настройке среды разработки WSL. В нем описано, как настроить имя пользователя и пароль для установленных дистрибутивов Linux, использовать основные команды WSL, установить и настроить Терминал Windows, настроить управление версиями Git, отредактировать код и выполнить отладку с помощью удаленного сервера VS Code. Кроме того, в руководстве приведены рекомендации по хранению файлов, настройке базы данных, подключению внешнего диска, настройке ускорения GPU и пр.
Проверьте, какая версия WSL запущена
Вы можете получить список установленных распределений Linux и проверить версию WSL, задав команду wsl -l -v в PowerShell или в Командной строке Windows.
Чтобы задать значение WSL 1 или WSL 2 для версии по умолчанию при установке нового распределения Linux, используйте команду wsl —set-default-version , заменив на 1 или 2.
Чтобы определить распределение Linux по умолчанию для использования с командой wsl , введите wsl -s или wsl —set-default , заменив именем распределения Linux, который вы хотите использовать. Например, в PowerShell или CMD введите wsl -s Debian , чтобы задать для распределения значение по умолчанию — Debian. Теперь запуск wsl npm init в PowerShell приведет к выполнению npm init команды в Debian.
Чтобы запустить определенное распределение WSL из PowerShell или Командной строки Windows без изменения распределения по умолчанию, выполните команду wsl -d , заменив именем распределения, которое вы хотите использовать.
Дополнительные сведения см. в руководстве по основным командам для WSL.
Обновление версии WSL 1 до WSL 2
Для новых установок Linux, выполненных с помощью команды wsl —install , по умолчанию будет задано WSL 2.
С помощью команды wsl —set-version можно перейти с версии WSL 2 на WSL 1 или обновить ранее установленные дистрибутивы Linux с версии WSL 1 до WSL 2.
Чтобы проверить, какая установлена версия распределения Linux — WSL 1 или WSL 2, — выполните команду wsl -l -v .
Для изменения версий выполните команду wsl —set-version 2 , заменив именем дистрибутива Linux, который требуется обновить. Например, команда wsl —set-version Ubuntu-20.04 2 настроит распределение Ubuntu 20,04 на использование WSL 2.
Если вы установили WSL вручную, до того как команда wsl —install стала доступна, возможно, вам также потребуется включить необязательный компонент виртуальной машины, используемый WSL 2, и установить пакет ядра, если это еще не сделано.
Список команд WSL см. в справочнике по командам для WSL; рекомендации по использованию одной из версий в рабочем сценарии см. в статье со сравнением WSL 1 и WSL 2; для получения общих сведений о настройке надлежащего рабочего процесса разработки с помощью WSL ознакомьтесь с рекомендациями по настройке среды разработки WSL.
Способы запуска нескольких распределений Linux с помощью WSL
WSL поддерживает запуск неограниченного количества различных распределений Linux. Сюда входит выбор распределений из Microsoft Store, импорт настраиваемого распределенияили создание собственного пользовательского распределения.
Существует несколько способов запуска распределений Linux после их установки:
- Установка Терминал Windows(Рекомендуется)С помощью Терминал Windows поддерживает столько команд, сколько вы хотите установить, и позволяет открывать их на нескольких вкладках или панелях окон и быстро переключаться между несколькими дистрибутивами Linux или другими командными строками (PowerShell, командная строка, Azure CLI и т. д.). Вы можете полностью настроить терминал, используя уникальные цветовые схемы, стили шрифтов, размеры, фоновые изображения и пользовательские сочетания клавиш. Подробнее.
- Вы можете напрямую открыть распределение Linux, для этого откройте меню «Пуск» Windows и введите имя установленного распределения. Например, «Ubuntu». Откроется Ubuntu в собственном окне консоли.
- В Командной строке Windows или PowerShell можно ввести имя установленного распределения. Например: ubuntu
- Из PowerShell или командной строки Windows можно открыть распределение Linux по умолчанию в текущей командной строке, введя wsl.exe .
- Из PowerShell или командной строки Windows можно использовать распределение Linux по умолчанию в текущей командной строке без ввода новой, введя команду wsl [command] . Замена [command] командой WSL, например wsl -l -v для вывода списка установленных распределений или wsl pwd , чтобы узнать место подключения текущего пути к каталогу в WSL. В PowerShell команда get-date предоставит дату из файловой системы Windows, а wsl date предоставит дату из файловой системы Linux.
Выбранный метод должен зависеть от ваших действий. Если вы открыли командную строку WSL в Командной строке Windows или окне PowerShell и хотите выйти, введите команду exit .
Хотите испытать новейшие предварительные версии функций WSL?
Чтобы поработать с самыми последними функциями или обновлениями для WSL, присоединитесь к Программе предварительной оценки Windows. Когда вы присоединитесь к участникам Программы предварительной оценки Windows, вы сможете выбрать канал для получения предварительных сборок в меню параметров Windows и будете автоматически получать предварительные версии функций и обновления для WSL, связанные с этой сборкой. Варианты:
- Канал разработчика: последние обновления, но низкая стабильность.
- Бета-канал: идеально подходит для ранних последователей; более надежные сборки, чем в канале разработки.
- Канал предварительного выпуска: предварительные версии исправлений и основных функций следующей версии Windows непосредственно перед предоставлением их общедоступной версии.
Дополнительные ресурсы
Установка и использование подсистемы Linux (WSL 2) в Windows

24.10.2023

Sergey Bo

Linux, Ubuntu, Windows 10, Windows 11, Windows Server 2019

комментариев 17
Среда Windows Subsystem for Linux (WSL) позволяет запускать нативные приложения, писать скрипты, выполнять команды и скрипты Linux непосредственно из Windows без использования эмуляторов или развертывания выделенных виртуальных машин. Актуальной версией среды является WSL 2, в которой используется полноценное ядро Linux (версия ядра 5.15) и обеспечивает полную совместимость с системными вызовами. Образ ядра Linux в WSL представляет собой легкую виртуальную машину, для запуска которой не нужно устанавливать полноценную роль Hyper-V.
Как установить Windows Subsystem for Linux (WSL2)?
Компонент WSL по умолчанию отключен в Windows. Современных дистрибутивах Windows 10 и Windows 11 для установки среды WSL достаточно выполнить команду:
Этак команда автоматически включит все необходимые компоненты Windows, необходимые для работы WSL, установить обновление ядра Linux для WSL2, загрузит дистрибутив Ubuntu (по-умолчанию) и установит его в WSL.

Осталось перезагрузить компьютер, и вы можете запускать среду WSL!
Вы можете установить для WSL другой дистрибутив Linux. Выведите список доступных дистрибутивов:
wsl —list —online
Укажите имя дистрибутива Linux, который установить в WSL. Например:
wsl —install -d kali-linux

Если в BIOS/UEFI компьютера не включена виртуализация, при установке WSL вы получите ошибку:
Installation failed with error 0x80070003 or error 0x80370102” it means that Bios Level Virtualization is not enabled on your computer.
Вы можете установить WSL2 в Windows вручную. Для этого придется вручную последовательно выполнить все этапы, который команда wsl —install запускала автоматически:
- Установить WSL
- Включить компонент виртуалзации VirtualMachinePlatform
- Установить ядро WSL 2
- Скачать и установить дистрибутив Linux для WSL
Сначала установите следующие компоненты Windows:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

Скачаем и установим обновление ядра Linux для WSL2 (WSL2 Linux kernel update package for x64 machines — https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi). Можете скачать пакет вручную или с помощью PowerShell:
Invoke-WebRequest -Uri https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi -OutFile «$($env:userprofile)\Downloads\wsl_update_x64.msi» -UseBasicParsing
Invoke-Item «$($env:userprofile)\Downloads\wsl_update_x64.msi»
rm «$($env:userprofile)\Downloads\wsl_update_x64.msi»

Еще раз перезагрузите компьютер и назначьте версию WSL 2 в качестве среды по-умолчанию:
wsl —set-default-version 2

WSL: Установка дистрибутива Linux в Windows
После того, как ядро WSL установлено в Windows, вы можете установить один или несколько дистрибутивов Linux на компьютер.
Можно установить пакет с дистрибутивом Linux через Microsoft Store. Доступны следующие дистрибутивы:
- Ubuntu
- Debian
- Kali Linux
- OpenSUSE
- Oracle Linux
- SUSE Linux Enterprise Server
- Fedora
Найдите нужную версию дистрибутива в Store и установите ее, нажав кнопку Получить (Get).

Если у вас отключен Windows Store, вы хотите установить дистрибутив WSL в Core редакции Windows Server или вам нужно установить WSL на Изолированном от интернета компьютере (оффлайн), вы можете скачать дистрибутив Ubuntu с помощью PowerShell командлета Invoke-WebRequest:
Invoke-WebRequest https://aka.ms/wslubuntu2204 -OutFile ubuntu-2204.appx –UseBasicParsing
Установите пакет для WSL с помощью:

После окончания установки появится окно, в котором вам будет предложено указать имя пользователя и пароль для вашего дистрибутива.

После установки вы можете в меню Пуск появится отдельная программа для запуска Linux.

Также вы можете запустить ваш Linux из отдельной вкладки Windows Terminal или с помощью команды wsl .
Команды для управления WSL в Windows
Рассмотрим основные команды для управления ядром и дистрибутивами Linux в WSL.
Проверить текущую версию ядра WSL:

Обновить ядро WSL вручную:
Откатится к предыдущему ядру WSL:
wsl —update rollback
Вывести список установленных версий Linux:
Вывести дистрибутив Linux, который используется по-умолчанию:
Дистрибутив Linux по-умолчанию в WSL можно изменить:
wsl —setdefault Ubuntu

Запустить определенный дистрибутив в WSL:
wsl -d kali-linux
Завершить среду WSL:
Можно войти в WSL Ubuntu под root и сбросить пароль:
ubuntu config —default-user root
Passwd
Вернуть пользователя по умолчанию
ubuntu config —default-user your_username
Для настройки параметров WSL и дистрибутивов Linux используются конфиг файлы:
- wsl.conf – файл с настройками конкретного дистрибутива Linux (находится в директории /etc)
- .wslconfig – глобальные настройки WSL, которые применяются ко всем дистрибутовам (находится в профиле пользователя в %UserProfile% )
Например, если вы хотите ограничить использование оперативной памяти и CPU компьютера дистрибутивами Linux в WSL, создайте такой файл %UserProfile%\.wslconfig :
[wsl2] memory=2GB processors=2
Использование Linux в среде WSL
Дистрибутив Linux, установленный в WSL является полноценной операционной системой. Поэтому после установки рекомендуется выполнить обновление пакетов. Для Ubuntu выполните команду:
$ sudo apt-get update && sudo apt-get upgrade -y

Файловая система вашего дистрибутива Linux хранится в профиле пользователя в виде VHDX файла. Например, виртуальный диск Ubuntu хранится в папке %USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState

Файловая система Linux в WSL монтируется в виде сетевой папки прямо в проводник Windows.

Также для прямого доступа к файлам WSL из Windows можно использовать UNC путь. Например:
В свою очередь локальные диски Windows монтируются в WSL в папку mnt. Вывести список файлов папок на диске C:

Другие примеры запуска Linux команд из Windows:
dir | wsl grep Sa
wsl ls ‑la > 123.txt
wsl ls ‑la /proc/cpuinfo
wsl ls ‑la “/mnt/c/Program Files”
Вы можете установить любые пакеты в Linux. Например, установите файловый менеджер Midnight Commander:
$ sudo apt-get install mc
Для доступа к физическим USB устройства из WSL можно использоваь пакет usbipd-win.
В современной версии WSL 2 вы можете запускать из Windows любые приложения Linux с графическим интерфейсом (X11 и Wayland). Например, установите графический редактор:
$ sudo apt install gimp -y
Чтобы запустить его из Windows просто выполните команду:
Предыдущая статья Следующая статья
Читайте далее в разделе Linux Ubuntu Windows 10 Windows 11 Windows Server 2019



Mailcow: готовый почтовый сервер на postfix+dovecot+SOGo на Docker контейнерах
Установка KMS сервера vlmcsd на Linux для активации Windows и Office
Установка и настройка GLPI и FusionInventory, инвентаризация ИТ инфраструктуры
IPMI: настройка и удаленное управление серверами Supermicro
Как решить проблему «wsl : Имя «wsl» не распознано как имя командлета. «?

Ввожу «wsl —install» Появляется следующая ошибка: Подозреваю, что тот, кто ставил винду, ставил минимальную сборку «без мусора». Концы сейчас не найти, а wsl2 нужен. Подскажите, как установить wsl 2?
- Выпуск Windows 11 Pro
- Версия 21H2
- Дата установки 02.12.2022
- Сборка ОС 22000.318
- Взаимодействие Windows Feature Experience Pack 1000.22000.318.0

В списке компонентов Windows WSL я не нашел
Отслеживать
задан 18 фев 2023 в 17:52
444 1 1 серебряный знак 16 16 бронзовых знаков
Панель управления\Все элементы панели управления\Программы и компоненты\Включение отключение компонентов Windows
18 фев 2023 в 17:57
@user7860670 см UPD
Имя wsl не распознано как имя командлета
Всего сообщений: 27
Установка ядра на планшет, скомпилированного в WSL
bay trail void wsl
Как так получается?
fsf stallman wsl
WSL1 в упор не видит tarболл для импорта контейнера
wsl wsl1 контейнеры
Не работает MOCP и ffmpeg на WSL Ubuntu 20.04 > Windows 11
ffmpeg mocp wsl
Дистрибутив Oracle Linux 8.5 теперь доступен в Microsoft Store

Почему многие любят ругать cmd.exe, или «почему не WSL»
X11, Wayland, PulseAudio и OpenGL в WSL на Windows 10
Устранение неполадок подсистемы Windows для Linux
Мы рассмотрели некоторые распространенные сценарии устранения неполадок с WSL, но также вы можете просмотреть сведения о проблемах, опубликованные в репозитории продуктов WSL в GitHub.
Регистрация сведений о проблеме, отчета об ошибке, запроса на функцию
- Выполнять поиск сведений о существующих проблемах, чтобы найти информацию, связанную с возникшей проблемой. Обратите внимание, что в строке поиска можно удалить is:open, чтобы включить в результаты поиска проблемы, которые уже были решены. Рассмотрите возможность комментирования или одобрения любых открытых проблем, чтобы выразить свою заинтересованность в их продвижении в качестве приоритетных.
- Регистрировать сведения о новых проблемах. Если вы обнаружили проблему с WSL, о которой нет упоминаний, вы можете нажать зеленую кнопку New issue (Новая проблема), а затем выбрать элемент WSL — Bug Report (WSL — отчет об ошибках). Вам нужно будет включить название проблемы, номер сборки Windows (выполните cmd.exe /c ver , чтобы узнать номер текущей сборки), независимо от того, используете ли вы WSL 1 или WSL 2, текущую версию ядра Linux (выполните wsl.exe —status или cat /proc/version ), номер версии дистрибутива (выполните lsb_release -r ), а также любые другие версии используемого программного обеспечения, сведения о действиях для воспроизведения, ожидаемом поведении, фактическом поведении, а также журналы диагностики, если они доступны и применимы. Дополнительные сведения см. в разделе, посвященном вкладу в WSL.
- Отправить запрос на функцию, нажав зеленую кнопку New issue (Новая проблема) и выбрав Feature request (Запрос на функцию). Вам нужно будет ответить на несколько вопросов, описывающих ваш запрос.
Кроме того, вы можете сделать следующее:
- Зарегистрировать сведения о проблеме с документацией, используя репозиторий документов WSL. Чтобы внести изменения в документацию по WSL, ознакомьтесь с руководством для участников разработки портала «Документация» Майкрософт.
- Зарегистрировать сведения о проблеме с Терминалом Windows, используя репозиторий продуктов Терминала Windows, если проблема связана с Терминалом Windows, консолью Windows или пользовательским интерфейсом командной строки.
Проблемы с установкой
- Сбой установки с ошибкой 0x80070003
- Подсистема Windows для Linux работает только на системном диске (обычно это диск C: ). Убедитесь, что дистрибутивы хранятся на системном диске.
- В Windows 10 откройте Параметры —>System —>служба хранилища ->More служба хранилища Параметры: изменение места сохранения нового содержимого

- В Windows 11 откройте Параметры ->System ->служба хранилища ->Advanced storage settings ->Where new content is saved

- Сбой WslRegisterDistribution с ошибкой 0x8007019e
- Дополнительный компонент «Подсистема Windows для Linux» не включен.
- Выберите Панель управления ->Программы и компоненты ->Включение или отключение компонентов Windows -> установите флажок Подсистема Windows для Linux или используйте командлет PowerShell, упомянутый в начале этой статьи.
- Сбой установки с ошибкой 0x80070003 или ошибкой 0x80370102.
- Убедитесь, что в BIOS вашего компьютера включена виртуализация. Расположение этого параметра зависит от компьютера, но обычно он находится в разделе настроек ЦП в BIOS.
- Для WSL2 требуется, чтобы ЦП поддерживал функцию преобразования адресов второго уровня (SLAT), которая появилась в процессорах Intel Nehalem (Intel Core 1-го поколения) и AMD Opteron. Более старые ЦП (например, Intel Core 2 Duo) не смогут запускать WSL2, даже если платформа виртуальной машины успешно установлена.
- При попытке обновления возникает ошибка Invalid command line option: wsl —set-version Ubuntu 2 .
- Убедитесь, что у вас включена подсистема Windows для Linux и используется сборка Windows 18362 или выше. Чтобы включить WSL, выполните эту команду в командной строке PowerShell с правами администратора: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux .
- Не удалось завершить запрошенную операцию из-за ограничения системы виртуального диска. Файлы виртуального жесткого диска должны быть распакованными, незашифрованными и не разреженными.
- Отмените выбор «Сжатие содержимого» (а также «Шифрование содержимого», если это проверка) путем открытия папки профиля для дистрибутива Linux. Он должен находиться в подпапке файловой системы Windows, для примера: %USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited. .
- В этом профиле дистрибутива Linux должна находиться папка LocalState. Щелкните эту папку правой кнопкой мыши, чтобы отобразить меню параметров. Выберите «Свойства > дополнительно», а затем убедитесь, что флажки «Сжатие содержимого для экономии места на диске» и «Шифрование содержимого для защиты данных проверка» не выбраны (не проверка). Если вам будет предложено применить это только к текущей папке или ко всем вложенным папкам и файлам, выберите «только эта папка», так как вы очищаете флаг сжатия. После этого команда wsl —set-version будет работать правильно.

В этом примере папка LocalState для дистрибутива Ubuntu 18.04 расположена по адресу C:\Users\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc.
Чтобы получать обновленные сведения, проверьте ветку № 4103 в документации GitHub WSL, где отслеживается эта проблема.
- Термин WSL не распознан как имя командлета, функции, файла скрипта или действующей программы.
- Убедитесь, что установлен дополнительный компонент Подсистема Windows для Linux. Кроме того, эта ошибка возникнет, если вы используете устройство ARM64 и выполняете эту команду в PowerShell. Вместо этого запустите wsl.exe из PowerShell Core или командной строки.
- Если эта ошибка возникает после установки дистрибутивов WSL, выполните следующие действия:
- Запустите дистрибутив минимум один раз, прежде чем вызывать его из командной строки.
- Проверьте, не выполняются ли две отдельные учетные записи пользователей. Выполнение основной учетной записи пользователя с повышенными разрешениями (в режиме администратора) не должно приводить к этой ошибке. Но следует убедиться, что вы случайно не запустили встроенную учетную запись администратора, поставляемую в Windows. Это отдельная учетная запись пользователя, для которой установленные дистрибутивы WSL не будут отображаться по умолчанию. Дополнительные сведения см. в статье Включение и отключение встроенной учетной записи администратора.
- Исполняемый файл WSL устанавливается только в собственный системный каталог. При выполнении 32-разрядного процесса в 64-разрядной системе Windows (в ARM64 в любом несобственном сочетании) для размещенного несобственного процесса доступна другая папка System32. (Один 32-разрядный процесс отображается на диске x64 Windows на диске \Windows\SysWOW64.) Вы можете получить доступ к системе native32 из размещенного процесса, выполнив поиск в виртуальной папке: \Windows\sysnative Хотя фактически эта папка не будет присутствовать на диске, сопоставитель путей в файловой системе найдет ее.
- Чтобы установить пакет обновления MSI для ядра Linux, нужно сначала включить WSL. В случае сбоя отображается следующее сообщение: This update only applies to machines with the Windows Subsystem for Linux .
- Есть три возможные причины, по которым вы видите это сообщение:
- Вы используете старую версию Windows, которая не поддерживает WSL 2. Требования к версиям и ссылки пакеты обновления см. на шаге 2.
- Компонент WSL не включен. Необходимо вернуться к шагу 1 и убедиться, что на компьютере включен необязательный компонент WSL.
- Когда он будет включен, перезагрузите компьютер, чтобы изменения вступили в силу, и повторите попытку.
- Эта ошибка возникает, если пакет ядра Linux отсутствует в папке %SystemRoot%\system32\lxss\tools. Чтобы устранить ошибку, установите пакет обновления MSI для ядра Linux, как описано на шаге 4 в этих инструкциях по установке. Возможно, вам потребуется удалить пакет MSI в разделе Установка и удаление программ, а затем снова установить его.
Распространенные проблемы
Я использую Windows 10 версии 1903, но не вижу параметры для WSL 2.
Скорее всего, это связано с тем, что на компьютере еще не установлены исправления для WSL 2. Чтобы решить эту проблему самым простым способом, перейдите в параметры Windows, нажмите кнопку «Проверить наличие обновлений» и установите последние обновления в системе. Изучите полные инструкции по получению исправления для старой версии.
Если после нажатия кнопки «Проверить наличие обновлений» вы не получили обновление, можно установить исправления KB4566116 вручную.
Ошибка: 0x1bc, когда wsl —set-default-version 2
Это может произойти, если язык интерфейса или язык системы не является английским.
wsl --set-default-version 2 Error: 0x1bc For information on key differences with WSL 2 please visit https://aka.ms/wsl2Фактическая ошибка для 0x1bc :
WSL 2 requires an update to its kernel component. For information please visit https://aka.ms/wsl2kernelСм. сведения о проблеме 5749.
Не удается получить доступ к файлам WSL из Windows
Файловый сервер протокола 9p предоставляет службу на стороне Linux, которая позволяет Windows получить доступ к файловой системе Linux. Если вы не можете получить доступ к WSL с помощью \\wsl$ в Windows, возможно, это вызвано неправильным запуском 9P.
Чтобы убедиться в этом, можно проверить журналы запуска с помощью команды dmesg |grep 9p . Если ошибки есть, отобразятся сведения о них. Выходные данные выглядят следующим образом:
[ 0.363323] 9p: Installing v9fs 9p2000 file system support [ 0.363336] FS-Cache: Netfs '9p' registered for caching [ 0.398989] 9pnet: Installing 9P2000 supportСм . этот поток GitHub для дальнейшего обсуждения этой проблемы.
Не удается запустить дистрибутив WSL 2, а в выходных данных отображается только WSL 2.
Если язык интерфейса не английский, возможно, отображается усеченная версия текста ошибки.
C:\Users\me>wsl WSL 2Чтобы устранить эту проблему, перейдите по адресу https://aka.ms/wsl2kernel и установите ядро вручную, следуя инструкциям на этой странице документации.
command not found при выполнении Windows .exe в Linux
Пользователи могут запускать исполняемые файлы Windows, например notepad.exe, прямо в среде Linux. Но иногда это действие приводит к ошибке «Команда не найдена», как показано ниже:
$ notepad.exe -bash: notepad.exe: command not foundЕсли в $PATH нет путей Win32, взаимодействие не будет находить exe.exe. Чтобы проверить это, выполните echo $PATH в среде Linux. Ожидается, что в выходных данных появится путь Win32 (например, /mnt/c/Windows). Если вы не видите эти пути Windows, скорее всего переменная PATH перезаписана оболочкой Linux.
Ниже приведен пример файла /etc/profile на ОС Debian, который вызывал такую проблему:
if [ "`id -u`" -eq 0 ]; then PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" else PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" fiЧтобы решить эту проблему в среде Debian, нужно удалить приведенные выше строки. Вы также можете добавить значения в переменную $PATH во время назначения, как показано ниже, но это может вызвать другие проблемы с WSL и VSCode.
if [ "`id -u`" -eq 0 ]; then PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH" else PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:$PATH" fiДополнительные сведения см. в описании проблем 5296 и 5779.
«Ошибка: 0x80370102 не удалось запустить виртуальную машину, так как требуемая функция не установлена».
Включите компонент платформы виртуальных машин Windows и убедитесь, что в BIOS включена виртуализация.
- Проверка требований к системе Hyper-V
- Если компьютер является виртуальной машиной, включите вложенную виртуализацию вручную. Запустите PowerShell с администратором и выполните следующую команду, заменив имя виртуальной машины на хост-системе (вы можете найти имя в диспетчере Hyper-V):
Set-VMProcessor -VMName -ExposeVirtualizationExtensions $truebcdedit /enum | findstr -i hypervisorlaunchtypeЕсли вы видите hypervisorlaunchtype Off , это значит, что гипервизор отключен. В окне PowerShell с повышенными привилегиями выполните следующее:
bcdedit /set hypervisorlaunchtype AutoУзнайте больше о том, как настроить вложенную виртуализацию при запуске Hyper-V на виртуальной машине.
WSL не имеет сетевого подключения на рабочем компьютере или в среде Enterprise
В средах Business или Enterprise могут быть настроенные параметры брандмауэра Защитника Windows для блокировки несанкционированного сетевого трафика. Если для слияния локальных правил установлено значение «Нет», сеть WSL не будет работать по умолчанию, и ваш администратор должен будет добавить правило брандмауэра, чтобы разрешить это поведение.
Чтобы подтвердить настройку слияния локальных правил:

- Откройте раздел «Брандмауэр Защитника Windows с повышенной безопасностью» (он отличается от раздела «Брандмауэр Защитника Windows» на Панели управления).
- Щелкните правой кнопкой мыши вкладку «Брандмауэр Защитника Windows с расширенной безопасностью на локальном компьютере».
- Выберите «Свойства».
- Выберите вкладку «Общедоступный профиль» в открывшемся окне.
- Выберите «Настроить» в разделе «Параметры».
- Установите флажок в открывшемся окне «Настройка параметров для общедоступного профиля», чтобы проверить, задано ли параметру «Слияние правил» значение «Нет». Это приведет к блокировке доступа к WSL.
Инструкции по изменению этого параметра брандмауэра см. в разделе «Настройка брандмауэра Hyper-V».
В WSL отсутствует подключение к сети после подключения к сети VPN
Если после подключения к VPN в Windows оболочка Bash утрачивает подключение к сети, попробуйте воспользоваться этим обходным решением в Bash. Это решение позволит вручную переопределить разрешение DNS с помощью /etc/resolv.conf .
- Запишите DNS-сервер виртуальной частной сети. Для этого выполните ipconfig.exe /all
- Создайте копию существующего resolv.conf, выполнив sudo cp /etc/resolv.conf /etc/resolv.conf.new
- Разорвите связь с текущим файлом resolv.conf, выполнив команду sudo unlink /etc/resolv.conf .
- sudo mv /etc/resolv.conf.new /etc/resolv.conf
- Измените /etc/wsl.conf и добавьте это содержимое в файл. (Дополнительные сведения об этом см. в статье Расширенная конфигурация.)
[network] generateResolvConf=false- Открытие /etc/resolv.conf и
a. Удалите первую строку из файла с комментарием, описывающим автоматическое создание.
b. Добавьте запись DNS из пункта 1 выше в качестве первой записи в списке DNS-серверов.
c. Закройте файл.
После отключения VPN необходимо будет отменить изменения в /etc/resolv.conf . Для этого введите следующее:
- cd /etc
- sudo mv resolv.conf resolv.conf.new
- sudo ln -s ../run/resolvconf/resolv.conf resolv.conf
Проблемы с VPN Cisco Anyconnect с WSL в режиме NAT
Cisco Any Подключение VPN изменяет маршруты таким образом, чтобы предотвратить работу NAT. Существует обходное решение для WSL 2. Ознакомьтесь с руководством Подключение по Администратор клиента Secure Mobility Client Администратор mobility client, выпуск 4.10. Устранение неполадок с любыми Подключение.
Проблемы с подключением WSL к виртуальным сетям при включенном режиме зеркального подключения
Зеркальный сетевой режим в настоящее время является экспериментальным параметром в конфигурации WSL. Традиционная архитектура сети NAT WSL может быть обновлена до нового сетевого режима под названием «Зеркальный сетевой режим». Если для экспериментального networkingMode параметра задано mirrored значение, сетевые интерфейсы, имеющиеся в Windows, зеркало в Linux для повышения совместимости. Дополнительные сведения см. в блоге командной строки: обновление WSL за сентябрь 2023 г.
Некоторые виртуальные сети были протестированы и подтверждены несовместимы с WSL, в том числе:
- Bitdefender версии 26.0.2.1
- OpenVPN версии 2.6.501
- «Mcafee Сейф Подключение» версии 2.16.1.124
Рекомендации при использовании автопрокси для зеркального отображения HttpProxy в WSL
Прокси-сервер HTTP/S зеркало можно настроить с помощью autoProxy параметра в экспериментальном разделе файла конфигурации WSL. При применении этого параметра обратите внимание на следующие аспекты:
- Прокси-сервер PAC: WSL настроит параметр в Linux, задав переменную среды «WSL_PAC_URL». Linux по умолчанию не поддерживает прокси-серверы PAC.
- Взаимодействие с WSLENV: определяемые пользователем переменные среды имеют приоритет над переменными среды, указанными этой функцией.
При включении следующие параметры применяются к параметрам прокси-сервера в дистрибутивах Linux:
- Переменная HTTP_PROXY среды Linux устанавливается на один или несколько прокси-серверов HTTP, установленных в конфигурации прокси-сервера Windows HTTP.
- Переменная HTTPS_PROXY среды Linux устанавливается на один или несколько прокси-серверов HTTPS , установленных в конфигурации прокси-сервера Windows HTTP.
- Переменная NO_PROXY среды Linux устанавливается для обхода всех прокси-серверов HTTP/S, найденных в целевых объектах конфигурации Windows.
- Для каждой переменной среды, кроме того WSL_PAC_URL , задано значение нижнего регистра и верхнего регистра. Например, HTTP_PROXY и http_proxy .
Дополнительные сведения см. в блоге командной строки: обновление WSL за сентябрь 2023 г.
Рекомендации по работе с сетями с туннелированием DNS
Если WSL не удается подключиться к Интернету, это может быть вызвано блокировкой DNS-вызова узла Windows. Это связано с тем, что сетевой пакет для DNS, отправленный виртуальной машиной WSL на узел Windows, блокируется существующей конфигурацией сети. Туннелирование DNS устраняет эту проблему с помощью функции виртуализации для взаимодействия с Windows напрямую, что позволяет разрешать DNS-имя без отправки сетевого пакета. Эта функция должна повысить совместимость сети и обеспечить более эффективное подключение к Интернету, даже если у вас есть VPN, определенная настройка брандмауэра или другие сетевые конфигурации.
Туннелирование DNS можно настроить с помощью dnsTunneling параметра в экспериментальном разделе файла конфигурации WSL. При применении этого параметра обратите внимание на следующие аспекты:
- Собственный Docker может иметь проблемы с подключением в WSL при включении туннелирования DNS — если сеть имеет политику блокировки трафика DNS в: 8.8.8.8.
- Если вы используете VPN с WSL, включите туннелирование DNS. Многие виртуальные сети используют политики NRPT, которые применяются только к запросам WSL DNS при включении туннелирования DNS.
- Файл /etc/resolv.conf в дистрибутиве Linux имеет максимальное ограничение на 3 DNS-сервера, в то время как Windows может использовать более 3 DNS-серверов. Использование туннелирования DNS удаляет это ограничение. Теперь все DNS-серверы Windows теперь могут использоваться Linux.
- WSL будет использовать суффиксы Windows DNS в следующем порядке (аналогично заказу, используемому клиентом Windows DNS):
- Глобальные суффиксы DNS
- Дополнительные суффиксы DNS
- Суффиксы DNS для каждого интерфейса
- Если шифрование DNS (DoH, DoT) включено в Windows, шифрование будет применено к DNS-запросам из WSL. Если пользователи хотят включить DoH, DoT в Linux, им необходимо отключить туннелирование DNS.
- Запросы DNS из контейнеров Docker (Docker Desktop или native Docker, работающих в WSL), обходят туннелирование DNS. Туннелирование DNS нельзя использовать для применения параметров и политик DNS узла к трафику Docker DNS.
- Docker Desktop имеет собственный способ (отличается от туннелирования DNS) применения параметров и политик узла к DNS-запросам из контейнеров Docker.
Дополнительные сведения см. в блоге командной строки: обновление WSL за сентябрь 2023 г.
Проблемы с управлением входящим трафиком, полученным узлом Windows на виртуальную машину WSL
При использовании зеркального сетевого режима (экспериментального networkingMode набора mirrored ) некоторый входящий трафик, полученный узлом Windows, никогда не будет размещен на виртуальной машине Linux. Этот трафик выглядит следующим образом:
- Порт UDP 68 (DHCP)
- TCP-порт 135 (разрешение конечной точки DCE)
- Порт UDP 5353 (mDNS)
- TCP-порт 1900 (UPnP)
- TCP-порт 2869 (SSDP)
- TCP-порт 5004 (RTP)
- TCP-порт 3702 (WSD)
- TCP-порт 5357 (WSD)
- TCP-порт 5358 (WSD)
WSL автоматически настраивает определенные параметры сети Linux при использовании зеркало сетевого режима. Любые пользовательские конфигурации этих параметров при использовании зеркало сетевого режима не поддерживаются. Ниже приведен список параметров WSL:
Имя параметра Значение https://sysctl-explorer.net/net/ipv4/accept_local/ Включено (1) https://sysctl-explorer.net/net/ipv4/route_localnet/ Включено (1) https://sysctl-explorer.net/net/ipv4/rp_filter/ Отключено (0) https://sysctl-explorer.net/net/ipv6/accept_ra/ Отключено (0) https://sysctl-explorer.net/net/ipv6/autoconf/ Отключено (0) https://sysctl-explorer.net/net/ipv6/use_tempaddr/ Отключено (0) addr_gen_mode Отключено (0) disable_ipv6 Отключено (0) https://sysctl-explorer.net/net/ipv4/arp_filter/ Включено (1) Проблемы с контейнером Docker в WSL2 с включенным зеркальным сетевым режимом при выполнении в пространстве имен сети по умолчанию
Существует известная проблема, из-за которой контейнеры Docker Desktop с опубликованными портами (docker run –publish/-p) не будут созданы. Команда WSL работает с командой Docker Desktop для решения этой проблемы. Чтобы обойти проблему, используйте сетевое пространство имен узла в контейнере Docker. Задайте тип сети с помощью параметра —network host, используемого в команде Docker Run. Альтернативным решением является перечисление опубликованного номера порта в ignoredPorts параметре экспериментального раздела в файле конфигурации WSL.
Суффиксы DNS в WSL
В зависимости от конфигураций в wslconfig-файле WSL будет иметь следующие суффиксы DNS:
Если для сетиMode задано значение NAT:
Вариант 1. По умолчанию суффикс DNS не настроен в Linux.
Вариант 2. Если туннелирование DNS включено (для dnsTunneling задано значение true в wslconfig) Все суффиксы WINDOWS DNS настроены в Linux, в параметре поиска /etc/resolv.conf
Суффиксы настраиваются в файле /etc/resolv.conf в следующем порядке, как и в том порядке, в котором dns-клиент Windows пытается выполнить суффиксы при разрешении имени: глобальные суффиксы DNS, а затем дополнительные суффиксы DNS, а затем суффиксы DNS интерфейса.
При изменении суффиксов WINDOWS DNS это изменение будет автоматически отражено в Linux.
Случай 3. Если туннелирование DNS отключено и DNS-прокси SharedAccess отключен (dnsTunneling имеет значение false, а dnsProxy имеет значение false в Wslconfig) Один DNS-суффикс настроен в Linux в параметре /etc/resolv.conf.
Если в DNS-суффиксах Windows есть изменение, это изменение не отражается в Linux.
Один суффикс DNS, настроенный в Linux, выбирается из суффиксов DNS для каждого интерфейса (глобальные и дополнительные суффиксы игнорируются).
Если Windows имеет несколько интерфейсов, эвристика используется для выбора одного DNS-суффикса, который будет настроен в Linux. Например, если в Windows есть VPN-интерфейс, суффикс выбирается из этого интерфейса. Если VPN-интерфейс отсутствует, суффикс выбирается из интерфейса, который, скорее всего, дает подключение к Интернету.
Если для параметра networkingMode задано значение Mirrorred:
Все суффиксы DNS Windows настроены в Linux в параметре поиска /etc/resolv.conf.
Суффиксы настраиваются в /etc/resolv.conf в том же порядке, что и в случае 2) в режиме NAT
При изменении суффиксов WINDOWS DNS это изменение будет автоматически отражено в Linux.
Примечание. Дополнительные суффиксы DNS можно настроить в Windows с помощью SetInterfaceDns Параметры — приложения Win32 | Microsoft Learn с флагом DNS_SETTING_SUPPLEMENTAL_SEARCH_LIST задан в параметре Параметры
Устранение неполадок DNS в WSL
Конфигурация DNS по умолчанию, когда WSL запускает контейнер в режиме NAT, требуется, чтобы устройство NAT на узле Windows служило DNS-сервером для контейнера WSL. Когда DNS-запросы отправляются из контейнера WSL на это устройство NAT на узле Windows, dns-пакет перенаправляются с устройства NAT в службу общего доступа на узле; ответ отправляется в обратном направлении обратно в контейнер WSL. Для этого процесса пересылки пакетов в общий доступ требуется правило брандмауэра, чтобы разрешить входящий пакет DNS, созданный службой HNS, когда WSL первоначально запрашивает HNS создать виртуальную сеть NAT для своего контейнера WSL.
Из-за этого NAT — конструктор общего доступа существует несколько известных конфигураций, которые могут нарушить разрешение имен из WSL.
1. Корпоративная может отправлять политику, которая не разрешает локальные правила брандмауэра, разрешая только определенные правила корпоративной политики.
Если это задано предприятием, созданное правило брандмауэра HNS игнорируется, так как это локально определенное правило. Для работы этой конфигурации предприятие должно создать правило брандмауэра, чтобы разрешить UDP-порту 53 в службу общего доступа, или WSL можно задать для использования туннелирования DNS. Можно увидеть, настроено ли это, чтобы не разрешать локальные правила брандмауэра, выполнив указанные ниже действия. Обратите внимание, что в этом разделе отображаются параметры для всех 3 профилей: домен, частный и общедоступный. Если он установлен в любом профиле, пакеты будут заблокированы, если виртуальный сетевой адаптер WSL назначен этим профилем (по умолчанию — общедоступный). Это только фрагмент первого профиля брандмауэра, возвращаемого в PowerShell:
PS C:\> Get-NetFirewallProfile -PolicyStore ActiveStore Name : Domain Enabled : True DefaultInboundAction : Block DefaultOutboundAction : Allow AllowInboundRules : True AllowLocalFirewallRules : FalseAllowLocalFirewallRules:False means the locally defined firewall rules, like that by HNS, will not be applied or used.
2. И Enterprise может отправлять групповые политики и параметры политики MDM, которые блокируют все правила входящего трафика.
Эти параметры переопределяют любое правило брандмауэра allow-Inbound. Таким образом, этот параметр блокирует правило брандмауэра UDP, созданное HNS, и поэтому не позволит WSL разрешать имена. Для работы этой конфигурации необходимо задать WSL для использования туннелирования DNS. Этот параметр всегда блокирует DNS-прокси NAT.
Из групповой политики:
Конфигурация компьютера \ Администратор istrative templates \ Network \ Подключение ions \ Network Подключение ions \ Брандмауэр Защитника Windows \ Профиль домена | Стандартный профиль
«Брандмауэр Защитника Windows: не разрешать исключения» — включено
Из политики MDM:
Можно увидеть, настроено ли это не разрешать правила входящего брандмауэра, выполнив следующие действия (см. приведенные выше предупреждения в профилях брандмауэра). Это только фрагмент первого профиля брандмауэра, возвращаемого в PowerShell:
PS C:\> Get-NetFirewallProfile -PolicyStore ActiveStore Name : Domain Enabled : True DefaultInboundAction : Block DefaultOutboundAction : Allow AllowInboundRules : FalseAllowInboundRules: False means that no inbound Firewall rules will be applied.
3. Пользователь проходит через Безопасность Windows настройки приложений и проверка элемент управления «Блокирует все входящие подключения, в том числе в списке разрешенных приложений».
Windows поддерживает согласие пользователя для того же параметра, который может применяться корпорацией Enterprise, на которую ссылается выше .2. Пользователи могут открыть страницу параметров «Безопасность Windows», выбрать параметр «Защита сети брандмауэра», выбрать профиль брандмауэра&, который нужно настроить (домен, частный или общедоступный), а в разделе «Входящие подключения» проверка элемент управления «Блокировать все входящие подключения, в том числе в списке разрешенных приложений».
Если это задано для общедоступного профиля (это профиль по умолчанию для виртуальной сетевой карты WSL), правило брандмауэра, созданное HNS, чтобы разрешить UDP-пакетам общий доступ будет заблокирован.
Это должно быть не проверка для конфигурации DNS-прокси NAT для работы из WSL или WSL можно задать для использования туннелирования DNS.
4. Правило брандмауэра HNS, позволяющее пакетам DNS предоставить общий доступ, может стать недопустимым, ссылаясь на предыдущий идентификатор интерфейса WSL. Это недостаток в HNS, который был исправлен с последним выпуском Windows 11. В предыдущих выпусках, если это происходит, это не легко обнаружить, но у него есть простая работа:
- Остановка WSL
- wsl.exe –shutdown
- Удалите старое правило брандмауэра HNS. Эта команда PowerShell должна работать в большинстве случаев: 1. Get-NetFirewallRule -Name «HNS*» | Get-NetFirewallPortFilter | where Protocol -eq UDP | where LocalPort -eq 53 | Remove-NetFirewallRule
- Удаление всех конечных точек HNS
- Примечание. Если HNS используется для управления другими контейнерами, такими как MDAG или Песочница Windows, они также должны быть остановлены.
- hnsdiag.exe delete all
- Перезагрузка или перезапуск службы HNS
- При перезапуске WSL HNS создаст новые правила брандмауэра, правильно предназначенные для интерфейса WSL.
При запуске WSL или установке дистрибутива возвращается код ошибки
Обновление WSL
Есть два компонента подсистемы Windows для Linux, которые могут требовать обновления.
- Чтобы обновить саму подсистему Windows для Linux, используйте команду wsl —update в PowerShell или CMD.
- Чтобы обновить определенные двоичные файлы пользователя дистрибутива Linux, используйте команду apt-get update | apt-get upgrade в дистрибутиве Linux, который требуется обновить.
Ошибки apt-get upgrade
Некоторые пакеты используют функции, которые еще не реализованы. Например, udev пока не поддерживается и вызывает несколько ошибок apt-get upgrade .
Чтобы устранить проблемы, связанные с udev , выполните следующие действия.
-
Введите приведенный ниже код в /usr/sbin/policy-rc.d и сохраните изменения.
#!/bin/sh exit 101chmod +x /usr/sbin/policy-rc.ddpkg-divert --local --rename --add /sbin/initctl ln -s /bin/true /sbin/initctl«Ошибка: 0x80040306» при установке
Это связано с тем, что мы не поддерживаем устаревшую консоль. Чтобы отключить устаревшую консоль, выполните следующие действия.
- Откройте cmd.exe
- Щелкните правой кнопкой мыши строку заголовка -> выберите «Свойства» -> снимите флажок «Использовать прежнюю версию консоли».
- Нажмите кнопку «ОК»
Ошибка: 0x80040154 после обновления Windows
Компонент «Подсистема Windows для Linux» может быть отключен во время обновления Windows. В этом случае данную функцию Windows необходимо включить заново. Инструкции по включению подсистемы Windows для Linux см. в статье Руководство по установке.
Изменение отображаемого языка
Установщик WSL попытается автоматически изменить языковой стандарт Ubuntu в соответствии с языковым стандартом установки Windows. Если это нежелательно, можно выполнить приведенную ниже команду, чтобы изменить языковой стандарт Ubuntu после завершения установки. Чтобы это изменение вступило в силу, потребуется повторно запустить bash.exe.
В следующем примере изменяется языковой стандарт на en-US :
sudo update-locale LANG=en_US.UTF8Проблемы установки после восстановления системы Windows
- Удалите папку %windir%\System32\Tasks\Microsoft\Windows\Windows Subsystem for Linux .
Примечание. Не делайте этого, если дополнительная функция полностью установлена и работает. - Включите дополнительный компонент WSL (если он еще не включен).
- Перезагрузка
- Выполните команду lxrun /uninstall /full
- Установите Bash.
Нет доступа к Интернету в WSL
Некоторые пользователи сообщили о проблемах с определенными приложениями брандмауэра, блокирующими доступ к Интернету в WSL. Сообщили о следующих брандмауэрах:
- Kaspersky
- СРЕДН.
- Avast.
- Symantec Endpoint Protection
В некоторых случаях отключение брандмауэра обеспечивает доступ. В некоторых случаях доступ блокируется просто при наличии установленного брандмауэра.
Если вы используете брандмауэр в Microsoft Defender, снимите флажок «Блокирует все входящие подключения, в том числе для приложений, указанных в списке разрешенных программ», чтобы разрешить доступ.
Ошибка «Отказ в разрешении» при проверке связи
В выпуске Windows Anniversary Update, версия 1607 для проверки связи в WSL требуются права администратора. Чтобы выполнить проверку связи, запустите Bash для Ubuntu в Windows от имени администратора или запустите bash.exe из командной строки или сеанса PowerShell с привилегиями администратора.
В более поздних версиях Windows (сборка 14926+) права администратора не требуются.
Bash перестал отвечать на запросы
Если при работе с Bash вы обнаружите, что Bash перестал отвечать на запросы (или взаимозаблокирован), помогите нам диагностировать проблему путем сбора и передачи дампа памяти. Обратите внимание на то, что выполнение этих действий приведет к сбою системы. Не делайте этого, если вас это не устраивает, либо предварительно сохраните результаты своей работы.
Сбор дампа памяти
- Измените тип дампа памяти на «Полный дамп памяти». При изменении типа дампа запишите текущий тип.
- Выполните эти действия, чтобы настроить аварийное завершение с помощью клавиатуры.
- Воспроизведите взаимоблокировку или прекращение ответа на запросы.
- Выполните аварийное завершение системы с помощью последовательности клавиш из пункта 2.
- Произойдет аварийное завершение системы и будет собран дамп памяти.
- После перезагрузки системы отправьте memory.dmp на адрес электронной почты secure@microsoft.com. По умолчанию файл дампа находится в папке %SystemRoot%\memory.dmp или C:\Windows\memory.dmp, если C: является системным диском. В письме укажите, что дамп предназначен для команды разработчиков WSL или Bash в Windows.
- Восстановите исходное значение типа дампа памяти.
Проверка номера сборки
Чтобы узнать архитектуру компьютера и номер сборки Windows, выберите
Параметры>Система>О программе
Найдите поля Сборка ОС и Тип системы.
Чтобы найти номер сборки Windows Server, выполните в PowerShell следующую команду.
systeminfo | Select-String "^OS Name","^OS Version"Подтверждение включения WSL
Вы можете убедиться, что подсистема Windows для Linux включена, выполнив следующую команду в окне PowerShell повышенного уровня:
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-LinuxПроблемы с подключением к серверу OpenSSH
При попытке подключиться к серверу SSH произошел сбой следующей ошибки: «Подключение ion закрыт 127.0.0.0.1 порт 22».
-
Убедитесь, что сервер OpenSSH работает
sudo service ssh statussudo service ssh stop sudo /usr/sbin/sshd -ddebug1: sshd version OpenSSH_7.2, OpenSSL 1.0.2g 1 Mar 2016 debug1: key_load_private: incorrect passphrase supplied to decrypt private key debug1: key_load_public: No such file or directory Could not load host key: /etc/ssh/ssh_host_rsa_key debug1: key_load_private: No such file or directory debug1: key_load_public: No such file or directory Could not load host key: /etc/ssh/ssh_host_dsa_key debug1: key_load_private: No such file or directory debug1: key_load_public: No such file or directory Could not load host key: /etc/ssh/ssh_host_ecdsa_key debug1: key_load_private: No such file or directory debug1: key_load_public: No such file or directory Could not load host key: /etc/ssh/ssh_host_ed25519_keyЕсли вы видите такие сообщения и в разделе /etc/ssh/ отсутствуют ключи, потребуется повторно создать ключи или просто очистить и установить сервер OpenSSH.
sudo apt-get purge openssh-server sudo apt-get install openssh-serverСообщение «Указанная сборка не найдена» может появиться при включении дополнительного компонента WSL.
Данная ошибка связана с неправильным состоянием установки. Чтобы устранить эту проблему, выполните следующие действия.
- Если вы используете команду включения компонента WSL в PowerShell, попробуйте использовать графический пользовательский интерфейс. Для этого откройте меню «Пуск», выполните поиск фразы «Включение или отключение компонентов Windows», а затем из списка выберите «Подсистема Windows для Linux». Этот дополнительный компонент будет установлен.
- Обновите версию Windows, выбрав «Параметры» > «Обновления» и щелкнув «Проверить наличие обновлений».
- Если оба способа не помогли и вам нужно использовать WSL, рассмотрите возможность обновления на месте, переустановив Windows с установочного носителя и выбрав параметр «Сохранить все», чтобы сохранить свои приложения и файлы. Инструкции по такой установке можно найти на странице Переустановка Windows 10.
Правильные (связанные с SSH) ошибки разрешений
Если вы видите эту ошибку:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0777 for '/home/user/.ssh/private-key.pem' are too open.Чтобы устранить эту проблему, добавьте следующий текст в файл /etc/wsl.conf :
[automount] enabled = true options = metadata,uid=1000,gid=1000,umask=0022Обратите внимание, что добавление этой команды будет включать метаданные и изменять разрешения для файлов Windows, показанных в WSL. См. сведения о разрешениях файловой системы.
Не удается удаленно использовать WSL с помощью OpenSSH в Windows
Если вы используете opensh-server в Windows и пытаетесь удаленно получить доступ к WSL, вы увидите эту ошибку:
The file cannot be accessed by the system.Это известная проблема при использовании версии WSL в Магазине. Вы можете обойти эту проблему сегодня с помощью WSL 1 или с помощью версии WSL в Windows. Дополнительные сведения см. в разделе https://aka.ms/wslstoreinfo .
Выполнение команд Windows завершается сбоем в дистрибутиве
Некоторые дистрибутивы, доступные в Microsoft Store, еще не полностью поддерживают выполнение команд Windows. Если при выполнении powershell.exe /c start . или любой другой команды Windows возникает ошибка -bash: powershell.exe: command not found , ее можно устранить, выполнив следующие действия:
- В дистрибутиве WSL выполните echo $PATH .
Если /mnt/c/Windows/system32 отсутствует, что-то переопределяет стандартную переменную PATH. - Проверьте параметры профиля с помощью cat /etc/profile .
Если присутствует назначение переменной PATH, измените файл, чтобы закомментировать блок назначения PATH, используя символ #. - Проверьте, существует ли файл wsl.conf ( cat /etc/wsl.conf ), и убедитесь, что он не содержит appendWindowsPath=false . В противном случае закомментируйте эту строку.
- Перезапустите дистрибутив, введя wsl -t , после чего следует имя дистрибутива, либо выполните wsl —shutdown в cmd или PowerShell.
Не удается выполнить загрузку после установки WSL 2
Мы осведомлены о проблемах, из-за которых пользователям не удается выполнить загрузку после установки WSL 2. Пока мы полностью диагностировали эту проблему, от пользователей поступали сообщения о том, что помочь в ее устранении может изменение размера буфера или установка правильных драйверов. Просмотрите эту проблему GitHub, чтобы просмотреть последние обновления по этой проблеме.
Ошибки WSL 2, возникающие при отключении ICS
Совместное использование подключения к Интернету (ICS) — обязательный компонент WSL 2. Служба ICS используется сетевой службой узлов (HNS) для создания базовой виртуальной сети. На ее основе в WSL 2 реализуется работа с NAT, DNS и DHCP, а также совместное использование подключения к узлу.
Если отключить службу ICS (SharedAccess) или ICS через групповую политику, нельзя будет создать сеть WSL службы HNS. Это приведет к сбоям при создании нового образа WSL версии 2 и возникновению указанной ниже ошибки при попытке преобразовать образ версии 1 в образ версии 2.
There are no more endpoints available from the endpoint mapper.Для систем, требующих использования WSL 2, нужно оставить службу ICS (SharedAccess) в состоянии запуска по умолчанию «Вручную (активировать запуск)», а любую политику, запрещающую ICS следует перезаписать или удалить. Отключение службы ICS приведет к нарушению работы WSL 2, и мы не рекомендуем отключать ICS, однако некоторые части ICS можно отключить с помощью этих инструкций.
Использование более старых версий Windows и WSL
Есть несколько отличий, которые следует учитывать, если вы используете более раннюю версию Windows и WSL, например Windows 10 Creators Update (октябрь 2017 г., сборка 16299) или Anniversary Update (август 2016 г., сборка 14393). Рекомендуется выполнить обновление до последней версии Windows, но если это невозможно, ознакомьтесь с некоторыми из описанных ниже различий.
Особенности взаимодействия команд:
- bash.exe заменен на wsl.exe ; Команды Linux можно запускать из командной строки Windows или из PowerShell, но для ранних версий Windows может потребоваться использовать bash эту команду. Например: C:\temp> bash -c «ls -la» . Команды WSL, передаваемые в bash -c , перенаправляются в процесс WSL без изменения. Пути к файлам должны быть указаны в формате WSL, кроме того, необходимо внимательно экранировать соответствующие знаки. Пример: C:\temp> bash -c «ls -la /proc/cpuinfo» или C:\temp> bash -c «ls -la \»/mnt/c/Program Files\»» .
- Чтобы узнать, какие команды доступны для определенного дистрибутива, выполните команду [distro.exe] /? . Например, с Ubuntu: C:\> ubuntu.exe /? .
- путь Windows включен в переменную $PATH WSL.
- При вызове средства Windows из дистрибутива WSL в ранних версиях Windows 10 необходимо указать путь к каталогу. Например, чтобы вызвать приложение Windows «Блокнот» из командной строки WSL, введите /mnt/c/Windows/System32/notepad.exe .
- Чтобы изменить пользователя по умолчанию для использования root этой команды в PowerShell, введите C:\> lxrun /setdefaultuser root и выполните Bash.exe, чтобы выполнить вход: C:\> bash.exe . Сбросьте пароль с помощью команды $ passwd username для паролей для дистрибутивов и закройте командную строку Linux: $ exit . В командной строке Windows или PowerShell сбросьте настройки пользователя по умолчанию до стандартной учетной записи пользователя Linux: C:\> lxrun.exe /setdefaultuser username .
Удаление устаревшей версии WSL
Если первоначально вы установили WSL в Windows 10 Creators Update (октябрь 2017 г., сборка 16299), рекомендуется перенести все необходимые файлы, данные и пр. из старого дистрибутива Linux в более новый дистрибутив, установленный с помощью Microsoft Store. Чтобы удалить устаревший дистрибутив с компьютера, выполните следующую команду в командной строке или экземпляре PowerShell: wsl —unregister Legacy . Кроме того, вы можете вручную удалить устаревший дистрибутив, удалив папку %localappdata%\lxss\ (и все ее содержимое) с помощью проводника Windows или PowerShell: rm -Recurse $env:localappdata/lxss/ .
Как решить проблему «wsl : Имя «wsl» не распознано как имя командлета. «?

Ввожу «wsl —install» Появляется следующая ошибка: Подозреваю, что тот, кто ставил винду, ставил минимальную сборку «без мусора». Концы сейчас не найти, а wsl2 нужен. Подскажите, как установить wsl 2?
- Выпуск Windows 11 Pro
- Версия 21H2
- Дата установки 02.12.2022
- Сборка ОС 22000.318
- Взаимодействие Windows Feature Experience Pack 1000.22000.318.0

В списке компонентов Windows WSL я не нашел
Отслеживать
задан 18 фев 2023 в 17:52
444 1 1 серебряный знак 16 16 бронзовых знаков
Панель управления\Все элементы панели управления\Программы и компоненты\Включение отключение компонентов Windows
18 фев 2023 в 17:57
@user7860670 см UPD
Установка и использование подсистемы Linux (WSL 2) в Windows

24.10.2023

Sergey Bo

Linux, Ubuntu, Windows 10, Windows 11, Windows Server 2019

комментариев 17
Среда Windows Subsystem for Linux (WSL) позволяет запускать нативные приложения, писать скрипты, выполнять команды и скрипты Linux непосредственно из Windows без использования эмуляторов или развертывания выделенных виртуальных машин. Актуальной версией среды является WSL 2, в которой используется полноценное ядро Linux (версия ядра 5.15) и обеспечивает полную совместимость с системными вызовами. Образ ядра Linux в WSL представляет собой легкую виртуальную машину, для запуска которой не нужно устанавливать полноценную роль Hyper-V.
Как установить Windows Subsystem for Linux (WSL2)?
Компонент WSL по умолчанию отключен в Windows. Современных дистрибутивах Windows 10 и Windows 11 для установки среды WSL достаточно выполнить команду:
Этак команда автоматически включит все необходимые компоненты Windows, необходимые для работы WSL, установить обновление ядра Linux для WSL2, загрузит дистрибутив Ubuntu (по-умолчанию) и установит его в WSL.

Осталось перезагрузить компьютер, и вы можете запускать среду WSL!
Вы можете установить для WSL другой дистрибутив Linux. Выведите список доступных дистрибутивов:
wsl —list —online
Укажите имя дистрибутива Linux, который установить в WSL. Например:
wsl —install -d kali-linux

Если в BIOS/UEFI компьютера не включена виртуализация, при установке WSL вы получите ошибку:
Installation failed with error 0x80070003 or error 0x80370102” it means that Bios Level Virtualization is not enabled on your computer.
Вы можете установить WSL2 в Windows вручную. Для этого придется вручную последовательно выполнить все этапы, который команда wsl —install запускала автоматически:
- Установить WSL
- Включить компонент виртуалзации VirtualMachinePlatform
- Установить ядро WSL 2
- Скачать и установить дистрибутив Linux для WSL
Сначала установите следующие компоненты Windows:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
Скачаем и установим обновление ядра Linux для WSL2 (WSL2 Linux kernel update package for x64 machines — https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi). Можете скачать пакет вручную или с помощью PowerShell:
Invoke-WebRequest -Uri https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi -OutFile «$($env:userprofile)\Downloads\wsl_update_x64.msi» -UseBasicParsing
Invoke-Item «$($env:userprofile)\Downloads\wsl_update_x64.msi»
rm «$($env:userprofile)\Downloads\wsl_update_x64.msi»
Еще раз перезагрузите компьютер и назначьте версию WSL 2 в качестве среды по-умолчанию:
wsl —set-default-version 2

WSL: Установка дистрибутива Linux в Windows
После того, как ядро WSL установлено в Windows, вы можете установить один или несколько дистрибутивов Linux на компьютер.
Можно установить пакет с дистрибутивом Linux через Microsoft Store. Доступны следующие дистрибутивы:
- Ubuntu
- Debian
- Kali Linux
- OpenSUSE
- Oracle Linux
- SUSE Linux Enterprise Server
- Fedora
Найдите нужную версию дистрибутива в Store и установите ее, нажав кнопку Получить (Get).

Если у вас отключен Windows Store, вы хотите установить дистрибутив WSL в Core редакции Windows Server или вам нужно установить WSL на Изолированном от интернета компьютере (оффлайн), вы можете скачать дистрибутив Ubuntu с помощью PowerShell командлета Invoke-WebRequest:
Invoke-WebRequest https://aka.ms/wslubuntu2204 -OutFile ubuntu-2204.appx –UseBasicParsing
Установите пакет для WSL с помощью:

После окончания установки появится окно, в котором вам будет предложено указать имя пользователя и пароль для вашего дистрибутива.

После установки вы можете в меню Пуск появится отдельная программа для запуска Linux.

Также вы можете запустить ваш Linux из отдельной вкладки Windows Terminal или с помощью команды wsl .
Команды для управления WSL в Windows
Рассмотрим основные команды для управления ядром и дистрибутивами Linux в WSL.
Проверить текущую версию ядра WSL:

Обновить ядро WSL вручную:
Откатится к предыдущему ядру WSL:
wsl —update rollback
Вывести список установленных версий Linux:
Вывести дистрибутив Linux, который используется по-умолчанию:
Дистрибутив Linux по-умолчанию в WSL можно изменить:
wsl —setdefault Ubuntu

Запустить определенный дистрибутив в WSL:
wsl -d kali-linux
Завершить среду WSL:
Можно войти в WSL Ubuntu под root и сбросить пароль:
ubuntu config —default-user root
PasswdВернуть пользователя по умолчанию
ubuntu config —default-user your_usernameДля настройки параметров WSL и дистрибутивов Linux используются конфиг файлы:
- wsl.conf – файл с настройками конкретного дистрибутива Linux (находится в директории /etc)
- .wslconfig – глобальные настройки WSL, которые применяются ко всем дистрибутовам (находится в профиле пользователя в %UserProfile% )
Например, если вы хотите ограничить использование оперативной памяти и CPU компьютера дистрибутивами Linux в WSL, создайте такой файл %UserProfile%\.wslconfig :
[wsl2] memory=2GB processors=2
Использование Linux в среде WSL
Дистрибутив Linux, установленный в WSL является полноценной операционной системой. Поэтому после установки рекомендуется выполнить обновление пакетов. Для Ubuntu выполните команду:
$ sudo apt-get update && sudo apt-get upgrade -y

Файловая система вашего дистрибутива Linux хранится в профиле пользователя в виде VHDX файла. Например, виртуальный диск Ubuntu хранится в папке %USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState

Файловая система Linux в WSL монтируется в виде сетевой папки прямо в проводник Windows.

Также для прямого доступа к файлам WSL из Windows можно использовать UNC путь. Например:
В свою очередь локальные диски Windows монтируются в WSL в папку mnt. Вывести список файлов папок на диске C:

Другие примеры запуска Linux команд из Windows:
dir | wsl grep Sa
wsl ls ‑la > 123.txt
wsl ls ‑la /proc/cpuinfo
wsl ls ‑la “/mnt/c/Program Files”Вы можете установить любые пакеты в Linux. Например, установите файловый менеджер Midnight Commander:
$ sudo apt-get install mc
Для доступа к физическим USB устройства из WSL можно использоваь пакет usbipd-win.
В современной версии WSL 2 вы можете запускать из Windows любые приложения Linux с графическим интерфейсом (X11 и Wayland). Например, установите графический редактор:
$ sudo apt install gimp -y
Чтобы запустить его из Windows просто выполните команду:
Предыдущая статья Следующая статья
Читайте далее в разделе Linux Ubuntu Windows 10 Windows 11 Windows Server 2019



Mailcow: готовый почтовый сервер на postfix+dovecot+SOGo на Docker контейнерах
Установка KMS сервера vlmcsd на Linux для активации Windows и Office
Установка и настройка GLPI и FusionInventory, инвентаризация ИТ инфраструктуры
IPMI: настройка и удаленное управление серверами Supermicro
Вопросы с меткой [wsl]
Используйте для вопросов, связанных с Windows Subsystem for Linux, вместо меток «windows», «linux» и т.п.
46 вопросов
Конкурсные
Неотвеченные- Конкурсные 0
- Неотвеченные
- Цитируемые
- Рейтинг
- Неотвеченные (мои метки)
Вызов .so библиотеки в C#
Написал небольшую C++ библиотеку с экспортируемым методом. Собираю ее в Dll и метод вызывается без проблем, но мне нужно, чтобы программа работала на Linux, поэтому я собираю библиотеку в Shared .
20 показов
Ошибка при установке WSL
Всем привет, при установке wsl такая ошибка, надеюсь на помощь Я пробовал устанавливать wsl по гайдам от разных сайтов, к примеру microsoft. Пересмотрел куча видео. Но все привело ни к чему.
как сделать, что бы docker в WSL создавал файлы\папки от имени пользователя системы?
docker в WSL создает файлы\папки от пользователя root docker desktop в windows 11 в WSL debian 12 файлы\папки, которые создаются внутри контейнера(логи, другие файлы) создаются от пользователя рут в .
Почему при команде sudo service apache2 start ничего не происходит?
Решил переустановить apache2 на WSL Ubuntu 20.04, зачистил его полностью, установил по инструкции. Пытаюсь теперь включить sudo service apache2 start, ничего не происходит, консоль команду просто .
36 показов
Виртуализация включена, но WSL этого не видит
Пытаюсь установить Ubuntu через wsl, выдает ошибку: не включена виртуализация (на скриншоте видно), Платформа виртуальной машины и виртуализация точно включена. Пк перезагружал.
320 показов
После установки wsl не запускается windows, что делать?
После установки wsl не запускается windows, что делать? устанавливаю с помощью wsl —install в командной строке от имени андминистратора. После перезагрузки горит просто черный экран и ничего не .
15 показов
Что прочитать, чтобы хорошо понимать как в linux взаимодействуют разные элементы среды разработки?
Неопытный программист, столкнулся с тем, что после установки на WSL 2, сборки из apache, mysql и всего, что нужно оказалось: версию php нужно устанавливать отдельно на сервере и отдельно в пакет с .
67 показов
Свежесозданный виртуальный хост на свежеустановленном apache2 в Ubuntu, WSL пишет: DNS_PROBE_FINISHED_NXDOMAIN. Почему?
Установил в Ubuntu apache2 со всем, что входит в сборку LAMP. Команда показывает, что сервер работает. При обращении на localhost приветственная страница в браузере открывалась. Создал виртуальный .
102 показа
webpack-dev-server не перезагружает страницу
Предыстория: Есть проект на react, для сборки используется webpack. Node.js стоит на wsl. Проблема: При обновлении файлов, webpack-dev-server не перезагружает страницу автоматически, приходится .
Непонятная ошибка при создании apk файла с помощью buildozer для приложения kivy
Я пытаюсь создать файл apk с помощью buildozer для своего приложения kivy, следуя инструкциям из этой статьи https://tproger.ru/translations/snake-android-python-kivy/?ysclid=lgzgatukym550789581. У .
Подключение диска к Kali Linux WSL
Хочу подключить диск к WSL Windows, но говорит, что диск занят: PS C:\Windows\system32> GET-CimInstance -query «SELECT * from Win32_DiskDrive» DeviceID Caption .
403 показа
WSL2 очень медленная загрузка сайта
Решил попробовать связку Nuxt’а и Laravel. Из-за Laravel решил установить все это себе на WSL. Запускаю локальный сервер на WSL, потом в браузере на винде перехожу на http://localhost:3000 Проблема .
67 показов
Получить список доступных дистрибутивов WSL
Пытаюсь получить список доступных для установки дистрибутивов WSL: $list_all = @(); $i = 0; wsl.exe —list —online | %< if(($_.Trim() -ne "") -and ($i -gt 8))< $list_all += $_.Split(" &.
612 показов
Как правильно указать путь к папке Windows в Linux внутри WSL?
Есть текстовый файл, в котором нужно правильно прописать путь в определенную папку на другом физическом диске. Linux (если точнее, то WSL под windows) должен открыть этот файл и в указанной папке .
Почему когда захожу в базы данных через pgAdmin , ввожу пароль и все хорошо , а когда пытаюсь подключиться через терминал выдает ошибку
здесь приведен скриншот из WSL где у меня возникают проблемы с входом
15 30 50 на странице-
Важное на Мете
Связанные метки
Подписаться на ленту
Лента последних активных вопросов с меткой [wsl]
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.8.3130
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.