Общая информация
Что такое подсистема Windows для Linux (WSL)?
Подсистема Windows для Linux (WSL) — это компонент операционной системы Windows, который позволяет запускать файловую систему Linux, а также инструменты командной строки Linux и приложения с графическим интерфейсом непосредственно в среде Windows, наряду с традиционным рабочим столом 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 и нажмите клавишу Enter; вы увидите сведения о запущенном в данный момент дистрибутиве Linux:
Вы также можете получить доступ к файловой системе локального компьютера из оболочки Linux Bash. Локальные диски будут подключены к папке /mnt . Например, ваш диск C: смонтирован в /mnt/c:
Можно ли описать типичный рабочий процесс разработки, который включает WSL?
WSL нацелена на аудиторию разработчика с намерением использовать в рамках внутреннего цикла разработки. Предположим, что Сэм создает конвейер CI/CD (непрерывная интеграция и непрерывная доставка) и хочет сначала протестировать его на локальном компьютере (ноутбуке) перед развертыванием в облаке. Sam может включить WSL (& WSL 2 для повышения скорости и производительности), а затем использовать подлинный экземпляр Ubuntu Linux локально (на ноутбуке) с любыми командами и инструментами Bash, которые они предпочитают. После локальной проверки конвейера разработки Sam может отправить этот конвейер CI/CD в облако (т. е. Azure), сделав его в контейнер Docker и перенастроив контейнер в облачный экземпляр, где он выполняется на виртуальной машине Ubuntu, готовой к работе.
Что такое Bash?
Bash — это популярная текстовая оболочка и язык команд. Это оболочка по умолчанию, включенная в ubuntu и другие дистрибутивы Linux. Пользователи вводят команды в оболочку, чтобы выполнять скрипты и/или запускать команды и инструменты для решения множества задач.
Как это работает?
Ознакомьтесь со статьёй в блоге Windows Command Line: Подробный разбор того, как WSL позволяет Windows получать доступ к файлам Linux, в которой подробно рассматривается лежащая в основе технология.
Зачем использовать WSL, а не Linux на виртуальной машине?
WSL требует меньше ресурсов (ЦП, памяти и хранилища), чем полная виртуальная машина. WSL также позволяет запускать средства командной строки и приложения Linux вместе с командной строкой Windows, классическими приложениями и приложениями магазина, а также получать доступ к файлам Windows из Linux. Это позволяет использовать приложения Windows и программы командной строки Linux в том же наборе файлов, если вы хотите.
Почему бы я использовал, например Ruby в Linux, а не в Windows?
Некоторые кроссплатформенные инструменты были разработаны в расчёте на то, что среда, в которой они работают, ведёт себя как Linux. Например, некоторые инструменты исходят из того, что могут получить доступ к очень длинным путям к файлам или что определённые файлы или папки существуют. Это часто приводит к проблемам в Windows, которые часто ведут себя по-разному от Linux.
Многие языки, такие как Ruby и Node.js, часто переносятся в Windows и работают отлично. Однако не все владельцы библиотек Ruby Gem или node/NPM переносят свои библиотеки для поддержки Windows, и многие из них имеют зависимости, относящиеся к Linux. Это часто может привести к системам, созданным с помощью таких средств и библиотек, страдающих от ошибок сборки, а иногда и ошибок среды выполнения или нежелательных действий в Windows.
Это лишь некоторые из проблем, которые заставили многих людей попросить Майкрософт улучшить средства командной строки Windows и то, что заставило нас сотрудничать с Canonical, чтобы включить собственные средства командной строки Bash и Linux для запуска в Windows.
Что это означает для PowerShell?
При работе с проектами OSS существует множество сценариев, в которых очень полезно перейти в Bash из запроса PowerShell. Поддержка Bash является дополнительной и укрепляет ценность командной строки в Windows, позволяя PowerShell и сообществу PowerShell использовать другие популярные технологии.
Подробнее читайте в блоге команды PowerShell — Bash для Windows: чем он хорош и что это значит для PowerShell
Какие процессоры поддерживает WSL?
WSL поддерживает процессоры x64 и Arm64.
Как получить доступ к диску 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 <Distro>, где <Distro> — это имя вашего дистрибутива Linux, которое можно увидеть в списке, выводимом командой wsl -l.
Кроме того, вы можете удалить приложение дистрибутива Linux на компьютере так же, как и любое другое приложение магазина.
Дополнительные сведения о командах wsl см. в статье "Основные команды для WSL".
Как запустить сервер OpenSSH?
OpenSSH поставляется с Windows в качестве необязательной функции. См. документацию по установке OpenSSH . Права администратора в Windows необходимы для запуска OpenSSH в WSL. Чтобы запустить сервер OpenSSH, запустите дистрибутив WSL (т. е. 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. Сообщается, что брандмауэры:
- Касперский
- СРЕДНЕЕ
- 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. Дополнительные сведения о перемещении дистрибутивов WSL см. в статье О том, как перенести файлы WSL с одного компьютера на другой?.
Традиционные службы резервного копирования, которые создают резервные копии файлов в папках AppData (например, Windows Backup), не повредят ваши файлы Linux.
Можно ли использовать WSL для рабочих сценариев?
Да! Мы рекомендуем использовать API контейнеров WSL для создания рабочих приложений, использующих runtimnes 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 с одного компьютера на другой?
Вы можете выполнить эту задачу несколькими способами.
- Самый простой способ — использовать команду
wsl --export <Distro> <FileName> --format vhd, чтобы экспортировать ваш дистрибутив WSL в файл VHD. Затем вы можете скопировать этот файл на другой компьютер и импортировать его с помощьюwsl --import <Distro> <InstallLocation> <FileName> --vhd. Дополнительные сведения см. в документации по командам импорта и экспортав документации по основным командам WSL . - В приведенной выше реализации требуется много места на диске. Если у вас нет места на диске, вы можете использовать методы Linux для перемещения файлов поверх:
- Используйте
tar -czf <tarballName> <directory>, чтобы создать tar-архив из ваших файлов. Затем эти конкретные файлы можно скопировать на новый компьютер и запустить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 на другой диск или в другое расположение?
Это можно сделать с помощью PowerShell. Ниже приведены необходимые команды и объяснения для каждого шага. Откройте окно PowerShell и измените значения между <> тегами, чтобы они соответствовали конкретному варианту использования:
# Export your distro to that folder as a VHD
wsl --export <Distro, e.g: Ubuntu> <FileName, e.g: D:\WSLDistros\Ubuntu\ext4.vhdx> --format vhd
# Unregister your old distro
# Please note this will erase your existing distro's file contents, please ensure the backup file you created in the 2nd step is present at the location and that the export operation completed successfully.
# Please exercise caution when using this command, as it is destructive and could cause data loss.
wsl --unregister <Distro, e.g: Ubuntu>
# Import your VHD backup
wsl --import-in-place <Distro, e.g: Ubuntu> <FileName, e.g: D:\WSLDistros\Ubuntu\ext4.vhdx>
Настройка учетной записи пользователя по умолчанию
Вы можете настроить учетную запись пользователя по умолчанию, задав wsl.conf значение user.default=<name>
WSL 2
Доступно ли WSL 2 в Windows 10 Home и Windows 11 Home?
Да. WSL 2 доступен во всех редакциях Windows для настольных ПК, в которых доступна WSL, включая Windows 10 Home и Windows 11 Home.
В частности, WSL2 требует включения двух функций:
- "Платформа виртуальной машины" (подмножество Hyper-V)
- Подсистема Windows для Linux
Использует ли WSL 2 Hyper-V?
Последняя версия WSL использует подмножество архитектуры Hyper-V для включения виртуализации. Это подмножество предоставляется как необязательный компонент с именем "Платформа виртуальных машин", доступный во всех номерах SKU для настольных компьютеров.
Что произойдет с WSL 1? Будет ли это отброшено?
В настоящее время мы не планируем отказываться от поддержки WSL 1. Вы можете запускать дистрибутивы WSL 1 и WSL 2 параллельно, а также обновлять и уменьшать любой дистрибутив в любое время. Добавление WSL 2 в качестве новой архитектуры представляет лучшую платформу для команды WSL для предоставления функций, которые делают WSL удивительным способом запуска среды Linux в Windows.
Сможет ли я запустить WSL 2 и другие сторонние средства виртуализации, такие как VMware или VirtualBox?
Некоторые сторонние приложения не могут работать при использовании Hyper-V, что означает, что они не смогут выполняться при включении WSL 2, таких как VMware и VirtualBox. Однако в последнее время в VirtualBox и VMware выпущены версии, поддерживающие Hyper-V и WSL2. Дополнительные сведения об изменениях VirtualBox см. здесь , а также об изменениях VMware. Чтобы устранить неполадки, ознакомьтесь с обсуждениями проблем VirtualBox в репозитории WSL на GitHub. StackOverflow также предлагает полезный совет: как получить VirtualBox 6.0 и WSL одновременно.
Мы постоянно работаем над решениями для поддержки сторонней интеграции Hyper-V. Например, мы предоставляем набор API под названием "Платформа гипервизора ", который сторонние поставщики виртуализации могут использовать для обеспечения совместимости программного обеспечения с Hyper-V. Это позволяет приложениям использовать архитектуру Hyper-V для их эмуляции, например эмулятор Google Android, и VirtualBox 6 и более поздних версий, которые теперь совместимы с Hyper-V.
См. репозиторий проблем WSL, где приведены дополнительные сведения и обсуждение проблем WSL 2 с VirtualBox 6.1.
*Если вы ищете виртуальную машину Windows, загрузки VM для 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-адрес, чем главный компьютер (ОС 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.
1: Список изменений для VirtualBox 6.02: API Hyper-V3: Поддержка эмулятора Android в Hyper-V4: VMware Workstation Tech Preview 20H1 — поддержка Hyper-V/Host VBS
Где можно отправить отзыв?
Репозиторий продукта WSL позволяет вам:
- Найдите существующие проблемы, чтобы проверить, есть ли связанные с вашей проблемой. Обратите внимание, что в строке поиска можно удалить "is:open", чтобы ваш поиск включал задачи, которые уже были решены. Пожалуйста, подумайте о том, чтобы оставить комментарий или поставить лайк для любых открытых вопросов, по которым вы хотите выразить интерес в продвижении в качестве приоритета.
-
Создать новую задачу. Если у вас возникла проблема с WSL и нет существующей проблемы, можно выбрать зеленую кнопку Создать проблему, а затем выбрать WSL — отчет об ошибках. Вам потребуется указать заголовок проблемы, номер сборки Windows (запустите
cmd.exe /c ver, чтобы просмотреть текущую сборку #), используете ли вы WSL 1 или 2, текущая версия ядра Linux # (запуститеwsl.exe --statusилиcat /proc/version), версия # дистрибутива (запуститеlsb_release -r), любые другие версии программного обеспечения, шаги для воспроизведения, ожидаемое поведение, фактическое поведение и журналы диагностики, если они доступны и уместны. Для получения дополнительной информации см. о вкладе в WSL. - Отправьте запрос на добавление функции, нажав зеленую кнопку Новая задача, а затем выберите запрос функции. Вам потребуется ответить на несколько вопросов, описывающих запрос.
Кроме того, вы можете сделать следующее:
- Подайте проблему с документацией, используя репозиторий документации WSL . Чтобы внести свой вклад в документы WSL, см. в руководстве Документации Майкрософт .
- Сообщите о проблеме, связанной с Терминал Windows, в репозитории продукта Терминал Windows, если ваша проблема в большей степени связана с Терминал Windows, консолью Windows или интерфейсом командной строки.
Если вы хотите оставаться в курсе последних новостей WSL, вы можете сделать это с помощью:
- Наш блог команды по командной строке
- X. Подпишитесь на @craigaloewen в X, чтобы узнавать новости, обновления и другое.
Как устранить ошибку: 0x800704ec эта программа заблокирована групповой политикой. Для получения дополнительных сведений обратитесь к системному администратору."?
Эта ошибка вызвана тем, что групповая политика блокирует WSL. Чтобы устранить проблему, сначала выполните команду wsl --update , чтобы обновить последнюю версию Магазина. Если проблема не устранена, обратитесь к администратору. Узнайте больше о различиях между встроенной версией WSL и версией WSL из Microsoft Store: WSL в Microsoft Store.
Был ли LxssManager заменен WSLService?
Да, LxssManager был заменён на WSLService, когда WSL перестал быть встроенным компонентом системы и начал обслуживаться через Microsoft Store.