Общие сведения
Что такое подсистема 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
.
Опишите типичный рабочий процесс разработки с использованием 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?
Файлы в корневом каталоге Linux (т. е.
/
) управляются WSL, который соответствует поведению Linux, включая, помимо прочего, следующие:- файлы, содержащие в имени файла недопустимые знаки для Windows;
- символические ссылки, созданные для пользователей без прав администратора;
- изменение атрибутов файла с помощью chmod и chown;
- учет регистра в именах файлов и папок.
Файлы на подключенных дисках контролируются 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. Сообщили о следующих брандмауэрах:
- Kaspersky;
- AVG;
- Avast.
- Symantec Endpoint Protection
- 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. Чтобы внести изменения в документацию по WSL, ознакомьтесь с руководством для участников разработки портала "Документация" Майкрософт.
- Зарегистрировать сведения о проблеме с Терминалом Windows, используя репозиторий продуктов Терминала Windows, если проблема связана с Терминалом Windows, консолью Windows или пользовательским интерфейсом командной строки.
Если вы хотите оставаться в курсе последних новостей WSL, используйте следующее:
- в наш блог команды разработчиков для командной строки;
- Twitter. Следите за @craigaloewen в Twitter, чтобы узнать о новостях, обновлениях и т. д.