Wsl windows subsystem for linux что это

Windows Subsystem for Linux (WSL) — подсистема ОС Windows 10, позволяющая разработчикам, тестировщикам запускать нативные приложения Linux, писать скрипты,

Windows Subsystem for Linux (WSL) — подсистема ОС Windows 10, позволяющая разработчикам, тестировщикам запускать нативные приложения Linux, писать скрипты, выполнять команды непосредственно из Windows. В обновлённой Windows 10 (2004) появилась 2я версия WSL, в которой используется полноценное ядро Linux с возможностью запуска приложений и контейнеров Docker, реализована высокая скорость загрузки, небольшой объем потребляемых ресурсов, управление в фоновом режиме, обновление ядра. Таким образом вы сможете запускать ELF64 программы, которые могут получать доступ к файловой системе Windows без использования сторонних порто (таких как Cygwin).

Образ ядра Linux (версия ядра 4.19) в Windows 10 представляет собой легкую виртуальную машину, для запуска которой не нужно ставить полноценную роль Hyper-V. Системные вызовы Linux транслируются на лету в вызовы Windows без использования эмулятора (в отличии от WSL1).

Изначально компонент WSL отключен. Чтобы его включить, вам необходимо зайти в Пуск -> Панель управления -> Программы и компоненты -> Включение и отключение компонентов Windows (Control PanelAll Control Panel ItemsPrograms and FeaturesTurn Windows features on or off), активировать галочку Подсистема Windows для Linux (Windows Subsystem for Linux), нажать кнопку ОК, и перезагрузить компьютер.

установка Windows Subsystem for LInux 2 версия в windows 10

Вы можете включить компоненты WSL в Windows 10 с помощью dism:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

или PowerShell

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

В Windows Server 2004 Semi-Annual Channel (SAC) для установки компонента WSL используется командлет Install-WindowsFeature:

Install-WindowsFeature -Name Microsoft-Windows-Subsystem-Linux

После этого также необходимо перезагрузить компьютер.

В настройка BIOS/UEFI компьютера должна быть включена поддержка аппаратной виртуализации: Intel VT (Intel Virtualization Technology) или AMD-V.

Теперь вам нужно выполнить обновление WSL до версии 2. Для этого требуется зайти на сайт https://docs.microsoft.com/ru-ru/windows/wsl/wsl2-kernel, скачать файл wsl_update_x64.msi, установить его. По завершении увидите картинку

windows subsyste for linux update setup

Чтобы сделать WSL2 архитектурой по умолчанию для новых дистрибутивов, в PowerShell выполните команду:

wsl --set-default-version 2

Далее вам необходимо открыть Microsoft Store, в поиске ввести слово “Linux”. В появившемся списке выберите нужный дистрибутив. Доступные Ubuntu, Debian, Kali Linux, Linux Cheatsheet, SUSE Linux Enterprise Server15, openSUSE Leap 15-1, Pengwin Enterprise, Fedora Remix for WSL или другие. В нашем примере мы будем использовать Ubuntu 20.04 LTS, нажмите кнопку Получить.

образы linux для wsl в microsoft store

Если у вас отключен Windows Store или вы хотите установить дистрибутив WSL в Core редакции Windows Server, вы можете скачать дистрибутив Ubuntu с помощью PowerShell командлета Invoke-WebRequest:

Invoke-WebRequest https://aka.ms/wslubuntu2004 -OutFile ubuntu-2004.zip –UseBasicParsing

Распакуйте архив:

Expand-Archive -Path .ubuntu-2004.zip

Запустите установку образа Linux с помощью файла Ubuntu.exe.

Также вы можете скачать образ в виде appx файла и установить его с помощью командлета Add-AppxPackage.

После установки можно проверить используемую версию WSL с помощью команды

wsl --list –-verbose

wsl --list –-verbose список доступных образов linux

Если у вашей среды Linux указана версия 1, нужно изменить ее на WSL2 командой:

wsl --set-version Ubuntu-20.04 2

Файл жёсткого диска с образом виртуальной машины ОС Linux Ubuntu 20.04 будет располагаться в профиле пользователя: C:Users234AppDataLocalPackagesCanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgscLocalState.

После установки дистрибутива в стартовом меню появляется ярлык на него. Для запуска Ubuntu зайдите в меню Пуск, нажмите на соответствующем ярлыке и получите в отдельном окне полноценную командную оболочку Bash. Запускать WSL можно и с помощью команды wsl. При первом запуске образа в командной строке Bash вам будет предложено создать пользователя и пароль (которые не должны совпадать с учётной записью Windows). Чтобы выполнять команды с правами root, необходимо использовать дополнительный ключ (префикс) sudo. В WSL есть общие команды для Bash и CMD, и тут нужно не забывать, что система Linux чувствительна к регистру.

Вы можете выполнить Linux-команды из CMD. Для этого необходимо вначале указать “WSL”. Например, для просмотра списка файлов и папок в каталоге Windows, выполните:

wsl
ls /mnt
ls/mnt/c

запуск команд linux в windows
dir | wsl grep Sa
wsl ls ‑la > 123.txt
wsl ls ‑la /proc/cpuinfo
wsl ls ‑la “/mnt/c/Program Files”

команды linux

Также вы можете открыть проводник командой explorer.exe, калькулятор – calc.exe, блокнот – notepad.exe, paint – mspaint.exe, календарь – cal, погоду – curl wttr.in

запуск команд linux в windows 10 subsystem for linux

Ещё один пример взаимосвязи 2х систем – вы можете открыть в Windows файл из WSL-дистрибутива по сетевому пути. Для этого в CMD наберите путь к файлу:

notepad \wsl$Ubuntu-20.04home1122.txt

Из окна консоли вы можете обновить список пакетов в Ubuntu с помощью команд:

sudo apt-get update
sudo apt-get upgrade

После обновления Ubuntu папка …/LocalState будет занимать 1.5 Гб.

Из командной строки Linux можно не только просмотреть Windows-файлы и каталоги, но и получить к ним доступ. Чтобы удобнее копировать файлы, просматривать директории и их содержимое, установите файловый менеджер Midnight Commander с помощью команды

sudo apt-get install mc

Вы можете запустить Midnight Commander как в командной оболочке Bash, так и внутри CMD. На скриншоте ниже показано, что в двух панелях MC показывается список файлов с обеих ОС.

Midnight Commander в windows 10 wsl2

Можно отобрахить сетевые настройки (IP адрес) IP-адрес Linux-системы:

ip addr | grep eth0

запуск команд linux из windows

В WSL не предусмотрена работа приложений с графическим интерфейсом. Тем не менее вы можете попробовать их установить и использовать. Чтобы запускать графические приложения в Linux, нужно скачать и установить в Windows программу VcXsrv Windows X Server (https://sourceforge.net/projects/vcxsrv/).

VcXsrv Windows X Server

С помощью пакетного менеджера apt-get установим несколько графических программ: например, браузер, текстовый редактор или что-то ещё:

sudo apt-get install gedit
sudo apt-get install firefox
sudo apt-get install x11-app

Затем создайте файл в директории root:

cd /~
vim .bash_login

впишите строку

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0

сохраните запись

Esc -> :wr -> :q

Теперь можете запустить графические программы Linux через WSL командами:

firefox

или

gedit

запуск браузера firefox через WSL 2 в Windows 10

запуск графического редактора gedit в WSL

Вы можете установить в Windows 10 несколько дистрибутивов Linux и запускать одновременно в разных окнах WSL. Вывести весь перечень установленных дистрибутивов можете с помощью команды:

wsl --list –all

чтобы завершить работу всех запущенных дистрибутивов и ядра WSL 2, выполните команду:

wsl --shutdown

Как настроить полноценное окружение разработчика, привыкшего к Linux и Mac OS X.

Традиционно считается, что разработчики (в особенности связанные с бэкенд-разработкой) предпочитают использовать unix-like-системы. Причиной тому было немало. Ситуация начала несколько меняться в 2017 году — именно тогда вышел первый стабильный релиз Windows Subsystem for Linux (также известен под более ранним названием BashOnWindows), который дал разработчикам то, чего они так давно ждали, — полноценный Linux в качестве приложения в Windows!

Но не всё оказалось так просто — лишь к концу 2018 года WSL стало возможно использовать полноценно, при этом способ отнюдь не очевиден. О нём и пойдёт речь.

Конечная цель

Для начала пара слов о том, что такое вообще Windows Subsystem for Linux, он же WSL в сокращённом варианте. Это прослойка между ядром Windows и приложениями для Linux, которая позволяет преобразовывать системные вызовы к ядру Linux в вызовы к ядру Windows. Благодаря тому, что виртуализация практически отсутствует, такое решение работает быстрее традиционной виртуализации, где эмулируется целый компьютер, как это происходит в Oracle VirtualBox и VMWare Player.

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

Для разработчика основное применение WSL сразу же видится в развёртывании среды разработки именно там. Всё же установка многих языков, компиляторов и интерпретаторов, утилит происходит в Linux куда проще — часто одной командой из репозитория. Да и привычная консоль под рукой.

В статье будет рассматриваться именно настройка среды разработки в WSL — для примера возьмём небольшой проект, написанный на Python/Angular/Go (а почему бы и нет?), разрабатываемый в Visual Studio Code. Однако описанные рекомендации в целом подойдут для любого другого редактора или IDE.

Установка для Windows 10 x64

Важный момент: WSL официально поддерживается только в Windows 10 x64, начиная с Anniversary Update. Если у вас иная версия — альтернативное решение представлено в следующем разделе.

  • Включить поддержку Windows Subsystem for Unix, открыв PowerShell от администратора и выполнив команду:

PS C:Windowssystem32> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

  • Если у вас установлена десктопная редакция Windows 10: зайти в Microsoft Store и установить необходимый вам дистрибутив. Для нашего эксперимента будет использована Ubuntu 18.04 LTS. Затем вы сможете запустить ваш дистрибутив через меню «Пуск».
  • Если у вас установлена иная редакция Windows, без Microsoft Store (например, Windows 10 LTSC либо Windows Server): в PowerShell выполнить следующие команды:

PS C:Windowssystem32> cd ~
PS C:Userssomebody> Rename-Item .Ubuntu.appx .Ubuntu.zip
PS C:Userssomebody> Expand-Archive .Ubuntu.zip .Ubuntu
PS C:Userssomebody> cd .Ubuntu
PS C:Userssomebody> .ubuntu1804.exe

При первом запуске необходимо задать ваши логин и пароль.

vagrant up

Далее уже вам откроется консоль с Ubuntu.

Установка для 32-битных редакций Windows 10 и Windows 7, 8 и 8.1

К сожалению, на этих редакциях WSL не поддерживается. Но мы можем без особого труда заменить его Vagrant — мощной утилитой для конфигурирования виртуальных машин. Vagrant работает поверх других сред виртуализации: VirtualBox, VMWare Player или Microsoft Hyper-V. Поэтому стоит понимать, что такой вариант будет по умолчанию медленнее, нежели WSL. А в случае с VirtualBox значительно медленнее из-за файловой системы vboxsf.

Установить Vagrant можно с официального сайта. Также вам потребуется VirtualBox и Git. После этого создайте папку для вашей виртуальной машины, в ней создайте файл Vagrantfile со следующим содержимым:

Vagrant.configure(«2») do |config|
config.vm.box = «bento/ubuntu-18.04»
config.vm.synced_folder «c:/», «/windows»
# Необходимо указать для каждого порта, который вы хотите расшарить из ВМ или в ВМ
config.vm.network :forwarded_port, host: 5432, guest: 5432
config.vm.provider «virtualbox» do |vb|
vb.memory = 2048
end
end

После чего в том же PowerShell или cmd выполните команду:

vagrant up

После загрузки, настройки и запуска виртуальной машины вы попадёте в консоль Linux. Ура!

Устанавливаем всякие скучные вещи

Разворачиваем наше окружение под Python/JS/Go.

:~$ sudo apt update
:~$ sudo apt install build-essential
:~$ sudo apt install -y git nodejs golang python-dev libreadline-dev libbz2-dev libssl-dev libsqlite3-dev libxslt1-dev libxml2-dev libffi-dev
:~$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
:~$ # Инсталлятор попросит вас добавить загрузку pyenv в ~/.bashrc
:~$ source ~/.bashrc
:~$ pyenv install 3.7.2
:~$ pyenv global 3.7.2

Быстро проверяем работоспособность версий и, собственно, версии:

:~$ nodejs -v
v8.10.0
:~$ go version
go version go1.10.4 linux/amd64
:~$ python -V
Python 3.7.2
:~$

Неужели всё уже работает?

Конечно нет.

Сразу стоит отметить важный факт: ни Visual Studio Code, ни Sublime Text, ни даже ваша любимая IDE ничего не знают о существовании WSL. Из коробки более-менее с ним умеют работать только продукты от JetBrains. Лично мне Visual Studio Code по настройке, скорости работы нравится куда больше (но это текстовый редактор, о чём не стоит забывать).

И единственное, что вы можете сделать в Visual Studio Code, установленной на Windows, — подключить себе WSL вместо стандартного PowerShell в терминале. Это делается в User Settings:

{
«terminal.integrated.shell.windows»: «C:\Windows\System32\wsl.exe»,
# Добавьте сюда иные настройки по вашему усмотрению
}

На этом всё. Про линтер, автодополнение кода из библиотек, подсветку ошибок можете забыть, по крайней мере для Python. Способа решения сообщество ждёт вот уже три года. Сейчас самый простой и действенный способ заставить его работать — установить в WSL.

  • Установите MobaXterm и Cmder. Конечно, вы можете по своему выбору заменить их на альтернативные приложения. MobaXterm — мощный SSH-терминал со встроенным X-сервером, что позволяет ему рендерить приложения, которые запускаются на удалённом X-сервере (в данном случае — внутри WSL). Cmder — локальный эмулятор терминала с поддержкой PowerShell, cmd, bash, WSL и не только, с нормальным копипастом.
  • Запустите Cmder. По умолчанию он запустит cmd, но при двойном клике на нижнюю панель покажет окно, где есть возможные варианты.
  • Нам нужен тот вариант, что отмечен как {WSL::bash}. Он запустит в новой вкладке консоль внутри WSL.
  • Запустите MobaXterm. Он сразу же увидит WSL, установленную в системе. Для запуска X-сервера нажмите выделенную на скриншоте кнопку.
  • Настроим WSL для запуска GUI-приложений. Для этого откройте файл ~/.bashrc и допишите в него:

export DISPLAY=:0

  • После этого выполните команду source ~/.bashrc для применения изменений.
  • Не обязательно, но желательно установить XFCE (или другой DE на ваш вкус), а также поставить шрифты, иначе от внешнего вида VS Code у вас, возможно, вытекут глаза. По крайней мере, люди жалуются.

:~$ sudo apt install -y xfce4
:~$ sudo apt install -y fonts-noto fonts-noto-hinted fonts-noto-mono fonts-noto-unhinted

  • Скачайте установщик Visual Studio Code с официального сайта.
  • Установите зависимости и сам VS Code:

:~$ sudo apt install libgtk2.0-0 libxss1 libasound2
:~$ sudo dpkg -i <code deb file>
:~$ sudo apt install -f

  • Запустите VS Code при помощи команды code.

Вот теперь работает :) Ещё более кратко и по сути расписано вот тут.

Однако до совершенства есть ещё один штрих.

{

«window.titleBarStyle»: «native»,

}

Добавьте приведённую выше настройку в User Settings. В противном случае окно VS Code не будет ресайзиться.

А ты ещё докажи, что работает

Разворачивается оно стандартно для подобного рода проектов.

# You are on a project root
:~$ python -m venv env/
:~$ source env/bin/activate
:~$ pip install -r requirements.txt
:~$ cd frontend
:~$ npm install
:~$ ng build outDir=../backend/microblog/static
:~$ cd ../backend
:~$ python manage.py runserver

Отличия в настройке между Vagrant и WSL

Единственное существенное различие в контексте статьи — необходимость пробрасывать порты в хостовую файловую систему. По умолчанию Vagrant поднимает SSH-туннель на порту 2222 — именно туда вам будет необходимо логиниться из Cmder и добавить соответствующее соединение в MobaXterm.

Более подробно об использовании Vagrant с MobaXterm можно прочитать по ссылке.

Итоги

Но стоит заметить, что даже подобные извращения могут помочь многим людям, вынужденно сталкивающимися с… не всегда очевидным поведением новой технологии от Microsoft.

From Wikipedia, the free encyclopedia

Windows Subsystem for Linux

Tux.svg
Ubuntu on Windows 10 - bash.png

Bash running on Windows 10

Other names WSL
Developer(s) Microsoft
Initial release August 2, 2016; 6 years ago
Stable release

WSL 2 1.0.3
/ December 1, 2022; 2 months ago[1][2]

Repository github.com/Microsoft/WSL (issues only)
Operating system Windows 10, Windows 10 LTSB/LTSC, Windows Server 2016, Windows Server 2019, Windows 11, Windows Server 2022
Predecessor Windows Services for UNIX
Type Compatibility layer, Virtualization
License Subsystem: Proprietary commercial software;
Linux kernel: GNU GPLv2 (only) with some code under compatible GPL variants or under permissive licenses like BSD, MIT
Website learn.microsoft.com/windows/wsl/about

Windows Subsystem for Linux (WSL) is a feature of Windows that allows developers to run a Linux environment without the need for a separate virtual machine or dual booting. There are two versions of WSL: WSL 1 and WSL 2. WSL 1 was first released on August 2, 2016, and acts as a compatibility layer for running Linux binary executables (in ELF format) by implementing Linux system calls on the Windows kernel.[3] It is available on Windows 10, Windows 10 LTSB/LTSC, Windows 11,[4] Windows Server 2016, Windows Server 2019 and Windows Server 2022.

In May 2019, WSL 2 was announced,[5] introducing important changes such as a real Linux kernel,[6] through a subset of Hyper-V features. WSL 2 differs from WSL 1 in that WSL 2 runs inside a managed virtual machine that implements the full Linux kernel. As a result, WSL 2 is compatible with more Linux binaries than WSL 1, as not all syscalls were implemented in WSL 1. Since June 2019, WSL 2 is available to Windows 10 customers through the Windows Insider program, including the Home edition.[7] WSL is not available to all Windows 10 users by default. It can be installed either by joining the Windows Insider program or manual install.[8]

As of 2022, WSL 2 includes a (rather recent LTS) Linux kernel 5.15.74.2.

History[edit]

Microsoft’s first foray into achieving Unix-like compatibility on Windows began with the Microsoft POSIX Subsystem, superseded by Windows Services for UNIX via MKS/Interix, which was eventually deprecated with the release of Windows 8.1. The technology behind Windows Subsystem for Linux originated in the unreleased Project Astoria, which enabled some Android applications to run on Windows 10 Mobile.[9] It was first made available in Windows 10 Insider Preview build 14316.[10]

Whereas Microsoft’s previous projects and the third-party Cygwin had focused on creating their own unique Unix-like environments based on the POSIX standard, WSL aims for native Linux compatibility. Instead of wrapping non-native functionality into Win32 system calls as Cygwin did, WSL’s initial design (WSL 1) leveraged the NT kernel executive to serve Linux programs as special, isolated minimal processes (known as «pico processes») attached to kernel mode «pico providers» as dedicated system call and exception handlers distinct from that of a vanilla NT process, opting to reutilize existing NT implementations wherever possible.[11]

WSL beta was introduced in Windows 10 version 1607 (Anniversary Update) on August 2, 2016. Only Ubuntu (with Bash as the default shell) was supported. WSL beta was also called «Bash on Ubuntu on Windows» or «Bash on Windows». WSL was no longer beta in Windows 10 version 1709 (Fall Creators Update), released on October 17, 2017. Multiple Linux distributions could be installed and were available for install in the Windows Store.[12]

In 2017 Richard Stallman expressed fears that integrating Linux functionality into Windows will only hinder the development of free software, calling efforts like WSL «a step backward in the campaign for freedom.»[13]

Though WSL (via this initial design) was much faster and arguably much more popular than the previous UNIX-on-Windows projects, Windows kernel engineers found difficulty in trying to increase WSL’s performance and syscall compatibility by trying to reshape the existing NT kernel to recognize and operate correctly on Linux’s API. At a Microsoft Ignite conference in 2018, Microsoft engineers gave a high-level overview of a new «lightweight» Hyper-V VM technology for containerization where a virtualized kernel could make direct use of NT primitives on the host.[14] In 2019, Microsoft announced a completely redesigned WSL architecture (WSL 2) using this lightweight VM technology hosting actual (customized) Linux kernel images, claiming full syscall compatibility.[6] Microsoft announced WSL 2 on May 6, 2019,[5] and it was shipped with Windows 10 version 2004.[15] It was also backported to Windows 10 version 1903 and 1909.[16]

GPU support for WSL 2 to do GPU-accelerated machine learning was introduced in Windows build 20150.[17] GUI support for WSL 2 to run Linux applications with graphical user interfaces (GUIs) was introduced in Windows build 21364.[18] Both of them are shipped in Windows 11.

In April 2021, Microsoft released a Windows 10 test build that also includes the ability to run Linux graphical user interface (GUI) apps using WSL 2 and CBL-Mariner.[19][18] The Windows Subsystem for Linux GUI (WSLg) was officially released at the Microsoft Build 2021 conference. It is included in Windows 10 Insider build 21364 or later.[20]

Microsoft introduced a Windows Store version of WSL on October 11, 2021 for Windows 11,[21] and WSL reached version 1.0.0 on November 16, 2022.

Notable releases[edit]

WSL as a Windows component

Release / Feature Preview build Public build
WSL (Beta) (Bash on Ubuntu on Windows) Windows 10 build 14316 Windows 10 version 1607 (Anniversary Update)
WSL (no longer Beta) Windows 10 build 16251 Windows 10 version 1709 (Fall Creators Update)
WSL 2 (lightweight VM) Windows 10 build 18917 Windows 10 version 2004 (also backported to 1903 and 1909)
WSL 2 GPU support Windows 10 build 20150 Windows 11 (also Windows 10 21H2)
WSL 2 GUI support (WSLg) (last version) Windows 10 build 21364 Windows 11
WSL as a Windows Store app

Version Comment
0.47.1 First version
0.67.6 systemd support
1.0.0 First generally available version

Features[edit]

Bash running on Windows 10

WSL is available in Windows Server 2019 and in versions of Windows 10 from version 1607, though only in 64-bit versions.

Microsoft envisages WSL as «primarily a tool for developers – especially web developers and those who work on or with open source projects».[22] In September 2018, Microsoft said that «WSL requires fewer resources (CPU, memory, and storage) than a full virtual machine» (which prior to WSL was the most direct way to run Linux software in a Windows environment), while also allowing users to use Windows apps and Linux tools on the same set of files.[22]

The first release of WSL provides a Linux-compatible kernel interface developed by Microsoft, containing no Linux kernel code, which can then run the user space of a Linux distribution on top of it, such as Ubuntu,[23][24][25][26] openSUSE,[27] SUSE Linux Enterprise Server,[28][29][12] Debian[30] and Kali Linux.[31] Such a user space might contain a GNU Bash shell and command language, with native GNU command-line tools (sed, awk, etc.), programming-language interpreters (Ruby, Python, etc.), and even graphical applications (using an X11 server at the host side).[22]

The architecture was redesigned in WSL 2,[5] with a Linux kernel running in a lightweight virtual machine environment.

wsl.exe[edit]

The wsl.exe command is used to manage distributions in the Windows Subsystem for Linux on the command-line. It can list available distributions, set a default distribution, and uninstall distributions.[32] The command can also be used to run Linux binaries from the Windows Command Prompt or Windows PowerShell.[33] wsl.exe replaces lxrun.exe which is deprecated as of Windows 10 1803 and later.[34]

WSLg[edit]

Windows Subsystem for Linux GUI (WSLg) is built with the purpose of enabling support for running Linux GUI applications (X11 and Wayland) on Windows in a fully integrated desktop experience.[35] WSLg was officially released at the Microsoft Build 2021 conference and is included in Windows 10 Insider build 21364 or later.[20] However, with the introduction of Windows 11, WSLg is finally shipping with a production build of Windows, bringing support for both graphics and audio in WSL apps.[36]
FreeRDP is used to encode all communications going from the RDP Server (in Weston) to the RDP Client (mstsc on Windows) according to the RDP protocol specifications. [37]

Prerequisites for running WSLg include:

  • Windows 11 or Windows 10 Insider Preview builds 21362-21390.[35][38]
  • A system with virtual GPU (vGPU) enabled for WSL is recommended, as it will allow you to benefit from hardware accelerated OpenGL rendering.[35]

Design[edit]

WSL 1[edit]

LXSS Manager Service is the service in charge of interacting with the subsystem (through the drivers lxss.sys and lxcore.sys), and the way that Bash.exe (not to be confused with the Shells provided by the Linux distributions) launches the Linux processes, as well as handling the Linux system calls and the binary locks during their execution.[39] All Linux processes invoked by a particular user go into a «Linux Instance» (usually, the first invoked process is init). Once all the applications are closed, the instance is closed.

WSL 1’s design featured no hardware emulation / virtualization (unlike other projects such as coLinux) and makes direct use of the host file system (through VolFS and DrvFS)[40] and some parts of the hardware, such as the network, which guarantees interoperability. Web servers for example, can be accessed through the same interfaces and IP addresses configured on the host, and shares the same restrictions on the use of ports that require administrative permissions, or ports already occupied by other applications.[41] There are certain locations (such as system folders) and configurations whose access/modification is restricted, even when running as root, with sudo from the shell. An instance with elevated privileges must be launched in order to get «sudo» to give real root privileges, and allow such access.[22]

WSL 1 is not capable of running all Linux software, such as 32-bit binaries,[42][43] or those that require specific Linux kernel services not implemented in WSL. Due to a lack of any «real» Linux kernel in WSL 1, kernel modules, such as device drivers, cannot be run. WSL 2, however, makes use of live virtualized Linux kernel instances. It is possible to run some graphical (GUI) applications (such as Mozilla Firefox) by installing an X11 server within the Windows (host) environment (such as VcXsrv or Xming),[44] although not without caveats, such as the lack of audio support (though this can be remedied by installing PulseAudio in Windows in a similar manner to X11) or hardware acceleration (resulting in poor graphics performance). Support for OpenCL and CUDA is also not being implemented currently, although planned for future releases.[45][46] Microsoft stated WSL was designed for the development of applications, and not for desktop computers or production servers, recommending the use of virtual machines (Hyper-V), Kubernetes, and Azure for those purposes.[22]

In benchmarks WSL 1’s performance is often near native Linux Ubuntu, Debian, Intel Clear Linux or other Linux distributions. I/O is in some tests a bottleneck for WSL.[47][48][49] The redesigned WSL 2 backend is claimed by Microsoft to offer twenty-fold increases in speed on certain operations compared to that of WSL 1.[6] In June 2020, a benchmark with 173 tests with an AMD Threadripper 3970x shows good performance with WSL 2 (20H2) with 87% of the performance of native Ubuntu 20.04.0 LTS. This is an improvement over WSL 1, which has only 70% of the performance of native Ubuntu in this comparison. WSL 2 improves I/O performance, providing a near-native level.[50]
A comparison of 69 tests with Intel i9 10900K in May 2020 shows nearly the same relative performance.[51] In December 2020, a benchmark with 43 tests with an AMD Ryzen 5900X shows good performance with WSL 2 (20H2) with 93% of the performance of native 20.04.1 LTS. This is an improvement over WSL 1, which has only 73% in this comparison.[52]

WSL 2[edit]

Version 2 introduces changes in the architecture. Microsoft has opted for virtualization through a highly optimized subset of Hyper-V features, in order to run the kernel and distributions (based upon the kernel), promising performance equivalent to WSL 1. For backward compatibility, developers don’t need to change anything in their published distributions. WSL 2 settings can be tweaked by the WSL global configuration, contained in an INI file named .wslconfig in the User Profile folder.[53][54]

The distribution installation resides inside an ext4-formatted filesystem inside a virtual disk, and the host file system is transparently accessible through the 9P protocol,[55] similarly to other virtual machine technologies like QEMU.[56] For the users, Microsoft promised up to 20 times the read/write performance of WSL 1.[5] From Windows an IFS network redirector is provided for Linux guest file access using the UNC path prefix of \wsl$.

WSL 2 requires Windows 11,[57] or Windows 10 version 1903 or higher, with Build 18362 or higher, for x64 systems, and Version 2004 or higher, with Build 19041 or higher, for ARM64 systems.[8]

WSL 2 and Windows 11 are in good shape with 95% performance of native Ubuntu 20.04 LTS.[58]

See also[edit]

  • Azure Sphere
  • FreeBSD § OS compatibility layers
  • SmartOS § Virtualization
  • Windows Terminal
  • Xenix

References[edit]

  1. ^ «Release 1.0.3 · microsoft/WSL». GitHub. Retrieved 3 January 2023.
  2. ^ Craig Loewen (12 June 2019). «WSL 2 is now available in Windows Insiders». Windows Command Line.
  3. ^ Leeks, Stuart (2020). Windows Subsystem for Linux 2 (WSL 2) Tips, Tricks, and Techniques : Maximise Productivity of Your Windows 10 Development Machine with Custom Workflows and Configurations. Birmingham: Packt Publishing, Limited. pp. 18–19. ISBN 978-1-80056-352-0. OCLC 1202451000.
  4. ^ June 2021, Darren Allan 23 (23 June 2021). «Windows 11 could seamlessly run graphical Linux apps». TechRadar. Retrieved 29 June 2021.
  5. ^ a b c d Craig Loewen (6 May 2019). «Announcing WSL 2». Windows Command Line Tools For Developers.
  6. ^ a b c mscraigloewen. «About WSL 2». docs.microsoft.com.
  7. ^ «WSL 2 Post BUILD FAQ». Windows Command Line Tools For Developers. 14 May 2019.
  8. ^ a b craigloewen-msft (24 February 2022). «Install WSL on Windows 10». Microsoft.
  9. ^ Bright, Peter (6 April 2016). «Why Microsoft needed to make Windows run Linux software». Ars Technica. Condé Nast.
  10. ^ Aul, Gabe (6 April 2016). «Announcing Windows 10 Insider Preview Build 14316». Windows Experience Blog. Microsoft.
  11. ^ «Windows Subsystem for Linux Overview». Windows Subsystem for Linux. Retrieved 22 April 2018.
  12. ^ a b «What’s new in WSL in Windows 10 Fall Creators Update — Windows Command Line». Windows Command Line. 11 October 2017. Retrieved 15 October 2021.
  13. ^ Heath, Nick (20 September 2017). «Will Microsoft love Linux to death? Shuttleworth and Stallman on whether Windows 10 is free software’s friend». TechRepublic. Retrieved 18 February 2022.
  14. ^ Microsoft Ignite (2 October 2018), OS internals: Technical deep-dive into operating system innovations — BRK3365, archived from the original on 9 November 2021, retrieved 7 May 2019
  15. ^ «WSL 2 will be generally available in Windows 10, version 2004 — Windows Command Line». Windows Command Line. 13 March 2020. Retrieved 15 October 2021.
  16. ^ «WSL 2 Support is coming to Windows 10 Versions 1903 and 1909 — Windows Command Line». Windows Command Line. 20 August 2020. Retrieved 15 October 2021.
  17. ^ «GPU accelerated ML training inside the Windows Subsystem for Linux — Windows Developer Blog». Windows Blog. 17 June 2020. Retrieved 16 October 2021.
  18. ^ a b «The Initial Preview of GUI app support is now available for the Windows Subsystem for Linux — Windows Command Line». Windows Command Line. 21 April 2021.
  19. ^ Foley, Mary Jo (21 April 2021). «New Windows 10 test build adds first preview of Linux GUI apps on WSL». ZDNet. Retrieved 23 April 2021.
  20. ^ a b Abrams, Lawrence (29 May 2021). «Hands on with WSLg: Running Linux GUI apps in Windows 10». Bleeping Computer. Retrieved 30 May 2021.
  21. ^ «A preview of WSL in the Microsoft Store is now available! — Windows Command Line». Windows Command Line. 11 October 2021. Retrieved 16 October 2021.
  22. ^ a b c d e «Frequently Asked Questions for WSL». Microsoft. Retrieved 13 November 2016.
  23. ^ Harsh, Mike (30 March 2016). «Run Bash on Ubuntu on Windows». Building Apps for Windows. Microsoft.
  24. ^ Finley, Klint (30 March 2016). «Why Microsoft Making Linux Apps Run on Windows Isn’t Crazy». Wired. Condé Nast.
  25. ^ Kirkland, Dustin (30 March 2016). «Ubuntu on Windows – The Ubuntu Userspace for Windows Developers». Ubuntu Insights. Canonical.
  26. ^ Hammons, Jack (9 April 2016). «Bash on Ubuntu on Windows». MSDN. Microsoft.
  27. ^ Get openSUSE Leap 42 — Microsoft Store
  28. ^ Get SUSE Linux Enterprise Server 12 — Microsoft Store
  29. ^ Yegulalp, Serdar (12 May 2017). «Windows Subsystem for Linux welcomes Suse and Fedora options». InfoWorld. Retrieved 16 September 2017.
  30. ^ «Debian GNU/Linux for WSL now available in the Windows Store». Windows Command Line Tools For Developers. Retrieved 7 March 2018.
  31. ^ «Kali Linux in the Windows App Store». Retrieved 9 March 2018.
  32. ^ Manage and configure Windows Subsystem for Linux
  33. ^ Windows Subsystem for Linux interoperability with Windows
  34. ^ Command Reference for Windows Subsystem for Linux
  35. ^ a b c Welcome to WSLg, Microsoft, 7 November 2021, retrieved 7 November 2021
  36. ^ Salter, Jim (7 October 2021). «The best part of Windows 11 is a revamped Windows Subsystem for Linux». Ars Technica. Retrieved 7 November 2021.
  37. ^ «Installing WSLg». GitHub. 27 April 2022. Retrieved 27 April 2022.
  38. ^ «Clarify Windows 10 vs 11 and build numbers (#485) · microsoft/wslg@5ddd8d2». GitHub. Retrieved 28 May 2022.
  39. ^ Jack Hammons (22 April 2016). «Windows Subsystem for Linux Overview». Windows Subsystem for Linux blog on MSDN.
  40. ^ Jack Hammons (15 June 2016). «WSL File System Support». Windows Subsystem for Linux blog on MSDN.
  41. ^ Jack Hammons (8 November 2016). «WSL Networking». Windows Subsystem for Linux blog on MSDN.
  42. ^ «Please enable WSL to run 32 bit ELF binaries». Windows Developer feedback (Microsoft/UserVoice).
  43. ^ «Support for 32-bit i386 ELF binaries». GitHub.
  44. ^ «Windows 10’s Bash shell can run graphical Linux applications with this trick». PC World. Retrieved 10 September 2018.
  45. ^ «GPU not accesssible for running tensorflow and installing CUDA · Issue #1788 · Microsoft/WSL». GitHub. Retrieved 10 September 2018.
  46. ^ «OpenCL & CUDA GPU support». Windows Developer feedback (Microsoft/UserVoice). 15 September 2016. Retrieved 10 September 2018.
  47. ^ «Windows Subsystem for Linux». Phoronix.
  48. ^ Larabel, Michael (12 October 2018). «A Look At The Windows 10 October 2018 Update Performance With WSL». Phoronix.
  49. ^ Larabel, Michael (5 November 2018). «The WSL Improvements In The Windows 10 October 2018 Update». Phoronix.
  50. ^ Larabel, Michael (24 June 2020). «Ubuntu 20.04 vs. Windows 10 WSL/WSL2 Performance In 170+ Benchmarks». Phoronix.
  51. ^ Larabel, Michael (17 June 2020). «Windows 10 May 2020 Performance For WSL vs. WSL2». Phoronix.
  52. ^ Larabel, Michael (16 December 2020). «Windows Subsystem For Linux / WSL2 Performance With The AMD Ryzen 9 5900X». Phoronix.
  53. ^ Loewen, Craig (26 July 2019). «What’s new for WSL in Insiders Preview Build 18945». Microsoft devblog. Archived from the original on 26 July 2019. Retrieved 26 July 2019. In this new update we’ve added the ability to start using global config options for WSL. These options are targeted towards power users who want to further customize their WSL experience.
  54. ^ Hillis, Ben (25 July 2019). «MicrosoftDocs/WSL | Build 18947». GitHub. Archived from the original on 26 July 2019. Retrieved 26 July 2019.
  55. ^ «A Deep Dive Into How WSL Allows Windows to Access Linux Files». Windows Command Line Tools For Developers. 30 May 2019. Retrieved 24 June 2019.
  56. ^ Jujjuri, Venkateswararao; Van Hensbergen, Eric; Liguori, Anthony; Pulavarty, Badari (13–16 July 2010). «VirtFS—A virtualization aware File System pass-through» (PDF). Linux Symposium.
  57. ^ «Comparing WSL 1 and WSL 2». Microsoft Learn. 4 October 2022. Retrieved 18 October 2022.
  58. ^ «Windows 11 WSL2 Performance is Quite Competitive Against Ubuntu 20.04 LTS / Ubuntu 21.10».

Further reading[edit]

  • Barnes, Hayden (2021). Pro Windows Subsystem for Linux (WSL): Powerful Tools and Practices for Cross-Platform Development and Collaboration. Apress. ISBN 978-1484268728.
  • Leeks, Stuart (2020). Windows Subsystem for Linux 2 (WSL 2) Tips, Tricks, and Techniques: Maximise productivity of your Windows 10 development machine with custom workflows and configurations. Packt Publishing. ISBN 978-1800562448.
  • Singh, Prateek (2020). Learn Windows Subsystem for Linux: A Practical Guide for Developers and IT Professionals. Apress. ISBN 978-1484260371.

External links[edit]

  • WSL on Microsoft Learn
  • WSL on GitHub
  • WSL2-Linux-Kernel on GitHub
  • Brown, Pete (22 July 2016). «Fun with the Windows Subsystem for Linux». Windows Developer Blog. Microsoft.

Сайт KV.BY опубликовал статью о подсистеме Windows Subsystem for Linux (WSL), предназначенной для запуска Linux-программ в ОС Windows 10. Упор в статье сделан на последнюю версию этой подсистемы WSL2.

Windows – это Linux

Как говорили древние греки, всё меняется и ничто не остаётся на месте. Многие ещё помнят те времена, когда операционная система GNU/Linux была для «Майкрософт» чем-то вроде красной тряпки для быка. Бывший руководитель рэдмондского гиганта Стив Балмер называл всё, что связано с детищем Линуса Торвальдса, не иначе как «раковой опухолью». Однако прошло не так уж и много времени после таких заявлений, и вот уже как три года корпорация «Майкрософт» является платиновым участником консорциума Linux Foundation – организации, занимающейся развитием и стандартизацией ядра Linux.

Мало того, в операционной системе Windows 10 появилась специальная программная подсистема Windows Subsystem for Linux (WSL). Эта подсистема позволяет в Windows запускать программы GNU/Linux в двоичном исполняемом формате ELF-64. В результате пользователям десятых «Форточек» становятся доступно программное обеспечение Linux-дистрибутивов, начиная со скриптов Bash и заканчивая службами наподобие Docer.

Windows Subsystem for Linux
Windows Subsystem for Linux

Поводом для произошедших перемен в политике корпорации, без сомнения, стала популярность мобильной операционной системы Android, основанной на ядре Linux. Но причина, по которой в Рэдмонде произошёл поворот в сторону Linux-сообщества, лежит не только в области мобильных операционных систем.

«Developers, developers, developers!»

Существует два способа запускать Linux-приложения в Windows. Первый способ предполагает перекомпиляцию Linux-программ в исполняемый формат exe-файлов. Благо большая часть программ Open Source является кроссплатформенной и свободно собирается под разные операционные системы. Примером первого способа можно назвать проекты Cygwin или MinGW – коллекции специально скомпилированных для Windows приложений UNIX.

Второй способ предполагает использование эмуляции и виртуализации, что позволяет запускать полноценный Linux-дистрибутив в специальной виртуальной среде. WSL – это и есть второй способ. Здесь используются как эмуляция ядра Linux, так и технологии виртуализации.

Но, прежде чем мы рассмотрим особенности второго способа, отметим, что в Windows 10 присутствует и первый способ. С недавнего времени тихо и незаметно в штатный состав «Десятки» входят три классические консольные UNIX-утилиты curl.exe, tar.exe, openssh.exe.

Утилиты curl.exe, tar.exe, openssh.exe в Windows 10
Утилиты curl.exe, tar.exe, openssh.exe в Windows 10

Выбор этих консольные утилит явно указывает на тот класс пользователей, ради которых «Майкрософт» и затеяла всю эту эпопею с запуском в «Форточках» программ Linux. Программы Curl, tar и openssh – популярные инструменты у веб-разработчиков. Именно для них и для веб-разработки создают в Рэдмонде подсистему Windows Subsystem for Linux.

Как правило, веб-разработчики используют для своей работы Windows. Однако их клиенты и заказчики в основном пользуются хостингом на Linux. И для веб-разработчики в среде Windows приходится использовать что-то вроде Denver и XAMP, или же запускать программы виртуализации VMware и VirtualBox, или же использовать на компьютере двойную загрузку с системами Linux. Или уже наметилась устойчивая тенденция для веб-разработки переходить на Mac OS, в которой имеется полноценное POSIX-ядро, позволяющее без лишних телодвижений запустить все консольные скрипты и программы, необходимых для современных веб-кодеров.

Поэтому основная цель WSL – удержать веб-разработчиков на Windows, предоставив им удобную и комфортную среду запуска всех консольных скриптов, программ и примеров с GitHub и StackOwerflow. (Кстати GitHub с недавних пор тоже под контролем Microsoft).

Главная особенность WSL

Технологиями виртуализации давно никого не удивишь. Если подсистема WSL основана на технологиях виртуализации, то возникает основной вопрос: чем Windows Subsystem for Linux лучше того же VirtualBox?

Преимущество WSL не только в том, что пользователю Windows 10 теперь не требуется устанавливать и настраивать отдельные программы для создания виртуальных машин, довольствуясь штатными средствами виртуализации. Основным достоинством WSL является очень тесная и бесшовная интеграция работы приложений Linux в системе Windows. WSL настолько глубоко интегрирует виртуальную среду выполнения Linux-программ в операционную систему Windows 10, что эти программы становятся мало отличимы от приложений Windows на уровне пользовательского интерфейса. Хотя эта бесшовность даётся не легко.

Ниже рассмотрим эту бесшовность и прозрачность более детально. Все инструкции в этой статье для работы с WSL актуальны для сборки Windows 10 18917 и более поздних версий. Проверить номер своей сборки Windows 10 можно командой «ver» в приложении «Командная строка».

Настройка WSL

Настраивать подсистему WSL практически не нужно. Виртуальная среда WSL в процессе работы настроится автоматически и незаметно для пользователя.

Единственное, нужно проверить включение компонентов «Подсистема Windows для Linux» и «Платформа виртуальной машины» через «Панель управления -> Программы и компоненты -> Включение или отключение компонента Windows».

Включение WSL
Включение WSL

WSL работает только в 64-разрядных версии Windows 10, начиная с редакции «Домашняя» для процессоров x64 и ARM. Подсистема не работает в безопасном S-режиме Windows 10.

Загрузка дистрибутива

Как известно программы для Linux распространяются в составе дистрибутивов, наиболее популярными из которых можно назвать Fedora, Debian, Ubuntu, OpenSUSE. Поэтому чтобы начать работу с WSL следует загрузить и установить базовый набор приложений какого-либо дистрибутива и затем штатным менеджером пакетов установить нужные программы.

Дистрибутивы Linux для WSL устанавливаются прямо из магазина приложений Windows Store так же, как и программы Windows. По поисковому запросу «linux» в магазине появится список дистрибутивов для выбора. На текущий момент в магазине представлено уже около дюжины дистрибутивов. Выбираем нужный дистрибутив, – например Ubuntu-18.04, – и нажимаем кнопку «Получить».

Ubuntu-18.04 в Windows Store
Ubuntu-18.04 в Windows Store

Загрузится около 200 мегабайт файлов для базовой системы. В главном меню «Пуск», в «плитках» и на рабочем столе наравне с иконками Windows-программ появится иконка Linux-дистрибутива.

Иконки дистрибутива Linux в Windows 10
Иконки дистрибутива Linux в Windows 10

Удаление дистрибутива происходит также как и удаление Windows-программ – через контекстное меню «плитки» дистрибутива в меню «Пуск».

Отметим, что в редакциях Windows 10 для предприятий, в которых нет Windows Store, дистрибутивы Linux для WSL можно скачать и установить посредством специальных команд Power Shell. В этой статье для краткости мы данный метод рассматривать не станем.

Первый запуск WSL

Подсистема WSL предназначена для запуска консольных программ Linux с интерфейсом командной строки. Для программ с графическим интерфейсом необходимо устанавливать дополнительное ПО, о чём будет сказано ниже.

При первом запуске установленного дистрибутив откроется приложение «Командная строка», в котором запустится командный интерпретатор установленного дистрибутива – обычно это bash. Будет предложено подождать одну или две минуты для завершения установки. На последнем этапе после завершения установки необходимо создать новую учетную запись пользователя Linux-системы, который будет использоваться по умолчанию подсистемой WSL, и задать пароль. После чего с установленной системой Linux можно работать.

Начальная инициализация WSL-дистрибутива
Начальная инициализация WSL-дистрибутива

Запустить установленную систему Linux можно в приложении «Командная строка» с помощью команд «bash.exe», «wsl.exe» или «<имя дистрибутива>.exe» (не во всех дистрибутивах работает). Самой продвинутой является команда «wsl.exe», так как с её помощью доступны все возможные операции с подсистемой WSL.

Список установленных дистрибутивов задаётся командой «wsl» с помощью опции «-l» или «—list»:

wsl -l
Пример вывода команды “wsl -l”
Пример вывода команды “wsl -l”

Установка дистрибутива по умолчанию, который будет запускаться командами «bash.exe», «wsl.exe» без параметров, происходит с помощью опций «-s» («—setdefault»):

wsl -s <название дистрибутива>

Если для дистрибутива задано несколько учётных записей, то для запуска от имени определенного пользователя имеются опции «-u» («—user»):

wsl -u <имя пользователя>

Запуск определенного дистрибутива по названию с помощью опций «-d» («—distribution»):

wsl -d <название дистрибутива>

WSL1 и WSL2

После установки и первого запуска любой системы обычно всегда делается обновление ПО. Например, для Ubuntu обновление делается командами:

sudo apt-get update & apt-get upgrade

В первых версиях WSL пользователи столкнулись с неприятным фактом, что это обновление происходило очень медленно. Операция замены пары сотен мегабайт могла затянуться на долгое время. Резкое снижение производительности было характерно также и для других приложений, требующих большого числа файловых операций – Git, Node.js и других.

Такая низкая скорость файловых операций объяснялась тем, что первая версия WSL использовала эмуляцию ядра Linux на уровне API Windows. Также подсистема WSL эмулировала метаданные файловой системы дистрибутива Linux.

На практике оказалось, что такая эмуляция не обеспечивает высокую скорость файловых операций для систем Linux. Поэтому, начиная со сборки Windows 10 18917, используется новая архитектура WSL2, которая основана на технологиях виртуализации Microsoft Hyper-V. Другими словами теперь для каждого установленного дистрибутива Linux подсистема WSL запускает отдельную легковесную виртуальную машину и отдельный виртуальный диск. При этом для этой виртуальной машины используется настоящее ядро Linux, а не эмуляция на уровне системных вызовов Windows. В результате для WSL2 удалось повысить производительность файловых операций по сравнению с WSL1 на порядок.

На текущий момент в Windows 10 присутствуют обе версии подсистемы – и WSL1, и WSL2. Рекомендуется использовать WSL2.

Чтобы проверить, какие версии WSL использует каждый дистрибутив, используйте для команды «wsl.exe» опции «-l -v» («—list —verbose»):

wsl -l -v
Пример вывода команды “wsl -l -v”
Пример вывода команды “wsl -l -v”

Установить WSL 2 для отдельного дистрибутива можно опцией «—set-version»:

wsl --set-version <название дистрибутива> 2

Чтобы задать WSL 2 по умолчанию для всех устанавливаемых в дальнейшем дистрибутивов Linux, используйте опцию «—set-default-version»:

wsl --set-default-version 2

Одиночное и смешанное выполнение программ

Самое важное и интересное в WSL – это одиночное и смешанное выполнение программ Linux из среды Windows и наоборот.

Чтобы выполнить какую-либо программу из установленного дистрибутива Linux, совсем не обязательно запускать терминальную сессию Linux. Можно просто передать имя Linux-программы в качестве аргумента для wsl.exe и она будет выполнена прямо в контексте командной строки Windows.

c:>wsl uname
Linux
c:>
Примеры одиночного выполнения Linux-программ
Примеры одиночного выполнения Linux-программ

При этом программа для Linux выполнится в том же каталоге, в котором находится интерпретатор «Командная строка», от имени пользователя WSL по умолчанию с правами вызывавшего её интерпретатора. То есть если «Командная строка» запущена с правами Администратора Windows, то и запущенная здесь программа для Linux будет иметь права Администратора.

Возможно и обратное – вызов двоичных файлов Windows из консоли Linux. Поэтому из командного интерпретатора Linux, например, набрав команду «notepad.exe» можно запустить «Блокнот», который будет запущен с правами активного пользователя Windows.

$ notepad.exe "C:WSLWSL.txt"
Запуск “Блокнота” из консоли Linux
Запуск “Блокнота” из консоли Linux

Мало того, можно объединять программы Linux и программы Windows через механизм конвейера pipe. То есть можно соединять выход Linux-программы с входом Windows-программы и наоборот.

Пример 1, cmd. Выход Windows-программы «dir» направляем на вход Linux-утилиты «grep»:

C:>dir | wsl grep "Windows"
28.10.2019  03:36    
          Windows
28.10.2019  03:41              Windows.old

Пример 2, bash. Выход Linux-программы «cat» направляем на вход Windows-утилиты «findstr»:

$ cat /etc/lsb-release | findstr.exe "DESCRIPTION"
 DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"

Такая тесная интеграция программ Windows и Linux с помощью WSL позволяет, например, писать смешанные скрипты BASH и Power Shell. Или интегрировать инструменты Linux в средства разработки Windows.

Доступ к файлам

WSL предоставляет доступ из оболочки bash Linux ко всем дискам и всей файловой системе Windows. Локальные диски автоматически монтируются в каталог «/mnt». Например, диск «C:» монтируется как «/mnt/c».

USB-флэшки не монтируются автоматически в каталог «/mnt». Их нужно монтировать с помощью плагина drvfs. Например, монтирование флэш-диска H:

$ sudo mkdir /mnt/h
$ sudo mount -t drvfs h: /mnt/h

Файлы WSL-дистрибутивов Linux можно найти в папке «C:Usersимя_пользователяAppDataLocalPackages». Они будут находиться в папках с названиями вида «CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc». Если используется версия WSL1, то файлы Linux-системы там будут находиться как есть в прямом доступе из Windows. Но категорически не рекомендуется их трогать в обход WSL, так как Windows не обработает специфические метаданные этих файлов.

В случае версии WSL2 в папке дистрибутива будет расположен файл образа виртуального жёсткого диска. Если в командном интерпретаторе запустить команду «explorer.exe .» с точкой в качестве аргумента, то откроется «Обозреватель» Windows, в котором отобразится файловая система текущего дистрибутива Linux как сетевой ресурс вида «wsl$<название дистрибутива>».

WSL-диск как сетевой ресурс Windows
WSL-диск как сетевой ресурс Windows

Другими словами, передать приложению Windows какой-либо файл из WSL-дистрибутива можно по сетевому пути к этому файлу.

C:>notepad wsl$Ubuntu-18.04homemikWSL.txt

Сеть и сетевые приложения

Версия WSL1 использует IP-адрес Windows. Сетевой стек у подсистемы WSL1 общий с Windows. Сервер, поднятый в Linux, будет доступен на localhost в Windows и наоборот.

Если дистрибутив использует версию WSL2, то уже потребуется найти IP-адрес виртуальной машины, чтобы подключить дистрибутив по этому IP-адресу. Это можно сделать, выполнив в Linux-системе команду «ip addr» и через поиск строки «eth0» найти адрес по значению «inet».

$ ip addr | grep eth0
 5: eth0:  mtu 1500 qdisc mq state UP group default qlen 1000
     inet 172.18.14.6/20 brd 172.18.15.255 scope global eth0

Дальше можно в Linux запустить, для примера, http-сервер Python командой «python3 -m http.server» и обратиться к нему из браузера Windows по полученному IP.

Доступ к веб-серверу Python для WSL из Windows
Доступ к веб-серверу Python для WSL из Windows

WSL и программы с графическим интерфейсом

WSL — это средство, предназначенное для пользователей, которым требуется запускать программы командной строки Bash и Core Linux в Windows. WSL не имеет штатных средств для запуска приложений Linux с графическим интерфейсом GNOME, KDE и т. д.

Тем не менее, энтузиасты вполне успешно запускают графические программы в WSL, устанавливая и запуская сторонние порты X-сервера для Linux – например VcXsrv.

VcXsrv – X-сервер для Windows
VcXsrv – X-сервер для Windows

В сети Интернет немало инструкций по запуску в WSL графических Linux-программ. Большая часть этих инструкций написана для WSL1, но с появлением второй версии подсистемы они устарели. Ниже последовательность действий для настройки X-сервера VcXsrv для подсистемы WSL2.

  1. Находим в Сети, скачиваем и устанавливаем X-сервер VcXsrv.
  2. В WSL-дистрибутиве через пакетный менеджер устанавливаем какую-нибудь программу с графическим интерфейсом – например, Nautilus GNOME.
  3. В настройках брандмауэра Защитника Windows «Пуск > Параметры > Обновление и безопасность > Безопасность Windows > Брандмауэр и защита сети» отключаем брандмауэр для опции «Общедоступная сеть».
  4. В Linux находим IP-адрес сервера имен nameserver, прописанный в «/etc/reslv.conf».
$ cat /etc/resolv.conf
 This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
 [network]
 generateResolvConf = false
 nameserver 172.20.240.1
  1. Экспортируем переменную DISPLAY со значением nameserver из reslv.conf и номером экрана «0».
export DISPLAY=172.20.240.1:0
  1. Запускаем в Windows VcXsrv. Устанавливаем «0» для «Display number» и галочку для «Disable access control».
  2. В Linux из командной строки запускаем графическую программу.
WSL и программы Linux с графическим интерфейсом
WSL и программы Linux с графическим интерфейсом

Само собой, приведенный способ в запуска программ Linux с графическим интерфейсом в скором времени тоже устареет. Хотя бы потому, что подобный способ не соответствует главной задумке Windows Subsystem for Linux: использовать только штатные компоненты Windows и не требовать их сложной настройки.

Contents

  1. What is WSL?

    1. What is WSL 1?
    2. What is WSL 2?
  2. Enabling WSL in Windows 10

    1. Using the GUI for enabling Windows features
    2. Using PowerShell
    3. Additional Installation Resources
  3. Ubuntu on WSL

    1. Installing Ubuntu on WSL via the Microsoft Store (Recommended)
    2. Installing Ubuntu on WSL via rootfs
    3. Installing Ubuntu on WSL by sideloading the .appx
  4. Running Ubuntu on WSL

    1. Starting Ubuntu on WSL
    2. Installing Packages on Ubuntu
    3. Keeping Ubuntu Updated in WSL
    4. Hello World
  5. Advanced Topics

    1. Performance
    2. Running Graphical Applications
    3. Enabling Sound
  6. Getting Help

    1. Common Issues
    2. Reporting Windows Subsystem for Linux-specific Issues
    3. Reporting Issues in Ubuntu
    4. Reporting Issues in the Ubuntu WSL Apps
  7. Additional Resources

What is WSL?

Windows Subsystem for Linux (WSL) allows users to run a Linux terminal environment, install packages from the Ubuntu archive, and run Linux applications and workflows on Windows 10.

What is WSL 1?

The original WSL is now known as WSL1. WSL1 is a compatibility layer for running Linux binary executables (ELF) natively on Windows 10. No re-compilation or ‘porting’ of applications is required. WSL1 provides a Linux-compatible kernel interface developed by Microsoft that allows a user to choose a Linux distribution to install from the Microsoft Store. WSL1 executes unmodified Linux ELF64 binaries by operating a Linux kernel interface on top of the Windows kernel in Windows 10. The WSL1 interface translates Linux system calls from the binaries into Windows system calls and then executes them at native speed. Linux applications run within the Linux distribution which provides the application’s dependencies and package management in a container-like environment. WSL provides an interface to mount drives within WSL.

What is WSL 2?

WSL2 was announced at Microsoft Build 2019. WSL2 features a Linux kernel running inside Windows 10 and is built on the core technology of Hyper-V to provide better Linux application support and improved file performance. Transitioning to WSL2 is seamless. To update to WSL 2 you need Windows 10 version 1903 or higher, with Build 18362 or higher.

  • Announcing WSL2 — Microsoft blog announcing WSL2

  • The new Windows subsystem for Linux architecture: a deep dive — WSL2 presentation at Microsoft Build 2019

  • WSL2-Linux-Kernel — The source for the Linux kernel used in Windows Subsystem for Linux 2.

Enabling WSL in Windows 10

Before you can install Ubuntu on WSL, WSL has to be enabled in one of the following ways:

Using the GUI for enabling Windows features

  1. Open the Start Menu and search Turn Windows features on or off

  2. Select Windows Subsystem for Linux

  3. Click OK

  4. Restart your computer when prompted

Using PowerShell

  1. Open PowerShell as Administrator and run:

       1  Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
    

  2. Restart your computer when prompted

Additional Installation Resources

  • WSL Installation Guide from Microsoft

  • Windows Server Installation Guide from Microsoft

Ubuntu on WSL

Installing Ubuntu on WSL via the Microsoft Store (Recommended)

The recommended way to install Ubuntu on WSL is through the Microsoft Store.

The following Ubuntu releases are available as apps on the Microsoft Store:

  • Ubuntu 16.04 LTS (Xenial) is the first release available for WSL. It supports the x64 architecture only. (offline installer: x64)

  • Ubuntu 18.04 LTS (Bionic) is the second LTS release and the first one supporting ARM64 systems, too. (offline installers: x64, ARM64)

  • Ubuntu 20.04 LTS (Focal) is the current LTS release, supporting both x64 and ARM64 architecture.

  • Ubuntu (without the release version) always follows the recommended release, switching over to the next one when it gets the first point release. Right now it installs Ubuntu 20.04 LTS.

Each app creates a separate root file system in which Ubuntu shells are opened but app updates don’t change the root file system afterwards. Installing a different app in parallel creates a different root file system allowing you to have both Ubuntu LTS releases installed and running in case you need it for keeping compatibility with other external systems. You can also upgrade your Ubuntu 16.04 to 18.04 by running ‘do-release-upgrade’ and have three different systems running in parallel, separating production and sandboxes for experiments.

Installing Ubuntu on WSL via rootfs

Ubuntu WSL distribution rootfs daily builds are available for download:

  • Ubuntu 16.04 LTS (Xenial)

  • Ubuntu 18.04 LTS (Bionic)

  • Ubuntu 19.10 (Eoan)

  • Ubuntu 20.04 LTS (Focal)

They can be installed using the wsl command:

  •    1  wsl --import <DistributionName> <InstallLocation> <FileName>
    

Installing Ubuntu on WSL by sideloading the .appx

Ubuntu WSL distribution .appx builds are available for download:

  • Ubuntu 20.04 LTS (Focal)

  • Ubuntu 20.04 LTS arm64

  • Ubuntu 18.04 LTS (Bionic)

  • Ubuntu 18.04 LTS arm64

  • Ubuntu 16.04 LTS (Xenial)

They can be installed by enabling sideloading in Windows 10 and double-clicking the .appx and clicking Install or with PowerShell:

   1 Add-AppxPackage .CanonicalGroupLimited.Ubuntu18.04onWindows_1804.2018.817.0_x64__79rhkp1fndgsc.Appx

Running Ubuntu on WSL

Starting Ubuntu on WSL

The Ubuntu on WSL terminal can be started via:

  • The app tile in the Windows Start menu (or pinned to your taskbar)
  • WSL — Remote extension for Visual Studio Code.

  • The wsl command on the Windows command prompt or PowerShell

  • By running ubuntu1804.exe, etc. on the Windows command prompt or PowerShell

Installing Packages on Ubuntu

Package management on Ubuntu on WSL works the same as on desktop Ubuntu, using the apt package manager. apt will download and install packages from the Ubuntu archive.

First we check for updates:

We use sudo because installing packages is an administrator task and requires elevated privileges. Enter the UNIX password you created when you installed Ubuntu on WSL. This will not be your Windows password.

Next we can install a package:

For more information on managing packages with apt, see the following additional resources:

  • apt — Official Ubuntu documentation

  • InstallingSoftware

Keeping Ubuntu Updated in WSL

WSL runs its own specialized init system instead of SystemD and does not run standard Ubuntu services. Due to the services not running software updates are not applied automatically. Please keep your WSL installation using APT maintenance commands regularly. This can be accomplished with an occasional:

   1 sudo apt update
   2 sudo apt upgrade -y

Hello World

Lets write and compile a very simple Linux application on WSL. It will announce ‘Hello World!’ and then count to 10.

First, we will update apt and then install the necessary tools, often called dependencies:

   1 sudo apt update
   2 sudo apt install nim

Next, we will create and open a file named helloworld.nim:

Copy and paste the following code snippet (click ‘Toggle Line Numbers’ to hide line numbers). You can paste into the Ubuntu on WSL terminal by right-clicking with the mouse or Shift+Ctrl+’V’:

   1 echo "Hello World!"
   2 for i in countup(1, 10):
   3   echo i

Exit nano with Control+’X’ then press ‘Y’ and Enter.

Next we will compile our application back at our shell prompt:

   1 nim compile helloworld.nim

This compiles our Nim code snippet to C and then into a Linux binary named helloworld.

Then we can run our Linux binary:

You should see:

   1 Hello World
   2 1
   3 2
   4 3
   5 4
   6 5
   7 6
   8 7
   9 8
  10 9
  11 10

But we are not just on Linux, we are on WSL.

We can build and test on both Linux and Windows at the same time, including compiling our Hello World application for Windows.

To do this we need to add a dependency, mingw-w64:

   1 sudo apt install mingw-w64

Let’s compile our application again, this time creating a Windows binary:

   1 nim compile --gcc.exe:x86_64-w64-mingw32-gcc --gcc.linkerexe:x86_64-w64-mingw32-gcc --cpu:amd64 --os:windows --out:helloworld.exe helloworld.nim

Then move our binary to Windows and run it from within WSL (your path by vary based on your Windows username):

   1 mv helloworld.exe /mnt/c/Users/Hayden/OneDrive/Desktop/
   2 cmd.exe /c "C:UsersHaydenOneDriveDesktophelloworld.exe"

Learn more about Nim.

Advanced Topics

Performance

Ubuntu’s performance in WSL1 can be close to bare metal Ubuntu installations in mostly CPU-intensive tasks but file operations are much slower in WSL (see tests on Windows 10 April 2018 Update and on Windows builds from 2019). In WSL 2, CPU intensive tasks are measured to be slightly slower and file operations are generally faster than on WSL1.

Intra-WSL filesystem I/O will always be faster than WSL<->Windows filesystem I/O. It is recommended to move large files and git repos over to WSL to work with them on WSL. To improve performance of the file operations some sites suggest disabling anti-virus software. This puts your system at risk and we highly recommend against doing so.

Running Graphical Applications

The X Window System Architecture allows running the X server and the X clients on separate systems and in WSL’s case the X server can be a native Windows server providing even OpenGL acceleration and the clients can be the graphical Linux applications running in the WSL environment.

Install one from several X servers available for Windows and start it before entering the WSL environment:

  • X410

  • VcXsrv

  • MobaXTerm

  • Cygwin/C

If graphical applications can’t connect to the running X server automatically paste the following commands to the terminal before starting the applications or set them on every login by adding them to ~/.bashrc:

  •    1  export DISPLAY=:0 
       2  export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0 
       3  export LIBGL_ALWAYS_INDIRECT=1
    

Alternatively one can start the XServer (e.g., vcxsrv.exe using a saved config.xlaunch) and start a XWindows session from a Windows DOS batch file. Using this method, one can use DOS ipconfig to determine the virtual ethernet WSL2 IP and set the DISPLAY environment variable before starting the session. This is useful because the virtual ethernet IP will CHANGE with each Windows reboot (thus the need for the use of awk in the export DISPLAY above). Name the batch file whatever seems best for the purpose (note comments in this batch file code) and execute from same directory where the config.xlaunch file is (in this script c:bin):

  •    1 @echo off
       2 
       3 rem Works ONLY if Ethernet adapter vEthernet (WSL): is the LAST "adapter" in
       4 rem the ipconfig output; that is, this for loop assigns the IPs from first to
       5 rem last from the ipconfig printed output, so the WSL virtual adapter must be the 
       6 rem last one in the ipconfig output for this to work correctly.
       7 rem If you have excellent DOS batch file skills, you may find a better
       8 rem way of doing this.
       9 
      10 for /f "tokens=1-2 delims=:" %%a in ('ipconfig^|find "IPv4"') do set ip==%%b
      11 set ipAddress=%ip:~1%
      12 
      13 rem Trim whitespace
      14 
      15 call :TRIM %ipAddress% ipAddress
      16 
      17 rem Use this for testing
      18 
      19 rem echo IP Address: %ipAddress%
      20 
      21 rem Start up the xServer using saved xlaunch configuration
      22 rem This configuration creates a single large window
      23 
      24 start /B config_one_window.xlaunch
      25 
      26 rem Start up PulseAudio server, will accept audio from external
      27 rem source, i.e., from the X server 
      28 
      29 start "" /B "C:binpulseaudio-5.0-rev18pulsepulseaudio.exe"
      30 
      31 rem Call ubuntu.exe, have it run what is essentially a startup 
      32 rem script that sets two ENV variables using the ipAddress variable
      33 rem created above, which is the virtual IP to which services
      34 rem INSIDE the running X server can connect; these are the
      35 rem link between WSL2 and Windows 10
      36 rem Initiate an xfce4 session with dbus-launch
      37 rem when the X server is killed, do cleanup by 
      38 rem killing pulseadio and vcxsrv
      39 
      40 <PATH_TO_UBUNTU_EXE>ubuntu.exe run "export DISPLAY="%ipAddress%:0.0"; export PULSE_SERVER="%ipAddress%"; if [ -z "$(pidof xfce4-session)" ]; then  dbus-launch --exit-with-session ~/.xsession; pkill '(gpg|ssh)-agent'; taskkill.exe /IM pulseaudio.exe /F; taskkill.exe /IM vcxsrv.exe; fi;"
      41 
      42 rem Function to trim white space or the export VARIABLE will fail
      43 
      44 :TRIM
      45 SET %2=%1
      46 GOTO :EOF
    

Enabling Sound

The WSL environment does not support audio, but it can be enabled by installing the PulseAudio server on Windows following this guide. With the latest wslu package installed the starting Ubuntu app detects the running PulseAudio server and enables audio.

Getting Help

Common Issues

  • ‘WSL 2 requires an update to its kernel component.’ Solution

  • Error codes, e.g. ‘Error: 0x80070002’ Solution

Reporting Windows Subsystem for Linux-specific Issues

Please report general WSL issues on GitHub.

Reporting Issues in Ubuntu

Please use the standard Ubuntu channels described in ReportingBugs.

Reporting Issues in the Ubuntu WSL Apps

Please report issues related to WSL-specific features in Ubuntu on WSL here.

Additional Resources

  • Official Microsoft Documentation for WSL

  • wsl.exe command line reference

  • Awesome-WSL

  • ##windows-wsl on Freenode

Упоминаются ли Linux и Windows вместе?

Если да, то что это за объединение?

Может ли это быть чем-то, что позволит преодолеть разрыв между двумя мирами?

В прошлом люди, использующие технологический стек Microsoft, применяли Windows в качестве среды разработки, в то время как другие, более заинтересованные в сообществе разработчиков с открытым исходным кодом, предпочитали Linux.

До появления подсистемы Windows для Linux (WSL) между ними существовала четкая пропасть, и они никогда ничем не делились.

Но с появлением WSL разработчики теперь могут работать в Linux на своем настольном компьютере версии Windows 10 с помощью подсистемы Windows Subsystem for Linux или Windows WSL.

Запуск системы Linux рядом с системой Windows значительно упрощается и становится более гибким благодаря WSL.

Kali Linux в подсистеме Windows для Linux

Содержание

  1. Что такое подсистема Windows для Linux?
  2. Сравнение WSL1 и WSL2
  3. Для чего нужна подсистема Windows для Linux?
  4. Зачем использовать WSL вместо Linux на виртуальной машине?
  5. Как настроить среду разработки WSL?
  6. Установите дистрибутив Linux
  7. Создание логина и пароля Linux
  8. Обновление и модернизация пакетов
  9. Можно включить больше дистрибутивов
  10. Настройка терминала Windows
  11. Хранение файлов
  12. Выберите редактор кода
  13. Использование Visual Studio Code
  14. Использование Visual Studio
  15. Использование Git для управления версиями
  16. Настройка Docker для удаленной разработки
  17. Создание базы данных
  18. Настройка GPU
  19. Используйте основные команды WSL
  20. Монтирование внешнего диска или USB
  21. Запуск приложений с графическим интерфейсом Linux
  22. Плюсы и минусы использования подсистемы Windows для Linux
  23. Плюсы
  24. Минусы
  25. Заключение

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

Подсистема Windows Subsystem for Linux (WSL) позволяет исполняемым файлам Linux 64-разрядного формата (ELF64) работать на ядре Windows в операционной системе (ОС) Windows 10.

WSL – это компонент, который позволяет использовать средства разработки Linux на компьютерах Windows, но не рабочие нагрузки.

Изначально он был разработан как вариант установки клиентской системы Windows.

Для администрирования экземпляра Linux в состав WSL входит служба управления сеансами в пользовательском режиме, уменьшенные процессы Pico для обработки системных вызовов Linux и драйверы Pico для имитации ядра Linux.

Такая архитектура позволяет ядру Windows принимать и обрабатывать системные вызовы Linux.

На прошлой неделе компания Microsoft объявила, что Windows Subsystem for Linux версии 2 (WSL2) теперь совместима с Windows Server 2022.

Основными причинами для перехода с WSL 1 на WSL 2 являются:

  • Ускорение работы файловой системы
  • Поддержка совместимости системных вызовов.

WSL 2 запускает ядро Linux внутри легковесной виртуальной машины с использованием новейшей технологии виртуализации (VM).

Однако WSL 2 не является типичной виртуальной машиной.

Сравнение WSL1 и WSL2

За исключением производительности в файловых системах разных ОС, которую можно решить, храня файлы проекта в той же операционной системе, что и инструменты, используемые для работы над проектом, архитектура WSL 2 по многим параметрам превосходит WSL 1.

Только Windows 11 или 10, версия 1903, Build 18362 или более поздняя поддерживают WSL 2.

Другими ключевыми различиями между обеими версиями являются:

  • Архитектурное различие
  • Производительность ввода-вывода файлов
  • WSL 2 обеспечивает полную совместимость с системными вызовами

На Linux системные вызовы используются для доступа к файлам, запроса памяти и запуска процессов.

В отличие от WSL 1, которая была основана на слое трансляции, созданном командой WSL, WSL 2 имеет встроенное ядро Linux, которое работает со всеми системными вызовами.

Для чего нужна подсистема Windows для Linux?

С помощью подсистемы Windows для Linux вы можете:

  • Выбрать дистрибутивы GNU/Linux, которые вы предпочитаете, из магазина Microsoft.
  • Запустить бинарники ELF-64 или стандартные инструменты командной строки, такие как grep, sed или awk.
  • Запускать программы командной строки GNU/Linux и скрипты оболочки Bash, включая: Инструменты: tmux, emacs и vi, Языки: Go, Rust, NodeJS, Javascript, Python, Ruby, C/C++, C# и F#, Сервисы: PostgreSQL, MongoDB, Apache, MySQL, SSHD и lighttpd.
  • Установить дополнительное программное обеспечение с помощью менеджера пакетов в вашем собственном дистрибутиве GNU/Linux.
  • Использовать оболочку командной строки, аналогичную Unix, для запуска приложений Windows.
  • Запускать программы GNU/Linux на компьютере с Windows.
  • Запускать Linux в оболочке Bash (Ubuntu, Debian, OpenSUSE, Kali, Alpine и т.д.). Вы можете использовать Bash для запуска утилит и программ командной строки Linux.

Зачем использовать WSL вместо Linux на виртуальной машине?

WSL использует меньше ресурсов (процессор, память и хранилище), чем целая виртуальная машина.

Наряду с запуском инструментов и приложений командной строки Linux наряду с приложениями командной строки, рабочего стола и магазина Windows, WSL также позволяет вам получать доступ к файлам Windows из Linux и запускать инструменты и приложения командной строки Linux.

Это позволяет использовать как приложения Windows, так и инструменты командной строки Linux на одном и том же наборе файлов.

Как настроить среду разработки WSL?

В составе операционной системы Windows есть подсистема для Linux, которая называется Windows Subsystem for Linux.

Вот краткое руководство по настройке среды разработки WSL:

Установите дистрибутив Linux

Перед включением WSL установите дистрибутив Linux.

Чтобы воспользоваться преимуществами команды упрощенной установки, вы должны использовать последнюю версию Windows (Build 20262+).

Чтобы узнать, какая у вас версия и номер сборки, нажмите клавишу с логотипом Windows + R, введите winver и нажмите OK.

Обновления можно выполнить через меню Настройки или помощник обновления Windows.

Создание логина и пароля Linux

После завершения процесса установки WSL откройте дистрибутив Linux (по умолчанию Ubuntu).

Для вашего дистрибутива Linux должны быть созданы имена пользователей и пароли.

Обновление и модернизация пакетов

Используйте менеджер пакетов вашего дистрибутива для частого обновления пакетов.

Windows не выполняет автоматических обновлений и модернизаций.

Большинство пользователей Linux предпочитают справляться с этой задачей самостоятельно.

Можно включить больше дистрибутивов

Если вы хотите установить больше дистрибутивов Linux через Microsoft Store, вы можете загрузить свой собственный дистрибутив, использовать команду -import или загрузить свой собственный дистрибутив из Интернета.

Кроме того, вы можете создать уникальные образы WSL и распространить их по всей компании.

Настройка терминала Windows

Любое приложение, имеющее интерфейс командной строки, может быть запущено через терминал Windows.

Механизм рендеринга текста с ускорением GPU, множество вкладок и панелей, совместимость с символами Unicode и UTF-8, возможность создания собственных тем, а также возможность изменения текста, цвета фона и ярлыков – вот лишь некоторые из его ключевых особенностей.

При установке нового дистрибутива WSL Linux внутри терминала Windows будет создан его свежий экземпляр, который можно настроить по своему вкусу.

Хранение файлов

Храните файлы проекта на том же компьютере, что и оборудование, которое вы собираетесь использовать.

Наибольшая скорость работы достигается при сохранении файлов в файловой системе WSL (Ubuntu, OpenSUSE и т.д.).

Для сохранения файлов в файловой системе Windows можно использовать командную строку Windows (PowerShell, Command Prompt) и инструменты Windows.

Хотя файлы можно просматривать из любой операционной системы, производительность может заметно снизиться.

Выберите редактор кода

Поскольку они изначально позволяют осуществлять удаленную разработку и отладку WSL, мы советуем использовать Visual Studio Code или Visual Studio.

С помощью Visual Studio Code вы можете использовать WSL как полнофункциональную среду программирования.

Visual Studio обеспечивает встроенную поддержку WSL для кроссплатформенной разработки на C++.

Использование Visual Studio Code

Вы можете использовать WSL в качестве основной среды разработки из VS Code с помощью расширения Remote – WSL и Visual Studio Code.

После установки и настройки VS Code вы можете использовать удаленный сервер VS Code для запуска вашего WSL-проекта.

Использование Visual Studio

Используя один и тот же экземпляр Visual Studio 2022, вы можете собирать и отлаживать проекты CMake на Windows, WSL-дистрибутивах и SSH-соединениях.

Использование Git для управления версиями

Наиболее распространенная программа управления версиями называется Git.

С помощью Git вы можете отслеживать изменения, которые вы вносите в файлы, чтобы иметь запись о том, что было сделано, и при необходимости вернуться к более старым версиям.

Git также облегчает сотрудничество, позволяя объединять правки нескольких авторов в одном хранилище.

Настройка Docker для удаленной разработки

Docker Desktop предлагает среду разработки для создания, распространения и запуска докеризованных приложений для Windows.

Вы можете запускать контейнеры Linux и Windows в Docker Desktop на одной машине, включив механизм на базе WSL 2.

Создание базы данных

Начните с подключения вашего проекта в WSL к базе данных. С MySQL, PostgreSQL, MongoDB, Redis, Microsoft SQL Server или SQLite вы сможете быстро приступить к работе.

Настройка GPU

Подсистема Windows для Linux (WSL) предоставляет отличную среду для запуска наиболее распространенных и популярных приложений машинного обучения с GPU-ускорением, независимо от того, являетесь ли вы специалистом по исследованию данных, инженером по ML или только начинаете работать с ML. Итак, вашим следующим шагом должна стать установка и запуск GPU.

Используйте основные команды WSL

Лучший способ администрирования дистрибутивов Linux, установленных через WSL, – это PowerShell или Windows Command Prompt (CMD).

Монтирование внешнего диска или USB

Используйте WSL 2 для монтирования диска и чтения его содержимого, если вам нужен доступ к диску формата Linux, который Windows не поддерживает.

Процедуры поиска диска и раздела для подключения к WSL2, их монтирования и получения доступа к ним рассматриваются в этом уроке.

Запуск приложений с графическим интерфейсом Linux

Чтобы запускать программы Linux GUI (X11 и Wayland) на Windows в полностью интегрированной среде рабочего стола, теперь вы можете изучить совместимость с Windows Subsystem for Linux (WSL).

Благодаря WSL 2 приложения с графическим интерфейсом Linux на Windows теперь могут ощущаться как родные и интуитивно понятные.

Плюсы и минусы использования подсистемы Windows для Linux

Вот некоторые плюсы и минусы использования Windows Subsystem для Linux.

Плюсы

Идеально подходит для разработчиков, использующих инструменты с открытым исходным кодом

Если вы разработчик, уже использующий инструменты с открытым исходным кодом, ничто не сравнится с подсистемой Windows для Linux.

Она идеально подходит для тех, кто хочет использовать существующий язык разработки и инструменты сборки, или для тех, кто хочет воспользоваться преимуществами своих любимых языков программирования, которые могут работать как в Windows, так и в Linux.

В последние годы поддержка Linux со стороны Microsoft постоянно улучшается, но она все еще не настолько совершенна, как при использовании виртуальной машины или контейнера.

Но если вам нужно запустить свой код на нескольких платформах, это один из единственных вариантов, который позволит вам сделать это без необходимости устанавливать что-либо на свой компьютер.

Совместимость Windows-Linux

Совместимость Windows и Linux обеспечивается с помощью WSL.

Файловая система как Windows, так и Linux доступна для просмотра.

Кроме того, они могут запускать программы из командных интерпретаторов друг друга.

Это может привести к появлению некоторых интригующих приложений и, возможно, к переходу от рассмотрения этих двух систем как конкурентов к рассмотрению их как взаимодополняющих параметров.

Проще, чем двойная загрузка или виртуальные машины

Вам не нужно перезагружаться или запускать виртуальную машину, поскольку WSL уже работает в Windows.

При установке системы с двойной загрузкой необходимо оставить место на жестком диске и убедиться, что у вас есть резервный носитель для загрузки в случае, если что-то пойдет не так.

Вы должны перезагрузить систему, если хотите использовать Windows для выполнения программ Linux или наоборот.

Хотя виртуальная машина (VM) является более простой и быстрой в настройке, Windows и Linux сталкиваются с трудностями при обмене данными, поскольку VM все еще является принципиально другой машиной.

На виртуальной системе часто требуется настройка файлового сервера. Кроме того, виртуальные машины имеют стоимость производительности.

Простое введение в Linux для пользователей Windows

Для тех, кто не знаком с Linux, WSL может стать лучшей отправной точкой.

Они могут познакомиться с командами Linux, не устанавливая полностью новую операционную систему. WSL можно установить всего несколькими щелчками мыши из магазина Microsoft Store.

Кроме того, это облегчит людям переход на Linux.

Минусы

Вы продолжаете использовать Windows

Поскольку использование WSL все равно подразумевает участие в этой экосистеме, ее использование вызывает возражения у тех, кто идеологически не приемлет Microsoft и проприетарное ПО.

WSL будет поддерживать участие в этой системе.

Для ярых сторонников свободного программного обеспечения не подойдет ничто иное, как ПК под управлением свободной версии GNU/Linux.

WSL создавалась не для серверов

Дистрибутивы не предназначены для работы в качестве серверов, хотя WSL может быть установлена на Windows Server.

Запустить такие серверы, как Apache или MariaDB на Ubuntu сложнее, поскольку система не поддерживается.

Большинство пользователей, которым требуются серверы, устанавливают обычные Linux-серверы, поэтому этот недостаток может быть не столь существенным.

WSL может препятствовать внедрению Linux на настольных компьютерах

Меньшему числу пользователей может понадобиться установка настольной версии Linux, поскольку WSL совместима с Windows.

Учитывая, что у них уже есть настольная система Windows и они могут запускать приложения Linux GUI на Windows, они могут не видеть необходимости в установке совершенно новой настольной ОС.

Предположим, что только крошечный процент пользователей Linux работает с полным рабочим столом.

В этом случае, возможно, не будет прилагаться столько усилий для улучшения совместимости оборудования, что может только усугубить проблемы с рабочим столом Linux.

Заключение

В своем нынешнем виде WSL – это довольно крутой прогресс в Windows.

Разработчики, работающие в Windows, могут получить доступ к среде Linux благодаря Windows Subsystem for Linux.

WSL предлагает ядро Linux и позволяет установить несколько дистрибутивов внутри среды Windows, устраняя необходимость запускать виртуальную машину или полагаться на удаленный компьютер с Linux для разработки.

Конечная цель – предоставить простой способ запуска Linux в Windows.

Самое главное, WSL не занимает много памяти (например, около 256 МБ для Bash), что означает, что ваша машина может работать быстрее и плавнее.

WSL-1607-000.pngВзаимоотношения Windows и Linux долгое время были натянутыми, а совместному применению обеих систем мешало большое количество разного рода барьеров, многие из которых были возведены искусственно. Но в последнее время все поменялось и Microsoft неожиданно для многих представила подсистему Windows для Linux, более известную как «Ubuntu в Windows 10». В данной статье мы расскажем, чем данная подсистема является, чем не является и для чего ее можно использовать.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Что такое подсистема Windows для Linux (Windows Subsystem for Linux, WSL)? Это не эмулятор и не виртуальная машина, а именно подсистема, основная задача которой — создать для разработчиков и тестеров привычное Linux окружение в среде Windows. Цели создать полноценную систему у разработчиков не стояло и не стоит, поэтому не следует рассматривать WSL как полноценную замену виртуальной машине, у WSL иные задачи.

Кроме предоставления пользователям Windows привычного Linux окружения разработчики WSL поставили во главу угла вопрос максимальной интеграции двух систем, чтобы вы могли без особых затруднений работать с вашими данными из любой среды. Собственно, с этим и связан ряд ограничений.

Прежде всего это коснулось файловой системы, для работы Linux подсистемы с диском используется дополнительный слой абстракции в виде Virtual File System (VFS), которая позволяет Linux работать с собственными файлами, расположенными на NTFS, и вообще вся инсталляция Linux представляет собой обычную папку, которую вы можете открыть через проводник, точно также в среде Linux вы можете перемещаться по файловой системе Windows.

WSL-1607-001.pngУдобно? Да. Но ради этого пришлось отказаться от собственных инструментов Linux по работе с файловой системой и дисками, также вы не сможете использовать FUSE.

Второе ограничение связано с сетью, в Windows 10 1607 сетевая подсистема Linux в WSL не реализована, частично это исправлено в Windows 10 1703, но рассчитывать на полноценную работу с сетью не стоит, потому как сетевой стек Linux в WSL заменен еще одним слоем абстракции, позволяющим использовать для работы сетевые возможности Windows.

После прочтения этих строк многим может показаться, что Microsoft подсунула им какую-то урезанную версию Linux, но здесь следует остановиться и еще раз перечитать первые абзацы данной статьи: WSL — не виртуальная машина, это — подсистема.

В чем плюсы данного подхода? Во-первых — экономия ресурсов, запущенная виртуальная машина гарантированно потребляет нужный для работы ОС объем оперативной памяти, не оптимально расходует дисковое пространство, хотя бы потому что вам придется держать две копии рабочих файлов, на хосте и внутри виртуалки. Это может быть критично для слабых машин, например, для ноутбука, который, зато удобно брать с собой для демонстрации результата работы заказчику.

Во-вторых, простой совместный доступ к данным из обоих сред. Вы можете редактировать нужный файл в любимом редакторе под Windows и тут-же видеть результаты в работающем на Linux приложении.

И наконец, это полноценная Linux среда, аналогичная производственной, поэтому вы можете быть уверены, что с переносом в рабочую среду проблем у вас не возникнет, особенно если там вы используете аналогичные версии ПО.

Как установить подсистему Windows для Linux

Установить WSL довольно просто, для начала воспользуйтесь новой Панелью управления и включите в ней Режим разработчика.

WSL-1607-002.png

Затем в классической Панели управления откройте оснастку Программы и компоненты — Включение и отключение компонентов Windows и установите компонент Подсистема Windows для Linux (бета-версия).

WSL-1607-003.pngТеперь откройте командную строку и выполните команду:

bash

затем ответьте на несколько простых вопросов.

Важно! Для успешной установки WSL вы должны осуществить вход в систему с учетной записью Microsoft.

WSL-1607-004.pngНа этом установка закончена и вас встречает командная строка Linux, можете начинать обживать систему. В этом плане WSL ничем не отличается от обычного Linux, в вашем распоряжении привычный пакетный менеджер и родные репозитории Ubuntu. В Windows 10 1607 это Ubuntu 14.04 LTS, а в выпуске 1703 — Ubuntu 16.04 LTS, которая также была доступна в инсайдерских версиях.

WSL-1607-005.pngПодсистема установлена, это хорошо, самое время рассмотреть ее типичные применения.

Администрирование Linux-систем

Как известно, для удаленного администрирования Linux нет ничего лучше Linux. Если же ваша основная система Windows, то для работы с Linux серверами вам потребуется сразу несколько инструментов, как правило джентельменский набор составляют PuTTY и WinSCP, если вы используете аутентификацию по ключам, то к ним еще добавится Pageant. Это проверенные временем и эффективные инструменты, но постоянно переключаться между ними не совсем удобно.

Используя WSL, вы окунаетесь в родную среду и вам не нужно постоянно скакать между окнами. Тем более что SSH позволяет делать много интересных вещей. Например, удаленно выполнять команды и скрипты, получая результат на свой ПК. Допустим вы хотите скопировать с рабочего сервера свой конфиг Squid, чтобы разместить его на форуме. Нет ничего проще, выполните что-то вроде:

ssh user@example.com 'cat /etc/squid3/squid.conf' | grep -v '^#' | sed '/^$/d' > /mnt/c/Users/andrey/Desktop/mysquid.conf.txt

Первая часть команды соединяется по SSH с удаленным сервером example.com под учетной записью user и выводит в стандартный поток локальной системы содержимое squid.conf. Затем мы выбираем все строки, кроме комментариев, удаляем пустые, и выводим то, что осталось в файл на рабочем столе Windows-системы.

WSL-1607-006.png

Как видим, WSL позволяет удобно соединить в единое пространство удаленную систему, локальный Linux и вашу Windows. Никаких преград больше нет, передавайте и обрабатывайте файлы не задумываясь где они находятся и откуда и куда их надо скопировать или переместить.

Также вы можете легко выполнять на удаленном сервере локальные скрипты, особенно если их размещение в удаленной системе нежелательно (потенциально небезопасны, содержат приватные данные и т.д.). Для этого выполните:

ssh user@example.com 'bash -s' < local_script.sh

Вообще на данную тему можно говорить бесконечно, а так как задача данной статьи познакомить вас с основными применениями WSL, то закончим на этом и пойдем дальше.

Разработка

Если вы занимаетесь разработкой на PHP, Python и т.п. языках, то вы можете отлаживать собственные проекты сразу в родной среде, продолжая при этом использовать привычные инструменты разработки. Достаточно разместить проект в контейнере WSL и одновременно работать с ним из Windows-приложений, так как все данные внутри WSL доступны через обычный проводник.

Это удобно тем, что вы сразу видите результат ваших действий, достаточно просто сохранить изменения. Не нужно передавать измененный файл на тестовый сервер, контролировать версии и т.д., и т.п.

Кроме того, можно и наоборот использовать Linux-инструменты для работы с Windows проектами, например, git. Да, он существует и под Windows, но более удобно работать с ним в его родной среде.

Чтобы создать git-репозиторий, скажем, проекта Visual Studio, достаточно перейти в в его каталог и инициализировать новый репозиторий:

cd /mnt/c/Users/andrey.DESKTOP-D6QHDVP/Documents/Visual Studio 2017/Projects/WindowsApp1/
git init

Собственно, данная задача — одно из основных предназначений WSL — предоставить разработчикам удобную мультиплатформенную среду. Следует признать, что это у Microsoft получилось.

Сайтостроение

Мы сознательно не стали включать этот вид деятельности в разработку, так как при всей схожести они имеют и достаточно различий. Если разработка подразумевает написание собственного веб-приложения или серьезную доработку существующего, то сайтостроение чаще подразумевает работу с готовыми решениями, а основные изменения как правило касаются внешнего вида и вносятся на уровне шаблона или CSS.

В качестве тестового сервера для такой работы обычно используется что-то вроде XAMMP/Денвер/Open Server и т.д. Нисколько не умаляя достоинств этих пакетов следует признать и их серьезные недостатки. Главный из которых — существенное отличие тестовой среды от производственной, что может породить проблемы при переносе проекта. Это могут быть как ошибки в путях, так и более серьезные проблемы, связанные с неправильным конфигурированием веб-сервера (например, через директивы htaccess), либо отсутствием каких-либо модулей.

Кроме того данные пакеты не позволяют выполнить еще одну важную задачу — проверку производительности и ее тонкую настройку, которую придется выполнять уже в производственной среде.

Подсистема Windows для Linux будет настоящей находкой в данном случае, потому что позволяет запустить локально полную копию производственной среды и работать в условиях максимально приближенным к реальным. А дополнительное удобство обеспечивается тем, что все файлы вашего сайта также будут доступны локально в Windows-системе, что дает возможность использовать привычные инструменты для работы с ними.

WSL-1607-007.pngКроме того, вы можете использовать все богатство инструментов Linux для отладки вашего сайта, например, curl для работы c HTTP-запросами. Да, curl есть и под Windows, но в Linux мы легко можем передать результат по конвейеру и обработать его нужным нам образом. Довольно распространенной задачей при переходе на HTTPS является поиск небезопасного содержимого, обычно это картинки или скрипты подключенные в коде страницы по небезопасному протоколу, эту задачу легко решить, скомбинировав работу двух команд:

curl https://example.com/index.html | grep http://

WSL-1607-008.pngКак видим, для веб-разработчика WSL представляет не только удобную тестовую среду, но и является удобным инструментом по отладке, заменяя множество отдельных утилит и инструментов.

Работа с файлами и данными Windows

Мы думаем, что каждый, кто работал в Linux отмечал все богатство и широкие возможности консольных утилит в плане обработки и изменения данных. Быстро найти и отобрать по фильтру, произвести замену одного значения на другое, причем все это одновременно и с выводом результата в нужное место. Теперь все это доступно вам и в Windows.

Многие задачи, которые в Windows требуют применения стороннего софта или написания пакетных файлов в Linux часто решаются в одну строку. Например, пакетное переименование по маске:

rename 's/DSCN/My_Photo/g' *.JPG

Приведенная выше команда переименует в текущей директории все файлы JPG с именем типа DSCN1023.JPG в файлы вида My_Photo1023.JPG. Другая распространенная задача — заменить пробелы в именах файлов на подчеркивание. Тоже очень просто:

rename 's/ /_/g' *

Задача посложнее. Есть некая база в формате CSV, которая содержит ФИО, телефон и еще некоторую информацию, допустим нам надо отобрать из нее записи по каждому из мобильных операторов. Отлично, набираем в консоли:

cat base.csv | egrep "7910|7919|7980" > mts.csv

После ее выполнения получим новый файл, который содержит записи только с телефонами оператора МТС, коды которого мы указали как условие для утилиты egrep.

Естественно, возможности подсистемы Windows для Linux не исчерпываются перечисленными примерами, мы привели лишь некоторые из них, чтобы вы могли лучше понять, для чего предназначена данная подсистема и что можно делать с ее помощью. Надеемся, что данный инструмент займет достойное место в вашей системе и поможет наиболее эффективно использовать все достоинства каждой из ОС.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Like this post? Please share to your friends:
  • Wsl windows 11 для чего нужен
  • Wsl windows 10 установка без магазина
  • Wsl 2 windows 10 docker install
  • Wsl 2 installation is incomplete windows 10 ошибка
  • Wsearch что это за служба windows 10