Часто задаваемые вопросы о подсистеме Windows для Linux

Общие сведения

Что такое подсистема Windows для Linux (WSL)?

Подсистема Windows для Linux (WSL) — это функция операционной системы Windows, которая позволяет запускать файловую систему Linux вместе со средствами командной строки Linux и приложениями графического пользовательского интерфейса непосредственно в Windows, а также традиционными классическими приложениями и приложениями Windows.

Чтобы узнать больше, ознакомьтесь со страницей сведений.

Для кого предназначена WSL?

Это в первую очередь средство для разработчиков, особенно для веб-разработчиков, работающих над открытый код проектами, или для развертывания в серверных средах Linux. WSL предназначен для тех, кто любит использовать Bash, распространенные инструменты Linux (sed, awkи т. д.) и платформы Linux (Ruby, Python и т. д.), но также пользуется использованием средств повышения производительности Windows.

Что можно сделать с помощью WSL?

WSL позволяет запускать Linux в оболочке Bash с выбранным дистрибутивом (Ubuntu, Debian, OpenSUSE, Kali, Alpine и т. д.). С помощью Bash можно запускать программы командной строки и приложения Linux. Например, введите lsb_release -a и нажмите клавишу ВВОД. Вы увидите сведения о текущем запущенном дистрибутиве Linux.

Снимок экрана со сведениями о дистрибутиве

Вы также можете получить доступ к файловой системе локального компьютера из оболочки Linux Bash. Локальные диски будут подключены в папке /mnt . Например, диск C: подключается в /mnt/c.

Снимок экрана подключенного диска C

Опишите типичный рабочий процесс разработки с использованием WSL

Подсистема WSL нацелена на аудиторию разработчиков и предназначена для использования в рамках внутреннего цикла разработки. Предположим, Семен создает конвейер CI/CD (Непрерывная интеграции & Непрерывная поставка) и хочет сначала протестировать его на локальном компьютере (ноутбуке) перед развертыванием в облаке. Семен может включить WSL (& WSL 2, чтобы повысить скорость и производительность), а затем использовать подлинный экземпляр Linux Ubuntu на локальном компьютере (ноутбуке) с любыми командами Bash и инструментами по своему выбору. После проверки конвейера разработки в локальной среде Семен может отправить этот конвейер CI/CD в облако (т. е. в Azure), сделав его контейнером Docker и отправив в облачный экземпляр, где он будет выполняться на рабочей виртуальной машине Ubuntu.

Что такое Bash?

Bash — это популярная текстовая оболочка и язык команд. Это оболочка по умолчанию, входящая в состав Ubuntu и других дистрибутивов Linux, а также в macOS. Пользователи могут вводить команды в оболочке для выполнения сценариев и (или) команд и инструментов, чтобы выполнять множество задач.

Как это работает?

Ознакомьтесь с этой статьей в блоге командной строки Windows: подробное описание того, как WSL позволяет Windows получать доступ к файлам Linux , которые подробно описывают базовую технологию.

Зачем использовать WSL вместо Linux в виртуальной машине?

WSL требует меньше ресурсов (ЦП, памяти и хранилища), чем полноценная виртуальная машина. WSL также позволяет запускать программы командной строки и приложения Linux вместе с приложениями командной строки, классическими приложениями и приложениями Store для Windows, а также позволяет обращаться к файлам Windows в Linux. Это позволяет использовать приложения для Windows и программы командной строки Linux для одного и того же набора файлов, если требуется.

Зачем использовать, например, Ruby в Linux, а не Ruby в Windows?

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

Многие языки, такие как Ruby и Node.js, часто переносятся в Windows и работают отлично. Тем не менее, не все владельцы библиотек Ruby Gem или node/NPM переносят свои библиотеки для поддержки Windows, и многие из них имеют зависимости, относящиеся к Linux. Это часто может привести к тому, что системы, созданные с помощью таких инструментов и библиотек, становятся подвержены ошибкам во время сборки, а иногда — во время выполнения, либо не работают в Windows требуемым образом.

Это лишь часть проблем, из-за которых многие пользователи просят корпорацию Майкрософт улучшить программы командной строки Windows, а мы стали партнерами с Canonical, чтобы обеспечить выполнение собственных программ командной строки Linux и Bash в Windows.

Что это означает для PowerShell?

При работе с проектами OSS существует множество сценариев, в которых чрезвычайно полезно перейти в Bash из командной строки PowerShell. Поддержка Bash дополняет и расширяет возможности командной строки в Windows, позволяя использовать PowerShell, а сообществу PowerShell — применять другие популярные технологии.

Дополнительные сведения см. в блоге группы разработчиков PowerShell: Bash for Windows: Why it’s awesome and what it means for PowerShell (Bash для Windows: почему это здорово и что это значит для PowerShell)

Какие процессоры поддерживает WSL?

WSL поддерживает процессоры x64 и Arm.

Как получить доступ к моему диску C?

Точки подключения для жестких дисков на локальном компьютере создаются автоматически и обеспечивают простой доступ к файловой системе Windows.

/mnt/<drive letter>/

Пример использования — команда cd /mnt/c для доступа к диску C:\

Как настроить диспетчер учетных данных Git? (Как использовать разрешения Windows Git в WSL?)

Ознакомьтесь с руководством по началу работы с Git на подсистема Windows для Linux, в котором представлен раздел о настройке диспетчера учетных данных Git и хранении маркеров проверки подлинности в Диспетчере учетных данных Windows.

Как использовать файл Windows в приложении Linux?

Одним из преимуществ WSL является возможность доступа к файлам с помощью приложений или инструментов Windows и Linux.

WSL подключает несъемные диски вашего компьютера к папке /mnt/<drive> в ваших дистрибутивах Linux. Например, диск C: подключается в /mnt/c/.

Используя подключенные диски, можно изменить код, например, в C:\dev\myproj\ с помощью Visual Studio или VS Code, а также выполнить сборку или тестирование этого кода в Linux, воспользовавшись этими же файлами в /mnt/c/dev/myproj.

Дополнительные сведения см. в статье о работе с файловыми системами Windows и Linux .

Отличаются ли файлы на диске Linux от файлов на подключенном диске Windows?

  1. Файлы в корневом каталоге Linux (т. е. /) управляются WSL, который соответствует поведению Linux, включая, но не ограничивается следующими параметрами:

    • файлы, содержащие в имени файла недопустимые знаки для Windows;
    • символические ссылки, созданные для пользователей без прав администратора;
    • изменение атрибутов файла с помощью chmod и chown;
    • учет регистра в именах файлов и папок.
  2. Файлы на подключенных дисках контролируются Windows и имеют следующие характеристики:

    • поддерживают учет регистра;
    • все разрешения заданы для наилучшего отражения разрешений Windows.

Как удалить дистрибутив WSL?

Чтобы удалить дистрибутив из WSL и удалить все данные, связанные с этим дистрибутивом Linux, запустите wsl --unregister <distroName><distroName> имя дистрибутива Linux, которое можно увидеть из списка в команде wsl -l .

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

Дополнительные сведения о командах wsl см. в статье "Основные команды для WSL".

Как запустить сервер OpenSSH?

OpenSSH поставляется с Windows в качестве необязательной функции. См. документацию по установке OpenSSH . Права администратора в Windows необходимы для запуска OpenSSH в WSL. Чтобы запустить сервер OpenSSH, запустите дистрибутив WSL (ie Ubuntu) или Терминал Windows от имени администратора. Существует несколько ресурсов, охватывающих сценарии SSH с WSL. Ознакомьтесь со статьями блога Скотта Ханселмана: Как SSH перейти на компьютер Windows 10 из Linux или Windows ИЛИ в любом месте, как SSH в WSL2 на Windows 10 с внешнего компьютера, ПРОСТОЙ СПОСОБ SSH в Bash и WSL2 на Windows 10 с внешнего компьютера, и как использовать Windows 10 Встроенный OpenSSH для автоматического SSH-подключения к удаленному компьютеру Linux.

Как изменить язык интерфейса WSL?

Установщик WSL попытается автоматически изменить языковой стандарт Ubuntu в соответствии с языковым стандартом установки Windows. Если это нежелательно, можно выполнить приведенную ниже команду, чтобы изменить языковой стандарт Ubuntu после завершения установки. Чтобы это изменение вступит в силу, вам придется перезапустить дистрибутив WSL.

В приведенном ниже примере языковой стандарт изменяется на EN-US.

sudo update-locale LANG=en_US.UTF8

Почему у меня нет доступа к Интернету из WSL?

Некоторые пользователи сообщили о проблемах с определенными приложениями брандмауэра, блокирующими доступ к Интернету в WSL. Сообщили о следующих брандмауэрах:

  1. Kaspersky;
  2. AVG;
  3. Avast.
  4. Symantec Endpoint Protection
  5. F-Secure

В некоторых случаях отключение брандмауэра обеспечивает доступ. В некоторых случаях доступ блокируется просто при наличии установленного брандмауэра.

Как получить доступ к порту из WSL в Windows?

WSL использует IP-адрес Windows, так как работает в Windows. Поэтому вы можете получить доступ к любым портам на localhost. Например, если вы предоставляете веб-содержимое через порт 1234, то вы можете открыть адрес https://localhost:1234 в браузере для Windows. Дополнительные сведения см. в разделе "Доступ к сетевым приложениям".

Как создать резервную копию дистрибутивов WSL или переместить их с одного диска на другой?

Лучший способ резервного копирования или перемещения дистрибутивов — с помощью команд экспорта и импорта, доступных в Windows версии 1809 и более поздних версий. Вы можете экспортировать весь дистрибутив в архив tarball с помощью команды wsl --export. Затем этот дистрибутив можно импортировать обратно в WSL с помощью wsl --import команды, которая может присвоить новому расположению диска для импорта, что позволяет создавать резервные копии и сохранять состояния (или перемещать) дистрибутивы WSL.

Обратите внимание, что традиционные службы резервного копирования, резервные копии файлов в папках AppData (например, программа архивации данных) не повреждают файлы Linux.

Можно ли использовать WSL для рабочих сценариев?

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

Основные различия между WSL и традиционной рабочей средой:

  • WSL имеет упрощенную служебную виртуальную машину, которая запускает, останавливает ресурсы и управляет ими автоматически.
  • Если у вас нет открытых дескрипторов файлов для процессов Windows, виртуальная машина WSL будет автоматически выключена. Это означает, что если вы используете его в качестве веб-сервера, SSH-подключение к нему для запуска сервера, а затем выхода, виртуальная машина может завершить работу, так как она обнаруживает, что пользователи закончили использовать его и очистят свои ресурсы.
  • Пользователи WSL имеют полный доступ к своим экземплярам Linux. Время существования виртуальной машины, зарегистрированных дистрибутивов WSL и т. д., доступно пользователю и может быть изменено пользователем.
  • WSL автоматически предоставляет доступ к файлам Windows.
  • Пути Windows добавляются к пути по умолчанию, что может привести к непредвиденному поведению для некоторых приложений Linux по сравнению с традиционной средой Linux.
  • WSL может запускать исполняемые файлы Windows из Linux, что также может привести к среде, отличной от традиционной виртуальной машины Linux.
  • Ядро Linux, используемое WSL, обновляется автоматически.
  • Доступ к GPU в WSL происходит через /dev/dxg устройство, которое направляет вызовы GPU к ГРАФИЧЕСКОму процессору Windows. Эта настройка отличается от традиционной настройки Linux.
  • Существуют и другие небольшие различия по сравнению с Linux без операционной системы, и ожидается, что в будущем будут возникать дополнительные различия, так как рабочий процесс разработки внутреннего цикла имеет приоритет.

WSL 2

Использует ли подсистема WSL 2 Hyper-V? Будет ли она доступна на Windows 10 Домашняя и Windows 11 Домашняя?

WSL 2 доступен на всех номерах SKU для настольных компьютеров, где доступен WSL, включая Windows 10 Домашняя и Windows 11 Домашняя.

Последняя версия WSL использует архитектуру Hyper-V для включения виртуализации. Эта архитектура будет доступна в качестве дополнительного компонента Virtual Machine Platform (Платформа виртуальной машины). Этот необязательный компонент будет доступен во всех номерах SKU. Более подробную информацию об этом интерфейсе можно получить ближе к выпуску WSL 2.

Что произойдет с подсистемой WSL 1? Будет ли прекращена ее поддержка?

В настоящее время не планируется объявлять подсистему WSL 1 нерекомендуемой. Вы можете запускать дистрибутивы WSL 1 и WSL 2 параллельно, обновлять их и переходить на более раннюю версию дистрибутива в любое время. Добавление WSL 2 в качестве новой архитектуры для команды WSL представляет собой лучшую платформу, которая предоставляет отличные возможности для запуска среды Linux в Windows.

Смогу ли я запускать WSL 2 с другими сторонними инструментами виртуализации, такими как VMware или VirtualBox?

Если Hyper-V уже используется, то некоторые сторонние приложения не могут работать. Соответственно, они не смогут выполняться при включенном WSL 2, например VMware и VirtualBox. Но недавно вышли новые выпуски VirtualBox и VMware, поддерживающие Hyper-V и WSL2. Дополнительные сведения об изменениях VirtualBox см. здесь, а об изменениях VMware см. здесь. Сведения об устранении неполадок можно найти в обсуждениях проблем с VirtualBox в репозитории WSL на GitHub.

Мы постоянно работаем над решениями для поддержки интеграции Hyper-V от сторонних производителей. Например, мы предоставляем набор API-интерфейсов (платформа гипервизора), который сторонние поставщики виртуализации могут использовать для обеспечения совместимости своего программного обеспечения с Hyper-V. Это позволяет приложениям использовать архитектуру Hyper-V для своих эмуляций, например Google Android Emulator, а также VirtualBox 6 и более поздней версии, которые теперь совместимы с Hyper-V.

Дополнительные сведения о проблемах WSL см. в репозитории проблем WSL 2 с VirtualBox 6.1.

*Если вы ищете виртуальную машину Windows, VMWare, Hyper-V, VirtualBox и Parallels , доступны в Центре разработки для Windows.

Могу ли я получить доступ к GPU в WSL 2? Планируется ли усилить поддержку оборудования?

Мы выпустили поддержку доступа к GPU внутри дистрибутивов WSL 2! Это означает, что теперь вы можете использовать WSL для сценариев с применением машинного обучения, искусственного интеллекта, а также обработки и анализа данных, если задействованы большие наборы данных. Ознакомьтесь с руководством по началу работы с решениями с поддержкой GPU. Сейчас WSL 2 не включает последовательную поддержку или поддержку USB-устройств. Мы определяем оптимальный способ добавления этих функций. Однако поддержка USB теперь доступна через проект USBIPD-WIN. Инструкции по настройке поддержки USB-устройств см. в разделе "Подключение USB-устройств ".

Можно ли использовать сетевые приложения WSL 2?

Да, в общих сетевых приложениях будет работать лучше и быстрее с WSL 2, так как он обеспечивает полную совместимость системных вызовов. Однако архитектура WSL 2 использует виртуализированные сетевые компоненты, что означает, что WSL 2 будет вести себя аналогично виртуальной машине. Дистрибутивы WSL 2 будут иметь другой IP-адрес, отличный от IP-адреса хост-компьютера (ОС Windows). Дополнительные сведения см. в статье "Доступ к сетевым приложениям с помощью WSL".

Можно ли запустить WSL 2 на виртуальной машине?

Да! Необходимо убедиться, что на виртуальной машине включена вложенная виртуализация. Ее можно включить в родительском узле Hyper-V, выполнив следующую команду в окне PowerShell с правами администратора:

Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true

Не забудьте заменить <VMName> именем своей виртуальной машины.

Можно ли использовать wsl.conf в WSL 2?

WSL 2 поддерживает тот же файл wsl.conf, который использует WSL 1. Это означает, что все параметры конфигурации, заданные в дистрибутиве WSL 1, такие как автоподключение дисков Windows, включение или отключение взаимодействия, изменение каталога, в котором будут подключаться диски Windows, и т. д. будут работать в WSL 2. Дополнительные сведения о параметрах конфигурации в WSL см. на странице "Управление распространением ". Дополнительные сведения о поддержке подключения дисков, дисков, устройств или виртуальных жестких дисков (VHD) см. в статье о подключении диска Linux в WSL 2 .

Куда можно отправить отзыв?

Функция обработки проблем в репозитории продуктов WSL позволяет:

  • Выполнять поиск сведений о существующих проблемах, чтобы найти информацию, связанную с возникшей проблемой. Обратите внимание, что в строке поиска можно удалить 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, используйте следующее: