WSLG является короткой для подсистемы Windows для Linux GUI , и целью проекта является обеспечение поддержки для запуска приложений Linux GUI (X11 и Wayland) в Windows в полностью интегрированном опыте рабочего стола.
WSLG предоставляет интегрированный опыт для разработчиков, ученых или энтузиастов, которые предпочитают или должны запускать Windows на своем ПК, но также нуждаются в возможности запуска инструментов или приложений, которые работают лучше или исключительно в среде Linux. В то время как пользователи могут выполнить это сегодня, используя несколько системных настройки, с отдельным ПК, посвященным Windows и Linux, виртуальным компьютером хостинга Windows или Linux или Xserver, работающим на Windows и прогнозируется на WSL, WSLG предоставляет более интегрированные, удобные для пользователя и продуктивность. альтернатива.
WSLG стремится сделать приложения Linux GUI чувствовать себя нативными и естественными для использования в Windows. От интеграции в меню «Пуск» для запуска до появления в панели задач, Alt-Tab Experience, чтобы включить Cut/Paste в приложениях Windows и Linux, WSLG позволяет бесшовному опыту рабочего стола и рабочим процессам, использующим Windows и приложения Linux.
WSLG поддерживается как на Windows 11, так и на Windows 10. Пользователи Windows 10 должны убедиться, что их установка Windows 10 полностью обновлена, посетив обновление Windows и установив все доступные обновления.
WSLG доступен как часть поддержки входящих Windows 11 WSL, так и через подсистему Windows для Linux из магазина Microsoft. Настоятельно рекомендуется использовать версию WSL Microsoft Store, которая поддерживает как Windows 10, так и Windows 11, и содержит самую современную версию WSL и WSL.
Обязательно обновите свой графический драйвер до последнего драйвера, доступного на веб -сайте вашего производителя графического процессора, чтобы получить ускорение графического процессора в вашей среде WSL.
В командной строке с привилегиями администратора запустите команду wsl --install -d Ubuntu
, затем перезагрузитесь, если это будет предложено.
После перезагрузки установка будет продолжаться. Вас попросят ввести имя пользователя и пароль. Это будут ваши учетные данные Linux, они могут быть чем угодно, и вам не нужно соответствовать учетным данным Windows.
Вуаля! WSL и WSLG установлены и готовы к использованию!
Если у вас есть существующая установка WSL без WSLG и вы хотите обновить до последней версии WSL, которая включает WSLG, запустите команду wsl --update
из поднятой командной строки.
Обратите внимание, что WSLG совместим только с WSL 2 и не будет работать для WSL Distribution, настроенной для работы в режиме WSL 1. Убедитесь, что ваш Linux Distro настроен для запуска в режиме WSL 2, если не переключиться на WSL 2. В то время как вы можете продолжать запускать Linux Distro в режиме WSL 1 после установки WSLG, если вы так желаете, дистрибутируется для запуска в режиме WSL 1 не сможет общаться с WSLG и не сможет запускать приложения GUI.
Вы можете перечислить свой в настоящее время установленную дистрибуцию и версию WSL, которую они настроены для использования следующей команды из поднятой командной строки.
wsl -- list - v
Если запустить в режиме версии 1, переключитесь на версию 2. Это может занять некоторое время.
wsl -- set-version _distro_name_ 2
Перезапустите WSL, запустив эту команду из поднятой командной строки, сначала сохраните любую ожидаемую работу:
wsl -- shutdown
Чтобы обновиться до последней версии WSL и WSLG, выпущенных для предварительного просмотра, просто запустите wsl --update
из повышенной командной строки или PowerShell.
Вам нужно будет перезапустить WSL для вступления в силу. Вы можете перезапустить WSL, запустив wsl --shutdown
из повышенной командной строки. Если WSL работает в настоящее время, он выключится, обязательно сохраните любую работу в процессе работы! WSL будет автоматически перезапущен в следующий раз, когда вы запустите приложение или терминал WSL.
Если вы установили Distro Ubuntu
Linux в соответствии с этими инструкциями, вы найдете значок Ubuntu
в своем меню старта, запустите его. Это запустит VSL 2 VM, запустит Ubuntu WSL Distro в этой виртуальной машине и даст вам терминал для взаимодействия с ним. Вуаля! Вы запускаете Linux в Windows!
Если вы хотите изучить дополнительные дистрибутивы Linux, созданные для WSL, вы можете использовать команду wsl --list --online
из повышенной командной строки для перечисления списка доступных распределений для вашей системы. Вы можете установить несколько распределений Linux в WSL, и они с радостью сосуществуют бок о бок, так что не бойтесь экспериментировать и пробовать все.
Поздравляю, что вы закончили и готовы использовать приложения GUI!
Если вы хотите начать работу с некоторыми приложениями GUI, вы можете запустить следующие команды из вашего терминала Linux, чтобы загрузить и установить несколько популярных приложений. Если вы используете другое распределение, чем Ubuntu, он может использовать другой диспетчер пакетов.
# # Update list of available packages
sudo apt update
# # Gedit
sudo apt install gedit - y
# # GIMP
sudo apt install gimp - y
# # Nautilus
sudo apt install nautilus - y
# # VLC
sudo apt install vlc - y
# # X11 apps
sudo apt install x11 - apps - y
# # Google Chrome
cd / tmp
sudo wget https: // dl.google.com / linux / direct / google - chrome - stable_current_amd64.deb
sudo dpkg - i google - chrome - stable_current_amd64.deb
sudo apt install -- fix - broken - y
sudo dpkg - i google - chrome - stable_current_amd64.deb
# # Microsoft Teams
cd / tmp
sudo curl - L - o " ./teams.deb " " https://teams.microsoft.com/downloads/desktopurl?env=production&plat=linux&arch=x64&download=true&linuxArchiveType=deb "
sudo apt install . / teams.deb - y
# # Microsoft Edge Dev Browser
sudo curl https: // packages.microsoft.com / repos / edge / pool / main / m / microsoft - edge - dev / microsoft - edge - dev_118. 0.2060 . 1 - 1_amd64.deb - o / tmp / edge.deb
sudo apt install / tmp / edge.deb - y
Как только эти приложения будут установлены, вы найдете их в своем меню «Пуск» под названием дистрибутива. Например, Ubuntu -> Microsoft Edge
. Вы также можете запустить их из окна вашего терминала, используя команды:
xcalc
, xclock
, xeyes
gimp
gedit ~/.bashrc
nautilus
vlc
google-chrome
teams
microsoft-edge
Пользовательский дистрибутив - это, по сути, распределение WSL, которое вы используете для своей работы Linux. Вы можете использовать команду wsl --list --online
из командной строки с поднятой Windows, чтобы перечислить дистрибутивы WSL, доступные в вашей системе. Вы можете запустить несколько пользовательских дистрибуций бок о бок, и они мирно сосуществуют, поэтому не бойтесь попробовать новые дистрибуции. Каждый дистрибутив пользователя будет в сочетании с уникальным экземпляром дистрибуции системы, но вы все равно можете взаимодействовать между приложениями GUI, работающими в различных пользователях дистрибутива, таких как вырезка/вставка между ними. Основная контейнеризация различных пользовательских пространств должна быть невидимой для вас.
Все пользовательские и системные дистрибуты для конкретного пользователя Windows работают в одной и той же виртуальной машине WSL против одного экземпляра ядра Linux. У разных пользователей Windows на ПК есть собственная виртуальная машина и экземпляр WSL. Ваша среда Linux гарантированно всегда будет вашей собственной и не совместно с другими пользователями Windows на одном ПК.
Системная дистрибуция - это то, где происходит вся магия. System Distro - это контейнерная среда Linux, в которой работают WSLG Xserver, Wayland Server и Pulse Audio Server. Коммуникационное сокет для каждого из этих серверов проецируется на дистрибуцию пользователя, чтобы клиентские приложения могли подключаться к ним. Мы предварительно сконфигурируем переменные среды дистрибуции пользователя Display, Wayland_display и Pulse_server, чтобы по умолчанию ссылаться на эти серверы, поэтому WSLG зажигается из коробки.
Пользователи, желающие использовать разные серверы, чем те, которые предоставляется WSLG, могут изменить эти переменные среды. Пользователь также может полностью отключить систему дистрибутива, добавив следующую запись в их файл .wslconfig
(расположенный по адресу c:usersMyUser.wslconfig
). Это отключит поддержку для приложений с графическим интерфейсом в WSL.
[wsl2]
guiApplications=false
Системная дистрибуция основана на Microsoft CBL-Mariner Linux. Это минимальная среда Linux, достаточно для запуска различных кусков WSLG. Для получения подробной информации о том, как построить и развернуть дистрибуцию частной системы, пожалуйста, посмотрите наши инструкции по сборке.
Каждое дистрибутив пользователя WSL 2 в сочетании со своим собственным экземпляром системы дистрибутива. Системная дистрибуция работает частично изолированным от пользовательского дистрибутива, к которому он сочетается в своем собственном пространстве имен NS/PID/UTS, но делится другими пространствами имен, такими как IPC, чтобы обеспечить оптимизацию общей памяти по границе.
В то время как пользователь может получить терминал в системный дистрибутив, системный дистрибутив не предназначен для использования непосредственно пользователями. Каждый экземпляр дистрибуции системы загружается только для чтения с его поддержки VHD. Любые модификации, внесенные в экземпляр в памяти системного дистрибутива (например, установка новых пакетов или создание нового файла), эффективно отбрасываются при перезапуске WSL. Причина, по которой мы делаем это, состоит в том, чтобы включить модель обслуживания для дистрибуции системы, где мы заменяем старый на новую, не беспокоясь о миграции любых пользовательских данных, содержащихся внутри. Мы используем отображение только для чтения, так что пользователь получает хорошо известное поведение сброса при любых изменениях, каждый раз, когда WSL перезапускается, вместо того, чтобы получить сюрприз, когда обслуживается WSL.
Хотя Microsoft опубликовала WSLG System Distro как только для чтения, мы хотим поощрять людей к ним и экспериментировать. Хотя мы ожидаем, что очень немногие люди действительно нуждаются в этом или хотим сделать это, мы поделились подробными инструкциями на нашей странице, как создавать и развернуть частную версию системы дистрибутивы. Большинству пользователей, которые просто хотят использовать приложения GUI в WSL, не нужно беспокоиться об этих деталях.
WSLGD является первым процессом запуска после Init . WSLGD запускает Weston (с Xwayland), Pulseaudio и устанавливает подключение RDP, запустив MSTSC.Exe на хосте в молчаливом режиме. Подключение RDP останется активным и готовым показать новые приложения GUI, запускаемые в мгновение ока, без каких -либо задержек установления соединения. Затем WSLGD контролирует эти процессы, и если они выходят по ошибке (скажем, в результате сбоя), он автоматически перезапускает их.
Уэстон является справочным композитором проекта Wayland и сердцем WSLG. Для WSLG мы расширили существующий бэкэнд RDP в Libweston, чтобы научить его удаленным приложениям, а не мониторинг/настольный компьютер. Мы также добавили в него различные функциональные возможности, такие как поддержка мультимонитора, вырезка/вставки, аудио внедорожника и т. Д.
Интеграция приложений достигается с помощью технологии RDP, называемой Rail (удаленное приложение, интегрированное локально) и Vail (виртуализированное приложение, интегрированное локально). Основное различие между Rail и Vail заключается в том, как пиксели транспортируются напротив сервера RDP к клиенту RDP. В Rail предполагается, что сервер и клиент работают в различных физических системах, передавающихся по сети, и, следовательно, пиксели необходимо скопировать через транспорт RDP. В Vail понимается, что сервер и клиент находятся в одной физической системе и могут обмениваться памятью по границе виртуальной машины гостя/хоста. Мы добавили поддержку как Rail, так и для Vail в бэкэнд RDP Libweston, хотя для WSLG эффективно используется только поддержка VAIL. Во время создания WSLG мы сначала внедрили железнодорожную железу, в то время как необходимые части, позволяющие переключателю в VAIL, разрабатывались параллельно. Мы решили сохранить эту поддержку, поскольку она может повторно использовать в других интересных сценариях за пределами WSLG, например, для удаленного приложения от PI, работающего Linux. Чтобы поделиться памятью между гостем Linux и хостом Windows, мы используем Virtio-FS.
Уэстон модульный и имеет различные раковины сегодня, такие как настольная оболочка, полноэкранная оболочка (он же киоск) и автоматическая оболочка. Для WSLG мы представили новую оболочку под названием Rail Shell. Целью рельсовой оболочки является помощь в удалении отдельных окон от Linux до Windows, так как таковая оболочка очень упрощенная и не включает в себя какие -либо реальные виджеты или пиксели, принадлежащие оболочке.
Weston использует FreerDP для реализации своего бэкэнд -сервера RDP. FreerDP используется для кодирования всех сообщений, переходящих от сервера RDP (в Уэстоне) к клиенту RDP (MSTSC в Windows) в соответствии со спецификациями протокола RDP. Он также используется для декодирования всего трафика, поступающего от клиента RDP на сервер RDP.
Для аудио в (микрофон) и выхода (динамики/наушники) WSLG запускает сервер PulseAudio. WSLG использует плагин для раковины для аудио, и источник плагина для аудио. Эти плагины эффективно передают образцы звука между Pulseserver и RDP -сервером Weston. Аудио -потоки объединяются с помощью RDP -сервера Weston на транспорт RDP, что эффективно включает в себя/выход Audio In/Out в бэкэнд Weston RDP во всех сценариях (удаленный настольный/железнодорожный/вайл в стиле), включая WSLG.
WSLG использует пользовательский виртуальный канал RDP между Weston RDP -сервером и клиентом MSTSC RDP, работающим на хосте Windows. Этот канал используется Weston для перечисления всех приложений Linux GUI (т.е. приложения, которые имеют настольный файл ввода типа GUI) вместе с их командной строкой запуска и значком. Открытый исходный код WSLDVCplugin обрабатывает список приложений Linux GUI, отправленных по этому каналу, и создает ссылки для них в меню «Пуск» Windows.
В то время как WSLG работает с или без виртуальной поддержки GPU, если вы собираетесь запустить графические приложения, такие как Blender или Gazebo, лучше всего работать в системе с GPU и драйвером, которые могут поддерживать WSL. Обзор нашей архитектуры VGPU и то, как мы позволяем приложениям Linux доступа к GPU в WSL, доступен в нашем блоге DirectX.
Поддержка ускоренного рендеринга OpenGL стала возможной благодаря работе, которую наша команда D3D проделала с Collabora и сообществом MESA по созданию драйвера Gallium D3D12.
Поддержка Linux, включая поддержку WSLG, была вверх по течению и является частью выпуска Mesa 21.0. Чтобы воспользоваться этим ускорением, вам нужно обновить версию Mesa, установленную в вашем пользовательском дистрибутивах. It also requires that your distro vendor chose to build and publish the new d3d12 Gallium driver to their package repository. We're working with the various WSL distro publishers to inform them of these changes.
Please note that for the first release of WSLg, vGPU interops with the Weston compositor through system memory. Если работать на дискретном графическом процессоре, это эффективно означает, что визуализированные данные копируются из VRAM в системную память, прежде чем представлять композитору в WSLG и снова загружаются на GPU на стороне Windows. В результате существует штраф за производительность, пропорциональный показателю презентации. При очень высокой частоте кадров, таких как 600 кадров в секунду на дискретном графическом процессоре, эти накладные расходы могут достигать 50%. При более низкой частоте кадров или на интегрированном графическом процессоре производительность, намного ближе к нативному, может быть достигнута в зависимости от рабочей нагрузки. Использование VGPU по -прежнему обеспечивает очень значительное улучшение производительности и опыта по сравнению с использованием программного рендеринга, несмотря на это ограничение V1.
WSLG опирается на отличную работу сообщества Linux и использует большое количество проектов с открытым исходным кодом. Большинство компонентов используются как есть из их версии вверх по течению и не требуют никаких изменений, чтобы осветить в WSLG. Некоторые компоненты, лежащие в основе WSLG, в частности Weston, Freerdp и PulseAudio, требовали изменения, чтобы обеспечить богатую интеграцию WSLG. Эти изменения еще не вверх по течению. Microsoft работает с сообществом, чтобы поделиться этими вкладами с каждым проектом, так что со временем WSLG может быть построен из UPSTREAM Component напрямую, без необходимости каких -либо специфических модификаций WSLG.
Все эти вклады в полете хранятся в Microsoft Mirror Repos. Мы поддерживаем эти зеркала в курсе выпусков вверх по течению и ставим наши изменения в WSLG в этих репо. WSLG вытаскивает и создает код из этих зеркальных репо, как часть наших инсайдерских предварительных выпусков WSLG. Эти зеркала общедоступны и доступны для всех. Любопытные разработчики могут взглянуть на ранние этапы нашего вклада, посмотрев на код в этих зеркалах, имея в виду, что окончательная версия кода, вероятно, будет выглядеть по -разному, как только вклад достигнет подъездного проекта и адаптирован на основе обратной связи по получению Различные владельцы проекта. Все наши зеркала следуют одной и той же модели. Существует основная ветвь, которая соответствует восходящей ветви в нашей последней точке синхронизации. Время от времени мы обновляем основную филиал, чтобы выбрать обновление из Upstream Project. Существует также рабочая ветвь, которая содержит все наши изменения в полете. WSLG строится с использованием рабочей ветви из каждого из зеркальных проектов.
Проекты, которые поддерживает WSLG, со временем изменятся по мере развития вкладов в полете. После того, как некоторые вклады будут вверх по течению, для поддержания зеркала больше не потребуется зеркало, после чего оно будет удалено, и WSLG начнет напрямую использовать восходящую версию компонента. Поскольку мы освещаем новые функциональные возможности в WSLG, новые зеркала могут быть введены в вклад сценического вклада в новые компоненты. Таким образом, ожидайте, что список зеркал изменится сверхурочно.
На данный момент у нас есть следующие зеркала проекта для в настоящее время взносов в полете.
Проект | Вверх по течению репо | WSLG зеркало |
---|---|---|
Уэстон | https://github.com/wayland-project/weston | https://github.com/microsoft/weston-mirror |
Freerdp | https://github.com/freerdp/freerdp | https://github.com/microsoft/freerdp-mirror |
Pulseaudio | https://github.com/pulseaudio/pulseaudio | https://github.com/microsoft/PulseAudio-mirror |
Ниже приведен обзор высокого уровня вклада в настоящее время в полете в каждый проект, содержащийся в этих зеркалах.
WSLG использует Уэстон в качестве композитора Wayland, соединяющего миры Linux и Windows, используя технологию RDP для удаленного содержания приложения между ними. Уэстон уже имел бэкэнд RDP, но он был ограничен пультом с одним монитором-desktop. Мы значительно улучшили этот бэкэнд RDP, чтобы включить расширенные функциональные возможности, такие как поддержка с несколькими мониторами, интеграция буфера обмена для копирования/вставки и аудио внедорожного/выхода. Мы включили новые режимы удаленного удара, называемые Rail (удаленное приложение, интегрированное локально) и Vail (виртуализированное приложение, интегрированное локально), где отдельные приложения, а не настольные компьютеры/мониторы, удаленные. Эти изменения не относятся к WSLG; Они добавляют функциональность к существующему бэкэнд RDP и также используются в других сценариях (т.е. используя новый бэкэнд RDP Weston для удаленного приложения, работающего на Raspberry Pi, к другому устройству, использующему клиент RDP).
Чтобы включить богатую интеграцию в WSLG, мы также добавили небольшой плагин в бэкэнд RDP, специфичный для WSLG. В Уэстоне плагин отвечает за подключение к дистрибутиву пользователя и поиск установленных приложений (так же как файл рабочего стола). Плагин отправляет хосту Windows список всех приложений, найденных вместе с их командами запуска и значками. На хосте Windows в плагина с открытым исходным кодом MSTSC часть проекта WSLG использует эту информацию для создания ярлыков для этих приложений Linux в меню «Пуск» Windows.
Мы также исправили несколько ошибок, влияющих на различные приложения. Как правило, это были проблемы, которые повлияли на Уэстон во всех режимах и не были специфичными для WSLG.
В настоящее время Weston использует FreerDP для своего бэкэнда RDP. WSLG продолжает использовать FREERDP, и мы добавили поддержку нового протокола/канала RDP, чтобы включить оптимизированный сценарий VAIL, а также поддержку плагина WSLG. Мы также исправили различные ошибки, которые влияли на межопублики с MSTSC или вызывали нестабильность.
Для PulseAudio наши вклады были сосредоточены на раковине и плагине источника, который перетасовывает аудиоданные между PulseAudio и бэкэнд RDP Weston, так что аудиоданные могут быть интегрированы через подключение RDP обратно к хосту. Нет никаких изменений в ядре PulseAudio за пределами добавления этих новых плагинов.
Если вы хотите воплотить или внести свой вклад в WSLG, пожалуйста, обратите внимание на нашу страницу для получения подробной информации, в том числе как создавать и запустить частную версию WSLG.
По вопросам, не связанным с безопасностью, таких как сообщать об ошибке или сделать предложение для новой функции, используйте трекер этого проекта.
Чтобы сообщить о проблемах безопасности с WSLG или любыми другими продуктами Microsoft, пожалуйста, следуйте инструкциям, подробно описанным здесь.
Этот проект может содержать товарные знаки или логотипы для проектов, продуктов или услуг. Уполномоченное использование товарных знаков или логотипов Microsoft подлежит и должно следовать указаниям Microsoft по товарной марке и брендам. Использование товарных знаков Microsoft или логотипов в модифицированных версиях этого проекта не должно вызывать путаницу или подразумевать спонсорство Microsoft. Любое использование сторонних товарных знаков или логотипов подвержена политике сторонних сторон.