Поделиться через


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

Общая информация

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

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

Дополнительные сведения см. на странице сведений.

Кто для WSL?

Это в первую очередь средство для разработчиков, особенно веб-разработчиков, работающих над проектами с открытым исходным кодом, или развертывание в средах сервера Linux. WSL предназначен для всех, кто любит использовать Bash, общие инструменты Linux (, sedи т. д.) и платформы Linux -awkfirst (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 (непрерывная интеграция и непрерывная доставка) и хочет сначала протестировать его на локальном компьютере (ноутбуке) перед развертыванием в облаке. Sam может включить WSL (& WSL 2 для повышения скорости и производительности), а затем использовать подлинный экземпляр Ubuntu Linux локально (на ноутбуке) с любыми командами и инструментами Bash, которые они предпочитают. После локальной проверки конвейера разработки Sam может отправить этот конвейер CI/CD в облако (т. е. Azure), сделав его в контейнер Docker и перенастроив контейнер в облачный экземпляр, где он выполняется на виртуальной машине Ubuntu, готовой к работе.

Что такое Bash?

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

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

Ознакомьтесь с этой статьей в блоге командной строки Windows: подробное описание того, как 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?

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

    • Файлы, содержащие недопустимые символы имени файла Windows
    • Symlinks, созданные для пользователей, не являющихся администраторами
    • Изменение атрибутов файла с помощью chmod и chown
    • Конфиденциальность регистра файлов и папок
  2. Файлы на подключенных дисках управляются 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 или Windows или в любом месте, как SSH в WSL2 на внешнем компьютере, С ЛЕГКОСТЬю использовать SSH в Bash и WSL2 в Windows 10 с внешнего компьютера, а также как использовать встроенный OpenSSH Windows 10 для автоматического SSH на удаленном компьютере Linux.

Как изменить язык отображения WSL?

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

В следующем примере языковой стандарт изменяется на en-US:

sudo update-locale LANG=en_US.UTF8

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

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

  1. Касперский
  2. СРЕДНЕЕ
  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. Дополнительные сведения о перемещении дистрибутивов WSL см. в статье О том, как перенести файлы WSL с одного компьютера на другой?.

Традиционные службы резервного копирования, резервные копии файлов в папках AppData (например, Windows Backup) не повреждают файлы 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 вызовы 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 -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 доступен во всех номерах SKU для настольных компьютеров, где доступен WSL, включая Windows 10 Home и Windows 11 Home.

В частности, WSL2 требует включения двух функций:

  1. "Платформа виртуальной машины" (подмножество Hyper-V)
  2. Подсистема 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, 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

Обязательно замените< имя виртуальной> машины именем виртуальной машины.

Можно ли использовать 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: Hyper-V API3: Hyper-V поддержка эмулятора Android4: VMware Workstation Tech Preview 20H1 — поддержка VBS 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, вы можете сделать это с помощью:

Как устранить ошибку: 0x800704ec эта программа заблокирована групповой политикой. Для получения дополнительных сведений обратитесь к системному администратору."?

Эта ошибка вызвана блокировкой WSL групповой политики. Чтобы устранить проблему, сначала выполните команду wsl --update , чтобы обновить последнюю версию Магазина. Если проблема не устранена, обратитесь к администратору. Дополнительные сведения о разнице между версией WSL в папке "Входящие" и "Магазин" WSL: WSL в Microsoft Store.

Был ли LxssManager заменен WSLService?

Да, LxssManager был заменен WSLService при переходе WSL из компонента папки "Входящие" вместо обслуживания в Microsoft Store.