Часто задаваемые вопросы о подсистеме 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. Пользователи могут вводить команды в оболочке для выполнения сценариев и (или) команд и инструментов, чтобы выполнять множество задач.

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

Ознакомьтесь с этой статьей в блоге о командной строке 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 . Для запуска OpenSSH в WSL требуются права администратора в Windows. Чтобы запустить сервер OpenSSH, запустите дистрибутив WSL (например, Ubuntu) или Терминал Windows от имени администратора. Существует несколько ресурсов, посвященных сценариям SSH с WSL. Ознакомьтесь со статьями в блоге Скотта Хансельмана: How to SSH in a Windows 10 Machine from Linux OR Windows OR anywhere, How to SSH into WSL2 on Windows 10 on a external machine, THE EASY WAY how to SSH in Bash and WSL2 on Windows 10 on a external machine, and How to use Windows 10's built-in OpenSSH to automatically SSH in a remote Linux machine.

Как изменить язык интерфейса 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 отличается от обычной среды виртуальной машины, чтобы вы могли принять решение о том, соответствует ли она вашим бизнес-потребностям.

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

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

Как перенести WSL-файлы с одного компьютера на другой?

Эту задачу можно выполнить несколькими способами.

  • Самый простой способ — использовать wsl --export --vhd команду для экспорта дистрибутива WSL в VHD-файл. Затем этот файл можно скопировать на другой компьютер и импортировать с помощью wsl --import --vhd. Дополнительные сведения см. в документации по командам .
  • Для реализации выше требуется много места на диске. Если у вас недостаточно места на диске, вы можете использовать методы Linux для перемещения файлов:
    • Используйте tar -czf <tarballName> <directory> для создания tarball файлов. Затем вы можете скопировать эти файлы на новый компьютер и выполнить команду tar -xzf <tarballName> , чтобы извлечь их.
    • Вы также можете экспортировать список установленных пакетов с помощью apt команды, например , dpkg --get-selections | grep -v deinstall | awk '{print $1}' > package_list.txt а затем переустановить те же пакеты на другом компьютере с помощью команды, например sudo apt install -y $(cat package_list.txt) после передачи файла.

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 2 с VirtualBox 6.1 см. в репозитории проблем WSL.

*Если вы ищете виртуальную машину 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, используйте следующее: