Сегодня покажу как поставить WSL (Windows Subsystem for Linux) на Windows 11
- Что такое WSL и для чего она нужна
- Гайд по установке WSL
- Настройка компилятора
- Что делать, если WSL потребляет избыточное количество оперативной памяти
WSL (Windows Subsystem for Linux) — это среда выполнения Linux, предоставляемая операционной системой Windows. WSL позволяет запускать исполняемые файлы Linux напрямую в Windows без необходимости установки отдельной виртуальной машины или перезагрузки компьютера.
WSL обеспечивает совместимость с ядром Linux, что позволяет пользователям запускать большинство командной строки и приложений Linux непосредственно в Windows. Оно включает в себя поддержку большинства дистрибутивов Linux, таких как Ubuntu, Debian, Fedora и других, и предлагает доступ к огромному количеству программ и утилит, которые разработаны для Linux.
Теперь перейдём к гайду
За основу для этой статьи я взял инструкцию Microsoft: Установка Linux на Windows с помощью WSL, начнём.
Открываем PowerShell или Terminal от имени администратора
Вводим следующую команду: wsl —install
Ждём
По завершении установки перезагружаем наш ПК.
Мне нравится Ubuntu, поэтому я не буду её менять, но если ты хочешь поменять дистрибутив, то вот ссылка на инструкцию.
Теперь после установки WSL необходимо создать учетную запись пользователя и пароль для установленного дистрибутива Linux (в моём случаи речь идёт про Ubuntu):
На случай, если что-то пошло не так на этапе создания учётной записи вот мини-туториал как это можно исправить.
Важный нюанс: Windows не выполняет автоматическую установку обновлений или обновление дистрибутивов Linux. Это задача, выполнение которой большинство пользователей Linux предпочитают контролировать самостоятельно. Поэтому обновим нашу подсистему с помощью этой команды: sudo apt update && sudo apt upgrade
Я использую WSL, чтобы компилировать программы на языке С, поэтому покажу команды для установки компилятора.
По очереди:
sudo apt-get update
sudo apt-get install cmake gcc clang gdb build-essential
sudo apt-get install valgrind
Важный момент: Проверим, установился ли у нас компилятор, должен появится номер: gcc —version
Бонусом, я покажу, как снизить потребление оперативной памяти нашей подсистемой:
Есть два пути
Путь первый:
Открываем командную строку от администратора и вставить команду
wsl —shutdown, эта команда завершит процесс VmmemWSL.
Чтобы легко открыть командную строку можно зажать кнопки Win + X > пункт PowerShell (Администратор) > команда start cmd > нажимаем Enter.
Путь второй:
Можно также ограничить ресурсы Vmmem путем создания файла %UserProfile%\.wslconfig, внутри которого прописать:
[wsl2]
memory=2GB # Ограничиваем память для WSL2 VM.processors=5 # Ограничиваем количество процессов для WSL2 VM.
Чтобы создать файл с названием .wslconfig — нужно открыть блокнот Win + R > notepad > вставить содержимое > Сохранить как > в Тип файла указать Все файлы, после указать название и сохранить.
Кстати говоря, в этом файлике можете попробовать поставить значение memory равное 1, может ещё меньше будет))
На этом у меня всё, надеюсь моя статья помогла тебе решить твою проблему))
Благодарю за прочтение!
From Wikipedia, the free encyclopedia
Windows Subsystem for Linux
|
Bash running on Windows 10 |
|
| Other names | WSL |
|---|---|
| Developer(s) | Microsoft |
| Initial release | 2 August 2016; 8 years ago |
| Stable release |
2.4.10 |
| Preview release |
2.4.9 |
| Repository | github |
| Operating system | Windows 11, Windows 10, Windows 10 LTSB/LTSC, Windows Server 2025, Windows Server 2022, Windows Server 2019, Windows Server 2016 |
| 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 |
Windows Subsystem for Linux (WSL) is a feature of Microsoft Windows that allows the use of a GNU/Linux environment from within Windows, foregoing the overhead of a virtual machine and being an alternative to dual booting. The WSL command-line interface tool is installed by default in Windows 11, but a distribution must be downloaded and installed through it before use.[3] In Windows 10, WSL can be installed either by joining the Windows Insider program or manually via Microsoft Store or Winget.[4]
The original version, WSL 1, differs significantly from the second major version, WSL 2. WSL 1 (released August 2, 2016), acted as a compatibility layer for running Linux binary executables (in ELF format) by implementing Linux system calls in the Windows kernel.[5] WSL 2 (announced May 2019[6]), introduced a real Linux kernel – a managed virtual machine (via Hyper-V) that implements the full Linux kernel. As a result, WSL 2 is compatible with more Linux binaries as not all system calls were implemented in WSL 1.[7]
Microsoft offers WSL for a variety of reasons. Microsoft envisions WSL as «a tool for developers – especially web developers and those who work on or with open source projects».[8] Microsoft also claims that «WSL requires fewer resources (CPU, memory, and storage) than a full virtual machine» (a common alternative for using Linux in Windows), while also allowing the use of both Windows and Linux tools on the same set of files.[8]
Microsoft’s first foray into achieving Unix-like compatibility on Windows was 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 aimed for native Linux compatibility.[citation needed] 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.[citation needed] Only Ubuntu (with Bash as the default shell) was supported.[citation needed] 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.[citation needed] Multiple Linux distributions could be installed and were available for install in the Windows Store.[12]
Though the initial design of WSL was faster and more popular[according to whom?] than the previous UNIX-on-Windows projects, Windows kernel engineers found difficulty in trying to increase WSL’s performance and system call compatibility by trying to reshape the existing NT kernel to recognize and operate correctly on Linux’s API.[citation needed] 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.[13] In 2019, Microsoft announced a completely redesigned WSL architecture (WSL 2) using this lightweight VM technology hosting actual (customized) Linux kernel images, claiming to provide full syscall compatibility.[7] Microsoft announced WSL 2 on May 6, 2019,[6] and it was shipped with Windows 10 version 2004.[14] It was also backported to Windows 10 version 1903 and 1909.[15]
GPU support for WSL 2 to run GPU-accelerated machine learning was introduced in Windows build 20150.[16] GUI support for WSL 2 to run Linux applications with graphical user interfaces (GUIs) was introduced in Windows build 21364.[17] Both are shipped in Windows 11.[citation needed]
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.[18][17] 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.[19]
On October 11, 2021, Microsoft introduced a version of WSL in the Microsoft Store for Windows 11.[20] It reached version 1.0.0 in November 2022 with added support for Windows 10.[citation needed]
In November 2024, Microsoft announced new features coming to WSL intended to improve the experience for new users, including a window with new «getting started» navigation tips and explanations.[21]
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 | Generally available; Windows 10 support |
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,[22][23][24][25] openSUSE,[26] SUSE Linux Enterprise Server,[27][28][12] Debian[29] and Kali Linux.[30] 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).[8]
The architecture was redesigned in WSL 2,[6] with a Linux kernel running in a lightweight virtual machine environment.
The wsl.exe command accesses and manages Linux distributions in WSL via command-line interface (CLI) – for example via Command Prompt or PowerShell. With no arguments it enters the default distribution shell. It can list available distributions, set a default distribution, and uninstall distributions.[31] It can also run a Linux command[32] – replacing lxrun.exe which is deprecated as of Windows 10 1803 and later.[33]
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.[34] WSLg was officially released at the Microsoft Build 2021 conference and is included in Windows 10 Insider build 21364 or later.[19] 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.[35] FreeRDP is used to encode all communications going from the Remote Desktop Protocol (RDP) Server (in Weston) to the RDP Client (msrdc on Windows[36]) according to the RDP protocol specifications.[37]
Prerequisites for running WSLg include:
- Windows 11 or Windows 10 Insider Preview builds 21362–21390.[34][38]
- A system with virtual GPU (vGPU) enabled for WSL is recommended, as it will allow benefits from hardware accelerated OpenGL rendering.[34]
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 processes, as well as handling the Linux system calls and the binary locks during their execution.[39] All processes invoked by a particular user go into a so called «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 made 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 administrator privileges, and allow such access.[8]
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 total lack of Linux 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.[8]
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.[7] In June 2020, a benchmark with 173 tests on WSL 2 (20H2) with an AMD Ryzen Threadripper 3970X showed an average of 87% of the performance of native Ubuntu 20.04 LTS. In contrast, WSL 1 had only 70% of the performance of native Ubuntu. WSL 2 improves I/O performance, providing a near-native level.[50]
A comparison of 69 tests with an Intel Core i9-10900K in May 2020 resulted in nearly the same relative performance.[51] In December 2020, a benchmark with 43 tests on WSL 2 (20H2) with an AMD Ryzen 9 5900X displayed an average of 93% of the performance of native 20.04.1 LTS, compared to WSL 1 which only achieved 73%.[52]
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 do not 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.[6] From Windows an IFS network redirector is provided for Linux guest file access using the UNC path prefix of \\wsl$.[citation needed]
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.[4]
WSL 2 on Windows 11 retains 95% of the performance of native Ubuntu 20.04 LTS.[58]
WSL 1 and WSL 2 both support IPv6 connections.[59][60] IPv6 support in WSL 2 requires Windows 11 or newer.[61]
Reception and criticism
[edit]
In 2017 Richard Stallman expressed concerns that integrating GNU functionality into Windows would hinder the development of free software, calling efforts like WSL «a step backward in the campaign for freedom.»[62]
In 2021, Jim Salter writing for Ars Technica called WSL «the best part of Windows 11,» noting the ability to run applications with graphics and sound and install multiple distributions side-by-side.[63]
WSL has most widely been described as a tool used and useful for developers,[64] and not generally as being recommended for end users.[65][66][67] Reviewers criticized some limitations, noting that it is not the same as having Linux and that it suffers from some performance limitations, including slow disk I/O.[64]
- Azure Sphere
- FreeBSD § OS compatibility layers
- SmartOS § Virtualization
- Windows Terminal
- Xenix
- ^ «Release 2.4.10 · microsoft/WSL». GitHub. 2 February 2025. Retrieved 6 February 2025.
- ^ «Release 2.4.9 · microsoft/WSL». GitHub. Retrieved 6 February 2025.
- ^ «How to install Linux on Windows with WSL». Microsoft. 19 November 2024. Retrieved 25 February 2025.
- ^ a b pokhrel, bishal (27 December 2023). «Install WSL on Windows 10 or 11». Droid Crafts.
- ^ 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. pp. 18–19. ISBN 978-1-80056-352-0. OCLC 1202451000.
- ^ a b c d Craig Loewen (6 May 2019). «Announcing WSL 2». Windows Command Line Tools For Developers.
- ^ a b c mscraigloewen (19 November 2024). «About WSL 2». docs.microsoft.com.
- ^ a b c d e «Frequently Asked Questions for WSL». Microsoft. Retrieved 13 November 2016.
- ^ Bright, Peter (6 April 2016). «Why Microsoft needed to make Windows run Linux software». Ars Technica. Condé Nast.
- ^ Aul, Gabe (6 April 2016). «Announcing Windows 10 Insider Preview Build 14316». Windows Experience Blog. Microsoft.
- ^ «Windows Subsystem for Linux Overview». Windows Subsystem for Linux. Retrieved 22 April 2018.
- ^ 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.
- ^ 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
- ^ «WSL 2 will be generally available in Windows 10, version 2004 — Windows Command Line». Windows Command Line. 13 March 2020. Retrieved 15 October 2021.
- ^ «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.
- ^ «GPU accelerated ML training inside the Windows Subsystem for Linux — Windows Developer Blog». Windows Blog. 17 June 2020. Retrieved 16 October 2021.
- ^ 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.
- ^ 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.
- ^ a b Abrams, Lawrence (29 May 2021). «Hands on with WSLg: Running Linux GUI apps in Windows 10». Bleeping Computer. Retrieved 30 May 2021.
- ^ «A preview of WSL in the Microsoft Store is now available! — Windows Command Line». Windows Command Line. 11 October 2021. Retrieved 16 October 2021.
- ^ «Microsoft Wants to Simplify the Windows Subsystem for Linux». Yahoo Tech. 19 November 2024. Retrieved 30 March 2025.
- ^ Harsh, Mike (30 March 2016). «Run Bash on Ubuntu on Windows». Building Apps for Windows. Microsoft.
- ^ Finley, Klint (30 March 2016). «Why Microsoft Making Linux Apps Run on Windows Isn’t Crazy». Wired. Condé Nast.
- ^ Kirkland, Dustin (30 March 2016). «Ubuntu on Windows – The Ubuntu Userspace for Windows Developers». Ubuntu Insights. Canonical.
- ^ Hammons, Jack (9 April 2016). «Bash on Ubuntu on Windows». MSDN. Microsoft.
- ^ Get openSUSE Leap 42 — Microsoft Store
- ^ Get SUSE Linux Enterprise Server 12 — Microsoft Store
- ^ Yegulalp, Serdar (12 May 2017). «Windows Subsystem for Linux welcomes Suse and Fedora options». InfoWorld. Retrieved 16 September 2017.
- ^ «Debian GNU/Linux for WSL now available in the Windows Store». Windows Command Line Tools For Developers. Retrieved 7 March 2018.
- ^ «Kali Linux in the Windows App Store». Retrieved 9 March 2018.
- ^ Manage and configure Windows Subsystem for Linux
- ^ Windows Subsystem for Linux interoperability with Windows
- ^ Command Reference for Windows Subsystem for Linux
- ^ a b c Welcome to WSLg, Microsoft, 7 November 2021, retrieved 7 November 2021
- ^ Salter, Jim (7 October 2021). «The best part of Windows 11 is a revamped Windows Subsystem for Linux». Ars Technica. Retrieved 7 November 2021.
- ^ Viswav, Pradeep (11 October 2021). «Windows Subsystem for Linux (WSL) now available as an app from Microsoft Store on Windows 11». MSPoweruser. Retrieved 30 April 2024.
- ^ «Installing WSLg». GitHub. 27 April 2022. Retrieved 27 April 2022.
- ^ «Clarify Windows 10 vs 11 and build numbers (#485) · microsoft/wslg@5ddd8d2». GitHub. Retrieved 28 May 2022.
- ^ Jack Hammons (22 April 2016). «Windows Subsystem for Linux Overview». Windows Subsystem for Linux blog on MSDN.
- ^ Jack Hammons (15 June 2016). «WSL File System Support». Windows Subsystem for Linux blog on MSDN.
- ^ Jack Hammons (8 November 2016). «WSL Networking». Windows Subsystem for Linux blog on MSDN.
- ^ «Please enable WSL to run 32 bit ELF binaries». Windows Developer feedback (Microsoft/UserVoice). Archived from the original on 23 August 2019. Retrieved 21 January 2018.
- ^ «Support for 32-bit i386 ELF binaries». GitHub.
- ^ «Windows 10’s Bash shell can run graphical Linux applications with this trick». PC World. Retrieved 10 September 2018.
- ^ «GPU not accesssible [sic] for running tensorflow and installing CUDA · Issue #1788 · Microsoft/WSL». GitHub. Retrieved 10 September 2018.
- ^ «OpenCL & CUDA GPU support». Windows Developer feedback (Microsoft/UserVoice). 15 September 2016. Archived from the original on 7 July 2018. Retrieved 10 September 2018.
- ^ «Windows Subsystem for Linux». Phoronix.
- ^ Larabel, Michael (12 October 2018). «A Look At The Windows 10 October 2018 Update Performance With WSL». Phoronix.
- ^ Larabel, Michael (5 November 2018). «The WSL Improvements In The Windows 10 October 2018 Update». Phoronix.
- ^ Larabel, Michael (24 June 2020). «Ubuntu 20.04 vs. Windows 10 WSL/WSL2 Performance In 170+ Benchmarks». Phoronix.
- ^ Larabel, Michael (17 June 2020). «Windows 10 May 2020 Performance For WSL vs. WSL2». Phoronix.
- ^ Larabel, Michael (16 December 2020). «Windows Subsystem For Linux / WSL2 Performance With The AMD Ryzen 9 5900X». Phoronix.
- ^ 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.
- ^ Hillis, Ben (25 July 2019). «MicrosoftDocs/WSL | Build 18947». GitHub. Archived from the original on 26 July 2019. Retrieved 26 July 2019.
- ^ «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.
- ^ Jujjuri, Venkateswararao; Van Hensbergen, Eric; Liguori, Anthony; Pulavarty, Badari (13–16 July 2010). «VirtFS—A virtualization aware File System pass-through» (PDF). Linux Symposium.
- ^ «Comparing WSL 1 and WSL 2». Microsoft Learn. 4 October 2022. Retrieved 18 October 2022.
- ^ Larabel, Michael (29 September 2021). «Windows 11 WSL2 Performance is Quite Competitive Against Ubuntu 20.04 LTS / Ubuntu 21.10». Phoronix.
- ^ craigloewen-msft (15 December 2023). «Comparing WSL Versions». learn.microsoft.com. Retrieved 16 December 2023.
- ^ craigloewen-msft (31 July 2023). «Accessing network applications with WSL». learn.microsoft.com. Retrieved 11 October 2023.
- ^ «wsl: Hyper-V firewall is not supported wsl: Mirrored networking mode is not supported, falling back to NAT networking · Issue #10495 · microsoft/WSL». GitHub. Retrieved 16 December 2023.
- ^ Heath, Nick (20 September 2017). «Will Microsoft love Linux to death? Shuttleworth and Stallman on whether Windows 10 is free software’s friend». TechRepublic. Archived from the original on 1 December 2022. Retrieved 18 February 2022.
- ^ Salter, Jim (7 October 2021). «The best part of Windows 11 is a revamped Windows Subsystem for Linux». Ars Technica. Retrieved 30 March 2025.
- ^ a b «How Does the Windows 10 Subsystem for Linux Work and What Is It For? — Petri IT Knowledgebase». 12 February 2018. Retrieved 30 March 2025.
- ^ Salter, Jim (19 March 2020). «Windows Subsystem for Linux is making inroads with developers». Ars Technica. Retrieved 30 March 2025.
- ^ Walker, Brian (27 April 2023). «No, You Don’t Need Microsoft Windows Subsystem for Linux (WSL), and Here’s Why». MUO. Retrieved 30 March 2025.
- ^ Bhartiya, Swapnil (12 February 2018). «Windows Subsystem for Linux: A Bridge Between Two Platforms». Linux.com. Retrieved 30 March 2025.
- 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.
- 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.
Все способы:
- Способ 1: Автоматически (с параметрами по умолчанию)
- Способ 2: Вручную (+ дистрибутив Linux по выбору)
- Шаг 1: Включение аппаратной виртуализации
- Шаг 2: Активация компонентов Win 11
- Шаг 3: Апдейт ядра WSL
- Шаг 4: Определение WSL2 как версии подсистемы по умолчанию
- Шаг 5: Скачивание и инсталляция дистрибутива Linux по выбору
- Вопросы и ответы: 1
Способ 1: Автоматически (с параметрами по умолчанию)
Ещё до выхода ОС Windows 11 механизм установки «Подсистемы Windows для Linux» (WSL2) был существенно упрощён разработчиками из Microsoft. Так, активировать в системе платформу виртуальной машины, инсталлировать саму подсистему и ядро WSL, а также развернуть дистрибутив Linux (по умолчанию – Ubuntu) возможно путём запуска всего лишь одной консольной команды. Использовать следующий подход к достижению поставленной в заголовке этой статьи цели рекомендуется в первую очередь, к тому же полученных по итогу возможностей оказывается достаточно большинству пользователей.
- Открываем интегрированное в Виндовс 11 приложение для доступа к запуску команд «PowerShell» под названием «Терминал». Выполнить это необходимо от имени Администратора, а проще всего — из меню дополнительных функций кнопки «Пуск» на «Панели задач»:
Читайте также: Как открыть приложение «Терминал» в Windows 11
- Пишем в «Терминале» команду следующего содержания:
wsl --install - Нажимаем «Enter» на клавиатуре, чтобы отправить введённое в консоль указание на выполнение системой. Далее ждём, пока будет осуществлено поэтапное автоматизированное развёртывание в Win 11 всего необходимого для функционирования WSL2:
- Получив в консоли сообщение «Требуемая операция выполнена успешно»,
перезагружаем компьютер. С такой целью можно:
- Ввести в «Терминал» следующую команду и затем нажать «Enter» на клавиатуре:
Restart-Computer - Или закрыть окно «Терминала» и выполнить перезапуск ПК любым привычным способом,
к примеру, через меню «Пуск» Виндовс 11.
Читайте также: Как перезагрузить компьютер под управлением Windows 11
- Ввести в «Терминал» следующую команду и затем нажать «Enter» на клавиатуре:
- По завершении перезапуска ОС
автоматически откроется окно консоли Windows, — ещё немного ожидаем, пока завершится распаковка и инсталляция дистрибутива Ubuntu в WSL 2.
- Получив приглашение «Enter new UNIX username»,
вводим в командную строку назначаемое для эксплуатации в среде Linux имя пользователя, нажимаем «Ввод» на клавиатуре.
- Далее придумываем (и запоминаем), а затем пишем в консоли пароль для доступа в установленную в WSL2 Linux (Ubuntu), передаём его системе, нажав «Enter». (Возможно, стоит обратить внимание, что вводимая секретная комбинация в Linux-системах не отображается даже завуалировано.)
- Вводим и отправляем системе пароль из шага выше повторно.
- По сути, на этом всё — WSL2 в Windows 11 установлена и запущена, а полученный с её помощью дистрибутив Ubuntu
функционирует и готов к выполнению задач пользователя.
- Впоследствии запустить WSL2 и одновременно инсталлированный в ней дистрибутив Linux можно разными путями:
- Открываем «Главное меню» Win11, перемещаемся в перечень «Все приложения»,
находим в нём название Linux-системы («Ubuntu») и кликаем по её наименованию.
- Запускаем «Терминал» (к слову, можно и классическую «Командную строку») от имени Администратора,
в качестве команды пишем название установленного в системе Linux-дистрибутива, (например,
Ubuntu),нажимаем «Ввод» на клавиатуре.
Читайте также: Как запустить классическую «Командную строку» в Windows 11 от имени Администратора
- Запускаем выполнение консолью следующей команды:
wslДанное указание приводит к запуску назначенного в «Подсистеме Windows для Linux» по умолчанию дистрибутива последней.
- Открываем «Главное меню» Win11, перемещаемся в перечень «Все приложения»,
При необходимости (сразу или в дальнейшем) получения доступа к отличным от предлагаемого «Подсистемой Windows для Linux» по умолчанию Ubuntu дистрибутивам Линукс выполняем их инсталляцию одним из предложенных «Шагом 5» второго в этой статье «Способа» установки WSL 2 в Win 11.
Способ 2: Вручную (+ дистрибутив Linux по выбору)
При возникновении каких-либо проблем с установкой WSL2 в Windows 11 вышеописанным образом (либо, к примеру, желании реализовать рассматриваемую процедуру более осознанно) выполняется поэтапное развёртывание подсистемы.
Шаг 1: Включение аппаратной виртуализации
Важным требованием для запуска и эксплуатации WSL 2 в Windows 11 является доступность в системе поддержки аппаратной виртуализации. Поэтому в первую очередь проверяем факт выполненности данного условия, а в противном случае включаем указанную опцию в BIOS (UEFI) ПК. Для проверки активированности аппаратной виртуализации в Виндовс 11 проще всего будет воспользоваться функциональностью «Диспетчера задач» («ДЗ»):
- Любым способом (к примеру, из контекстного меню расположенного на «Панели задач» Win 11 элемента «Пуск» или нажав «Ctrl»+«Shift»+«Esc» на клавиатуре) запускаем «Диспетчер задач».
Подробнее: Как открыть «Диспетчер задач» в Windows 11
- Из меню разделов «ДЗ» (открывается в результате клика по трём чёрточкам вверху слева окна) перемещаемся в «Производительность».
- Кликаем «ЦП» в перечне аппаратных компонентов системы, которые мониторит «Диспетчер задач», затем перемещаемся в правую нижнюю область окна и смотрим на значение отображаемого здесь среди прочих параметра «Виртуализация».
- Если аппаратная виртуализация «Включена», можно переходить к выполнению следующего этапа реализации настоящих рекомендаций. Если же в качестве значения рассматриваемого параметра указано «Выключено», следует завершить работу компьютера, открыть программу управления параметрами BIOS и активировать опцию «Intel VT» или «AMD-V» её средствами.
Подробнее: Включаем поддержку аппаратной виртуализации в BIOS компьютера
Шаг 2: Активация компонентов Win 11
Включение WSL 2 в Windows 11 требует получения и активации двух необязательных компонентов операционной системы: самой «Подсистемы Виндовс для Линукс», а также «Платформы виртуальных машин». Реализовать это возможно двухвариантно.
Элемент «Панели управления»
Загрузку и включение практически любого необязательного компонента Windows 11 проще всего осуществлять при помощи специализированного инструментария с графическим интерфейсом, и в случае с рассматриваемой подсистемой, а также необходимой для её функционирования платформой это справедливо в полной мере.
Читайте также: Включение или отключение необязательных компонентов Windows 11
- Вызываем предназначенный для активации/деактивации компонентов Win 11 элемент «Панели управления» ОС. Один из возможных путей к данной цели:
- Прокручиваем отображаемый окном «Включение или отключение компонентов Windows» список, находим в нём «Платформа виртуальной машины»,
ставим галочку в чекбоксе слева от этой записи.
- Пролистываем перечень доступных к включению/выключению компонентов операционки далее,
отмечаем чекбокс «Подсистема Windows для Linux».
- Далее нажимаем «ОК» в окошке средства управления компонентами ОС,
ожидаем, пока Виндовс 11 автоматически выполнит необходимые для затребованной операции действия (скачает и сохранит на ПК нужные файлы).
- Получив сообщение «Windows применила требуемые изменения», кликаем «Перезагрузить сейчас» внизу отображающего его окна.
- Ожидаем окончания перезагрузки компьютера,
в её процессе будет осуществлена непосредственная интеграция «Подсистемы Windows для Linux», а также «Платформы виртуальной машины» в операционную систему.
Консоль Виндовс 11 (DISM)
Более сложный, но в некоторых случаях предпочтительный, путь к включению необходимых для функционирования WSL 2 компонентов Windows 11 осуществляется средствами программы командной строки для обслуживания образов ОС от Microsoft под названием DISM.
- Запускаем приложение «Терминал» с повышенными привилегиями (от имени Администратора).
- Копируем из текста настоящей статьи, вставляем в консоль и отправляем на выполнение команду загрузки и интеграции компонента «Подсистема Windows для Linux»:
Dism /online /Enable-Feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartОжидаем, пока в консоли заполнится процентный индикатор «Включение функций»
и затем отобразится оповещение «Операция успешно завершена».
- Далее устанавливаем компонент операционки «Платформа виртуальной машины», — команда будет следующей:
Dism /online /Enable-Feature /featurename:VirtualMachinePlatform /all /norestartПо аналогии с включением «Подсистемы Виндовс для Линукс»: отправляем команду интегрировать «Платформу виртуальной машины» на выполнение,
дожидаемся сообщения «Операция успешно завершена».
- Для завершения активации рассматриваемых компонентов Win 11, после выполнения вышеуказанного необходимо перезагрузить ПК. В текущей ситуации с такой целью проще всего будет запустить через «Терминал» следующую команду:
Restart-ComputerДождавшись перезапуска ПК,
переходим к следующему шагу по настройке WSL2.
Шаг 3: Апдейт ядра WSL
Ещё один необходимый этап процесса установки WSL2 — это обновление ядра подсистемы. С такой целью следует задействовать специализированный и всегда доступный к загрузке с серверов Microsoft инсталлятор.
Пакет обновления ядра Linux в WSL 2 для 64-разрядных компьютеров.
- Переходим по ссылке выше, что инициирует скачивание апдейтера WSL до последней версии,
сохраняем его на диск ПК в любую папку.
- Двойным кликом в Проводнике Windows открываем полученный в результате выполнения предыдущего пункта инструкции файл wsl_update_x64.msi.
- Кликаем «Next» в отобразившемся окне Мастера инсталляции WSL Update, чтобы подтвердить запуск апдейтера,
нажимаем «Да» в ответ на запрос «Контроля учётных записей».
- Некоторое время ждём окончания процедуры копирования файлов,
кликаем «Finish» в окне с уведомлением «Completed the Windows Subsystem for Linux Update Setup Wizard».
Шаг 4: Определение WSL2 как версии подсистемы по умолчанию
Немаловажное действие на пути к результативному запуску современных дистрибутивов Linux в среде Windows 11 – это установка WSL2 в качестве используемой по умолчанию версии рассматриваемой подсистемы:
- Открываем «Терминал», вводим и отправляем на выполнение следующее указание:
wsl --set-default-version 2 - Чтобы впоследствии, после инсталляции дистрибутивов Linux проверить, какая версия WSL является установленной по умолчанию, используем такую команду:
wsl –status
Шаг 5: Скачивание и инсталляция дистрибутива Linux по выбору
После результативного прохождения рекомендованных выше четырёх этапов (или же выполнения инструкции «Способ 1» из этого материала) WSL2 в Windows 11 считается полностью подготовленной к выполнению своего предназначения. Это значит, что можно переходить к скачиванию и установке адаптированного для работы в рамках подсистемы дистрибутива Linux, — шагу, без которого интеграция и включение WSL2 по большому счёту является бессмысленной.
Вариант 1: Microsoft Store
Основной и наиболее удобный путь к получению пригодного для функционирования за счёт WSL 2 Linux-дистрибутива (или нескольких) – заключается в его загрузке и инсталляции из фирменного Магазина приложений от Microsoft.
Читайте также: Решение проблем с запуском Microsoft Store в Windows 11
- В Microsoft Store представлен целый ряд предназначенных для запуска в «Подсистеме Windows для Linux» дистрибутивов UNIX-операционки, а далее перечислены доступные на момент написания настоящей статьи прямые ссылки на их страницы в каталоге:
Ubuntu 18.04 LTS
Ubuntu 20.04 LTS
Ubuntu 22.04 LTS
openSUSE Leap 15.1
SUSE Linux Enterprise Server 12 SP5
SUSE Linux Enterprise Server 15 SP1
Kali Linux
Debian GNU/Linux
Fedora Remix for WSL
Pengwin
Pengwin Enterprise
Alpine WSL
Raft (пробная версия) - Выбираем дистрибутив из перечня выше, кликаем по соответствующей ему кнопке-ссылке, переходим на страницу продукта в Майкрософт Стор,
нажимаем на кнопку «Получить».
- Ожидаем завершения скачивания и развёртывания компонентов Linux-дистрибутива в Windows 11.
- Щёлкаем «Открыть» в окне Магазина Майкрософт,
после чего (при первом запуске инсталлированного дистрибутива Линукс) откроется окно консоли и необходимо будет подождать ещё какое-то время, пока файлы ОС распакуются и будут сохранённые в нужных папках на компьютере. (Последующие запуски Linux обычно занимают несколько мгновений).
- Когда в консоли появится приглашение «Enter new UNIX username»,
пишем имя пользователя дистрибутива Linux, нажимаем «Enter».
- Далее придумываем и дважды предоставляем системе пароль
для входа в Linux-учётку.
- На этом выбранный дистрибутив Linux считается полностью интегрированным в Windows 11, настроенным и готовым к эксплуатации.
(Впоследствии его запуск выполним одним из методов, предложенных в пункте №10 рекомендаций «Способ 1» из этого материала.)
Вариант 2: Пакеты APPX
В ситуациях, когда использовать Microsoft Store c целью получения адаптированных для работы в «Подсистеме Windows для Linux» дистрибутивов нет возможности или желания, можно пойти другим путём — скачать из сети и развернуть на компьютере APPX(AppxBundle)-пакет компонентов UNIX-операционки.
- Выбираем предполагаемый к установке в WSL 2 дистрибутив Linux в следующем списке, нажимаем на инициирующую его скачивание кнопку-ссылку:
Ubuntu
Ubuntu 22.04 LTS
Ubuntu 20.04
Ubuntu 18.04
Ubuntu 16.04
Debian GNU/Linux
Kali Linux
SUSE Linux Enterprise Server 12
SUSE Linux Enterprise Server 15 с пакетом обновления 2 (SP2)
SUSE Linux Enterprise Server 15 с пакетом обновления 3
openSUSE Tumbleweed
openSUSE Leap 15.3
openSUSE Leap 15.2
Oracle Linux 8.5
Oracle Linux 7.9
Fedora Remix for WSL - Загрузив APPX-пакет компонентов ОС Linux для WSL2 на диск компьютера, инсталлируем дистрибутив. При текущем подходе это возможно не единственным способом, выполняем один из двух следующих пунктов этой инструкции.
- Простейший (но не всегда доступный) способ установки Appx-пакетов:
- Переходим в содержащий Appx(AppxBundle)-файл каталог через Проводник Win 11.
- Немного ожидаем, затем кликаем «Установить» в окне запустившегося системного установщика пакетов.
- Вновь ждём, пока будут выполнены необходимые для развёртывания Appx манипуляции.
Дважды кликаем по значку пакета мышкой (или щёлкаем по нему правой кнопкой манипулятора и затем выбираем «Установить» в отобразившемся меню).
В результате автоматически откроется окно консоли Виндовс, где сначала завершится распаковка Linux-дистрибутива,
а затем осуществится его первый запуск.
- Другой вариант действий по развёртыванию полученного в виде APPX-файла дистрибутива Linux более сложен, но и более универсален (позволяет обойти многие, возможные к внедрению в Windows 11 ограничения):
- Открываем папку с APPX-файлом дистрибутива Linux в Проводнике Windows 11, кликаем по значку первого правой кнопкой мыши,
выбираем «Скопировать как путь» в открывшемся меню.
- Запускаем «Терминал» Win 11 от имени администратора.
- Пишем в консоли первую часть команды на развёртывание APPX-пакета в системе:
add-appxpackage - Вторая часть команды (через пробел) – это полный путь к инсталлируемому файлу. Его мы ранее скопировали в буфер обмена Виндовс 11, поэтому просто кликаем правой кнопкой манипулятора в окне «Терминала», что приведёт к вставке данных.
- Убедившись, что сформированная в консоли команда имеет аналогичный представленному на следующем скриншоте вид, нажатием «Enter» на клавиатуре запускаем её выполнение.
- Далее ожидаем заполнения индикатора «Ход выполнения операции развёртывания»
и отображения приглашения к вводу следующих команд в консоли, после чего её можно закрыть.
- Вызываем Главное меню Виндовс 11, перемещаемся в его раздел «Все приложения», и затем находим название установленного на шаге выше дистрибутива Linux, нажимаем на него.
- Далее вновь появится окно консоли, ждём окончания процедуры «Installing…».
Вводим назначаемое пользователю запускаемой ОС имя, затем дважды – пароль. После этого развёрнутый из APPX-файла дистрибутив Линукс считается предварительно настроенным и готовым к эксплуатации.
- Открываем папку с APPX-файлом дистрибутива Linux в Проводнике Windows 11, кликаем по значку первого правой кнопкой мыши,
Вариант 3: Средства WSL2
Скачивание и инсталляцию дистрибутивов ОС Linux в Windows 11 можно выполнить и задействовав исключительно предусмотренные в WSL2 средства. Правда, выбор доступных к получению таким образом программных продуктов может показаться ограниченным.
- Запускаем «Терминал» от имени Администратора.
- Получаем доступ к списку доступных дистрибутивов для скачивания и установки средствами WSL2 Linux-дистрибутивов. Для этого вводим и отправляем на выполнение такую команду:
wsl --list --online - Выбираем нужную ОС в полученном по результату выполнения предыдущего пункта инструкции перечне (далее необходимо будет точно ввести в консоль его наименование).
- Чтобы запустить процесс загрузки и затем инсталляции определённого дистрибутива Linux используется следующая команда:
wsl --install -d ИМЯ_ДИСТРИБУТИВА_LINUXВводим указание, заменив
ИМЯ_ДИСТРИБУТИВА_LINUXна наименование ОС из полученного ранее перечня (столбец «NAME»), нажимаем «Ввод» на клавиатуре ПК. - Далее просто ждём,
по окончании скачивания и установки запустится выбранная и теперь интегрированная в WSL 2 операционная система.
Напоследок отметим, что перечень возможных к запуску в Win 11 через WSL2 дистрибутивов Linux не ограничивается представленными выше в описаниях методов их установки. Практически любые, отсутствующие среди предлагаемых рассмотренной подсистемой по умолчанию, варианты Linux запустить возможно, но для этого потребуется выполнить импорт дистрибутива или сформировать (адаптировать для использования в WSL2) его собственноручно. Такой подход несколько выходит за рамки темы этой статьи и поэтому в ней не описан, при необходимости действуем по инструкциям с интернет-ресурса Microsoft Learn:
Импорт любого дистрибутива Linux для использования с WSL
Создание пользовательского дистрибутива Linux для WSL
Наша группа в TelegramПолезные советы и помощь
TL;DR Почему на Хабре нет статей про то, как человек вполне доволен наличием WSL и активно ею пользуется? Неужели я один такой? Значит, пора добавить воды писать статью!
Дисклеймеры
Общий дисклеймер • О личности автора • Отказ от ответственности • Об использовании ChatGPT
Аннотация
Заметил, что на Хабре не сильно-то жалуют Windows Subsystem for Linux. Претензии поначалу были к наименованию данной подсистемы (потому что Linux Subsystem for Windows поначалу звучит даже логичнее), а потом шли поминки по-настоящему нативной WSL 1, затем просто лёгкий бугурт в комментариях насчет того, что WSL 2 — просто виртуалка! Что́ следует из этого тезиса, я так и не понял, потому что вот уже седьмой год пользуюсь WSL ежедневно, и жить без него не могу! Кто-то описал короткую заметку, что пользуется WSL, а я со своей стороны добавлю воды к этой теме.
В этой статье расскажу, как я обустроился в этом мире тотальной гиперконвергенции Linux и Windows, созданным Microsoft.
Введение
WSL сейчас переживает золотые времена: любой популярный дистрибутив можно поставить из Microsoft Store, а саму подсистему запустить можно одной командой либо скачав её опять же с магазина. Если какого-то дистрибутива не хватает — создаёшь. WSL интегрирована с хостовой Виндой — можно лезть друг к другу в директории как к себе домой, это работает в обе стороны. systemd теперь есть, опять же. Поддержка Docker максимально полная. У дистрибутивов Linux так же есть доступ к видеокарте, можно нейронки гонять. За счет возможности запуска X-Server есть возможность запустить графические Linux-приложения в Windows — да, окна из одной ОС будут сосуществовать с окнами хостовой операционки. Фантастика!
Зачем жить, если нет WSL?
Для начала вопрос для себя: зачем тебе вообще нужен Linux при живой-то Windows, если ты очень высокоуровневая соевая фронтенд-макака, обитающая на высоте двух сотен тысяч вызовов в стектрейсе? Безотносительно должности, конечно. Дело касается исключительно домашнего ИТ-быта с элементами пет-проектов. А вот зачем мне это надо:
-
Админить дешевые VPS’ки: набрал я их с пару десятков по всему миру, а бросать жалко, бекенды для Телеграм-ботов, опять же;
-
Data Science. Вот эти все плейбуки Jupyter и т.д.;
-
По идее, это относится к первому пункту, но он достаточно крупный и вылился в отдельное направление: изучение Ansible, у которого есть целая галактика!
-
Изучение K8s, до которого я так и не дошел за 8 лет… где же я был эти 8 лет?
Бонусом научился базовым основам Linux, само собой: смена окружения, маршрутизация, правка конфигов, systemd, скриптинг на Bash (от которого я стараюсь отказываться в пользу кросс-платформенного и более организованного костылеписания на PowerShell). Куда-то ниже пятого-шестого уровня OSI и ближе к ядру подходить не буду — интерес к «пингвину» у меня чисто утилитарный.
Дальше подробнее о каждом пункте:
-
Самое простое — админить VPS’ки напрямую.
ssh <user>@<host>и вперёд! За счет выпуска на Винду первоклассного Windows Terminal сейчас это удобно и быстро, как никогда:Win+R, вводwt(а если Windows Terminal стоит по умолчанию, то можно сразу набрать любимую оболочку, например,pwsh), затем делай через WSL то, что хотел. Намного удобнее, чем запускать Putty или пользоваться OpenSSH на Винде (который еще где-то в компонентах включить надо), и в разы лучше, чем перезагружать Windows и логиниться в Linux; -
Весь комплект из области Data Science у меня полностью в WSL: Anaconda, Jupyter Notebook, всё окружение для LaTeX. Подключаюсь через VS Code с расширением WSL, и работаю дальше в нём;
-
Ansible. Несмотря на наличие поддержки Windows как в режиме сервера, так и клиента (у Ansible эти понятия максимально размыты), я рекомендую пользоваться именно Linux-версией. В моём случае — WSL. И работает оно прекрасно! Всё опять же благодаря VS Code и его возможности работать в подсистеме для Linux, как «у себя дома» в Windows;
-
До «кубера» я пока не дошел. Но, наверное, кластер minikube всё-таки подниму на отдельной машине, так как мощности текущего ПК потихоньку исчерпываются.
Итак, именно в таких задачах WSL на 100% заменит «пингвина» на голом железе, и уж тем более справится лучше самой Windows.
В комментариях можно подискутировать: человек сообщает, что́ он делает у себя на домашнем ПК с помощью bare-metal Linux — и можно придумать, может ли он то же самое сделать через WSL. Естественно, никого принуждать и причинять добро не надо — сила привычек и сложившегося рабочего окружения в том, что человек явно быстрее всё сделает в своем родном мирке, а не будучи пересаженным на WSL.
Стратегическая роль WSL
Доля Windows имеет тенденцию к снижению, судя по данным аналитических агенств. Microsoft, в свою очередь, за последние 11 лет избавилась от почти всех идеологических оков и корпоративных предрассудков. Не знаю, кто додумался именно до таких стратегических шагов, но вполне логичным лозунгом является «догнать и перегнать Америку конкурентов!«. Вкупе с постулатом «не можешь победить — возглавь«, которую придумал в стародавние времена какой-то болванчик из Европы, это всё вылилось в идею «а давайте мы добавим Linux в Windows!«. Не удивлюсь, если соответствующий Merge request в их системе контроля версий висел еще во времена Стива Балмера.
И это, видимо, работает — как минимум, одного такого человека они удержали на Windows. Еще одним косвенным признаком того, что такая стратегия помогает — последующий за релизом WSL выпуск подсистемы Windows для Android. Не стали бы они это делать, если WSL и WSA так или иначе вредили бы ОС. Что дальше? WSfBSD? Who knows…
Выводы
WSL меня не ограничивает — от слова совсем. Потребности элементарно не подошли к краю возможностей подсистемы Windows для Linux. Однозначно рекомендую WSL как default-решение для совмещения «пингвина» и «окон».
Есть, естественно, пограничные (не обязательно психически) случаи, когда нужен именно bare-metal хост на каком-нибудь из дистрибутивов пингвина:
-
Работа с ядром Linux — написание драйверов, взаимодействие с eBPF и т. д.;
-
Работа с железом. Насколько мне известно, проброс железа в виртуалку WSL — это очень извилистый путь, потому что у технологии Hyper-V другая цель —
управлять поездомон позиционируется по-другому, оттого аппаратная поддержка хоста у гипервизора очень ограниченная.
Если есть другие пограничные случаи, когда WSL пасует, пишите в комментарии.
Альтернативы?
С другой стороны, разве я не рассматривал другие варианты организации своего флоу Linux-Windows? Linux сам по себе мне нужен, от него отказываться не вариант! Из альтернатив есть только три с половиной пути самурая:
-
Пересесть на Ubuntu полностью, Windows-игры и специфический софт запускать через Wine. Самый радикальный и очень технически и морально тяжелый путь. У меня довольно много всё завязано на сервисы от Microsoft. Пусть даже у всех этих сервисов и есть веб-версии, отказ от интеграций нативных программ в ОС, например, OneDrive, вызовет у меня сильный приступ стресса, а затем депрессии (никогда ее не было, но тут-то точно появится!);
-
Дуалбут Windows-Linux. Во времена, когда Windows 10 неведомым образом затирала GRUB, отчего не грузилась добрая половина дистрибутивов, это тоже не было вариантом;
-
Линь на отдельной машине, Вынь на своей как основная ОС. Подключение к Линю по RDP. Это был самый надежный вариант, но минусом (а для меня это минус) было минимальное количество интеграций, и скакать с окружения в окружение мне было бы не очень удобно;
-
Полный отказ от Linux и замена его окружения каким-нибудь Cygwin. Что ж, при условии, что мне надо обучиться основам хотя бы в Ubuntu, этот вариант тоже отметался. Превратиться в скуфидона преждевременно тоже не хотелось бы. Все там будем!
Бонус
Заметили, что на первом скриншоте оболочки Windows и Ubuntu выглядят максимально одинаково, несмотря на то, что у одного исполняется PowerShell, а у второго — Bash?
Конфигурация терминала — отдельный кайф и сугубо личное дело каждого, но иной раз всё-таки лучше рассказать о своём пути самурая. Много раз в рандомных местах интернетов — и на Хабре в том числе — я видел скриншоты с красиво оформленной оболочкой в каком-нибудь окне не менее красивого терминала. На манер таких:
Вот такие:
Выглядит цветасто и не очень натурально, ЕВПОЧЯ. Мне бы такую же примерно тему, но со спокойными акцентными цветами… Я задумался, как же сделать такие же красивости, только единообразно, чтобы одна и та же библиотека с помощью независящего от платформы конфига рисовала один и тот же интерфейс?
Ответ нашелся в первой строчке поисковика: OhMyPosh.
Гайд по установке этого чуда чуть менее тривиален, чем хотелось бы, поэтому я соорудил скрипт для установки OhMyPosh в полуавтоматическом режиме. Скрипт автоматом обходит некоторые ошибки, обновляет профиль PowerShell, устанавливает схему M365Princess и шрифт Caskaydia Cove (на моём скриншоте в самом начале включена именно она) и добавляет конфиг в VS Code и Windows Terminal. Тестировался на Windows 11 полгода назад.
Сейчас я с удовольствием раскатываю OhMyPosh на все свои VPS через Ansible. Доволен!
Подсистема Windows для Linux (WSL) — это функция операционной системы Windows, которая позволяет запускать среду GNU / Linux внутри Windows — без затрат на традиционную виртуальную машину или настройку с двойной загрузкой. WSL требует меньше ресурсов (CPU, памяти и места на диске), чем полноценная виртуальная машина. WSL также позволяет запускать инструменты и приложения командной строки Linux наряду с приложениями командной строки Windows, а также получать доступ к файлам Windows из Linux. Это позволяет при желании использовать приложения Windows и инструменты командной строки Linux для одного и того же набора файлов. Поддерживается множество дистрибутивов, включая Ubuntu, Debian, Kali Linux, OpenSUSE и другие. Можно установить свой дистрибутив, импортировав образ в формате tar.gz.
Общие сведения
Установить WSL можно на Windows 10 версии 2004 (сборка 19041) и выше и Windows 11. Для работы с ним лучше всего использовать Windows Terminal.
WSL использует собственную файловую систему, отделённую от файловой системы Windows (так как в Linux дискам не присваиваются буквы, а предоставляются точки монтирования). Корень файловой системы — / — точка монтирования корневого раздела (или папки в случае с WSL). WSL использует файловую систему Windows как смонтированный диск, и доступ к какому-либо каталогу (к примеру, к диску C:\) в Windows из WSL можно получить по пути /mnt/c/.
Из Windows можно получить доступ к приложениям, запущенным в Linux. Например, доступ к сайту можно получить как обычно — localhost:port. Однако в некоторых случаях следует использовать IP-адрес для подключения (ip:port), который можно взять в файле /etc/resolv.conf — из-за того, что в WSL 2 используется собственный виртуальный адаптер Ethernet со своим уникальным IP-адресом.
Установка
Подсистема WSL поставляется вместе с ОС Windows, однако её необходимо предварительно включить. Можно использовать упрощенную команду, в таком случае подсистема включится и установить дистрибутив Ubuntu (он используется по умолчанию):
С параметром --no-distibution можно только включить WSL, не устанавливая дистрибутив:
1 |
wsl --install --no-distribution |
После первой установки (или включения WSL) может потребоваться перезагрузка компьютера.
В целом установка дистрибутивов доступна несколькими способами:
- через Microsoft Store;
- через Windows Terminal командой
wsl --installили аналогичной; - через Windows Terminal, экспортировав необходимый дистрибутив.
Список доступных для установки из терминала дистрибутивов можно получить командой:
1 2 |
wsl --list --online wsl -l -o |
На 7 августа 2023 года список следующий:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
NAME FRIENDLY NAME Ubuntu Ubuntu Debian Debian GNU/Linux kali-linux Kali Linux Rolling Ubuntu-18.04 Ubuntu 18.04 LTS Ubuntu-20.04 Ubuntu 20.04 LTS Ubuntu-22.04 Ubuntu 22.04 LTS OracleLinux_7_9 Oracle Linux 7.9 OracleLinux_8_7 Oracle Linux 8.7 OracleLinux_9_1 Oracle Linux 9.1 openSUSE-Leap-15.5 openSUSE Leap 15.5 SUSE-Linux-Enterprise-Server-15-SP4 SUSE Linux Enterprise Server 15 SP4 SUSE-Linux-Enterprise-15-SP5 SUSE Linux Enterprise 15 SP5 openSUSE-Tumbleweed openSUSE Tumbleweed |
Нужный из списка дистрибутив можно установить командой:
1 2 |
wsl --install -d <DistName> wsl --install -d Debian |
Установку можно дополнить ключом --no-launch, тогда WSL не будет запускать дистрибутив сразу после установки. При этом дистрибутив не будет отображаться среди установленных — выполнение команды означает только загрузку дистрибутива для последующего повторного выполнения wsl --install.
Каждый раз, когда устанавливается новый дистрибутив WSL Linux, для него в Windows Terminal создаётся новый профиль для подключения.
По умолчанию дистрибутивы создаются в каталоге C:\Users\username\AppData\Local\Packages.
После завершения процесса установки дистрибутива будет предложено создать нового пользователя и установить ему пароль. Этот пользователь относится к каждому устанавливаемому дистрибутиву и не имеет отношения к пользователю Windows. После создания пользователя, он станет пользователем по умолчанию (будет автоматически входить в систему при запуске) и учетная запись будет считаться администратором Linux (с правами выполнения sudo).
Изменение языка дистрибутива
При установке дистрибутива WSL пытается автоматически определить и применить локаль в соответствии с локализацией Windows. Если ей это сделать не удаётся, можно изменить язык принудительно (после выполнения перезагрузить дистрибутив):
1 |
sudo update-locale LANG=en_US.UTF8 |
Дополнительные команды WSL
Работа дистрибутивов
Запустить дистрибутив по умолчанию в домашнем каталоге пользователя можно следующей командой:
Для запуска другого дистрибутива (не по умолчанию) следует указать параметр --distribution:
1 |
wsl --distribution <DistName> |
Можно запустить дистрибутив из-под другого пользователя:
1 |
wsl --user <Username> # или wsl -u <Username> |
Дистрибутив по умолчанию указывается параметров --set-default-version:
1 |
wsl --set-default <DistName> |
С параметром --set-version можно указать версию WSL (1 или 2), с которой требуется запустить тот или иной дистрибутив:
1 |
wsl --set-version <DistName> <VersionNumber> |
Завершить работу одного конкретного или сразу всех дистрибутивов можно следующим образом:
1 2 |
wsl --terminate <DistName> # завершить работу <DistName> wsl --shutdown # завершает работу всех запущенных дистрибутивов |
Удаляется дистрибутив параметров -unregister:
1 |
wsl --unregister <DistName> |
Параметры WSL
Обновить WSL можно следующей командой:
1 2 |
wsl --update # версия с Microsoft Store wsl --update --web-download # версия с Github |
Текущая конфигурация WSL выводится при передаче параметра --status или --version:
1 2 |
wsl --status wsl --version |
Установить версию WSL по умолчанию (1 или 2) можно параметром --set-default-version:
1 |
wsl --set-default-version <VersionNumber> |
Монтировать дополнительные разделы в дистрибутивы можно параметром --mount. Он содержит следующие ключи:
--vhd— указывает, что монтируется виртуальный жесткий диск;--name— монтируется диск с пользовательским именем;--bare— подключает, но не монтирует диск;--type <Filesystem>— тип файловой системы, используемый при монтировании (ext4 по умолчанию);--partition <PartNumber>— порядковый номер раздела при монтировании.
Для монтирования разделов необходимы права администратора
1 |
wsl --mount C:\Users\Profile\Projects\FirstProject |
Размонтировать один конкретный раздел или все можно командой --unmount:
1 2 |
wsl --unmount <DiskPath> # размонтировать <DiskPath> wsl --unmount # размонтировать все диски и разделы |
Список дистрибутивов
Команда --list показывает список дистрибутивов. Дополнительный ключ к команде может отфильтровать вывод:
--all— показывает все дистрибутивы;--verbose— показывает установленные дистрибутивы;--running— показывает только запущенные дистрибутивы;--quiet— отображает только названия.
Работа с WSL
Изменение хостнейма
Для начала необходимо добавить нужное имя в файл /etc/wsl.conf в раздел network:
1 2 3 |
[network] hostname = ubuntu_wsl generateHosts = false |
После этого следует поменять хостнейм в файле /etc/hostname:
1 2 |
ubuntu_wsl /etc/hostname |
Взаимодействие с Windows
Для максимальной производительности рекомендуется хранить файлы для работы в Linux в файловой системе WSL — в той же операционной системе, где они используются. Доступ к файлам возможен из разных ОС, но это значительно снижает производительность.
В дистрибутивах можно вызывать приложения WIndows и передавать в параметр файлы и каталоги Linux. Например, чтобы открыть текущий каталог в стандартном проводнике (Explorer), необходимо написать:
С файлами ситуация аналогичная:
В названии приложения обязательно нужно указывать разрешение (exe).
Это работает и в обратную сторону — утилиты Linux можно запускать напрямую из PowerShell. Например, чтобы отобразить содержимое какого-либо каталога Windows, можно ввести:
Можно смешивать команды Windows и Linux. Например, можно отобразить список файлов ls -la и отфильтровать результаты командой PowerShell findstr или наоборот — отобразить каталоги командой dir и отфильтровать командой grep
1 2 |
wsl ls -la | findstr "git" dir | wsl grep git |
Запуск графических приложений Linux
WSL 2 поддерживает запуск приложений с графическим интерфейсом (X11 и Wayland) в Windows с полностью интегрированным интерфейсом для ПК. Их можно запускать из меню “Пуск” Windows, закреплять на панели задач, переключаться между приложениями по Alt+Tab. Приложения поддерживают буфер обмена Windows.
Для запуска графических приложений необходим драйвер vGPU:
- Драйвер графического процессора Intel
- Драйвер графического процессора AMD
- Драйвер графического процессора NVIDIA
Для запуска приложения из консоли достаточно написать только его название или название с файлом (например, для редактирования) на примере gedit:
Сетевые приложения
IP-адрес хост-машины и IP-адрес Linux-дистрибутива в WSL могут быть разными. IP-адрес хост-машины — это IP-адрес самого компьютера, а IP-адрес Linux-дистрибутива — это IP-адрес, который присваивается в виртуальной сети WSL. Обычно IP-адрес Linux-дистрибутива настраивается автоматически и не зависит от настроек хост-машины.
1 2 |
wsl hostname -i # IP-адрес дистрибутива cat /etc/resolv.conf # IP-адрес компьютера с Windows |
Управление дисковым пространством
WSL 2 использует платформу виртуализации для установки дистрибутивов Linux вместе с основной операционной системой Windows, создавая виртуальный жесткий диск (VHD) для хранения файлов для каждого из устанавливаемых дистрибутивов Linux. Эти жесткие диски используют тип файловой системы ext4 и представлены на жестком диске Windows в виде файла ext4.vhdx. WSL автоматически изменяет размер этих файлов VHD в соответствии с потребностями хранилища. По умолчанию каждому VHD-файлу, используемому WSL 2, изначально выделяется максимальный объем дискового пространства в 1 ТБ.
Проверить объем дискового пространства, доступного на VHD для дистрибутива Linux, установленного вместе с WSL 2, с помощью команды Linux df.
1 |
wsl.exe --system -d <distribution-name> df -h /mnt/wslg/distro |
Выходные данные будут включать:
- идентификатор файловой системы VHD;
- общий размер диска;
- используемый объем пространства;
- доступный объём свободного места;
- процент использования;
- путь к каталогу, в который смонтирован диск.
Путь к файлу диска:
1 |
(Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq '<distribution-name>' }).GetValue("BasePath") + "\ext4.vhdx" |
Конфигурации WSL и дистрибутивов
Файлы wsl.conf и .wslconfig используются для настройки дополнительных параметров для каждого дистрибутива (wsl.conf) или глобально для всех дистрибутивов WSL 2 (.wslconfig).
- файл
wsl.confхранится в каталоге/etcв виде файла. Используется для настройки параметров каждого дистрибутива WSL 1 и WSL 2; - файл
.wslconfigхранится в%UserProfile%каталоге. Используется для настройки всех дистрибутивов Linux, работающих под управлением WSL 2.
WSL обнаруживает существование этих файлов, читает их содержимое и автоматически применяет параметры при каждом запуске. Если файл отсутствует или содержит ошибку, то WSL продолжит запускаться в обычном режиме, но без применения параметров конфигурации.
wsl.conf
Файл wsl.conf настраивает параметры для каждого дистрибутива отдельно:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
[boot] # доступна только на Windows 11 и Server 2022 systemd=true # включает поддержку systemd command="" # строка команд, которые должны запускаться при запуске экземпляра WSL. Команда запускается от имени root # command=service docker start [automount] enabled=true # автоматически монтировать диски Windows (C:\ и другие) с помощью DrvFs в /mnt/ mountFsTab=true # автоматически обрабатывает /etc/fstab при запуске дистрибутива root=/mnt/ # устанавливает каталог, куда будут монтироваться диски Windows options="" # параметры автоматического монтирования # options = "metadata,uid=1003,gid=1003,umask=077,fmask=11,case=off" [network] generateHosts=true # WSL сам генерирует файл /etc/hosts generateResolvConf=true # WSL сам генерирует файл /etc/resolv.conf hostname="Hostname" # устанавливает имя Unix-компьютера. По умолчанию - имя компьютера Windows [interop] enabled=true # установка этого ключа в true означает поддержку запуска Windows-процессов appendWindowsPath=true # установка этого ключа определяет, будет ли WSL добавлять элементы пути Windows в переменную окружения $PATH [user] default=Username # пользователь по умолчанию |
.wslconfig
Файл .wslconfig настраивает параметры глобально для всех дистрибутивов Linux, работающих с WSL 2.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[wsl2] kernel=path # абсолютный путь Windows к пользовательскому ядру Linux memory=4GB # объём выделяемой памяти для WSL (по умолчанию 50% или 8 Гбайт - меньшее из них) processors=10 # сколько логических процессов назначить WSL. По умолчанию - столько же, сколько и Windows localhostForwarding=true # логическое значение, указывающее, должны ли порты, привязанные к wildcard или localhost в виртуальной машине, подключаться с хоста через localhost:port kernelCommandLine=blank # дополнительные аргументы командной строки ядра safeMode=false # запускает экземпляр WSL в безопасном режиме swap=25% # сколько виртуальной памяти добавить к дистрибутиву swapFile=path # абсолютный путь к файлу swal pageReporting=true # позволяет Windows освобождать неиспользуемую в WSL память guiApplications=true # включение поддержки графических приложений (только в Windows 11) debugConsole=false # логическое значение для включения окна консоли вывода, отображающего содержимое dmesg при запуске экземпляра дистрибутива WSL (только в Windows 11) nestedVirtualization=true # включение вложенной виртуализации (только в Windows 11) vmIdleTimeout=60000 # количество миллисекунд, в течение которых виртуальная машина простаивает, прежде чем она будет выключена (только в Windows 11) |
Резервное копирование и перемещение
Лучший способ создать резервную копию или переместить дистрибутивы (в рамках одного ПК или на другой) — использовать команды экспорта и импорта, доступные в Windows с версии 1809. Можно экспортировать весь дистрибутив в архив с помощью команды wsl --export. Затем его импортировать обратно в WSL с помощью команды wsl --import, которая может указать новое расположение для импорта, что также сохранять состояния дистрибутива.
Экспорт дистрибутива требует много места на жестком диске. Если места недостаточно, то можно использовать методы Linux для перемещения всех файлов:
- архивировать домашний и другие необходимые каталоги командой
tar -czf <archiveName> <directory>. После переноса на новый дистрибутив архив следует разархивировать командойtar -xzf <archiveName>; - можно экспортировать список установленных пакетов через
apt:dpkg --get-selections | grep -v deinstall | awl '{print $1}' > packages.txt, а затем установить все приложения на новом дистрибутиве командойsudo apt install -y $(cat packages.txt).
При экспорте можно указать ключ --vhd, указывающий, что дистрибутив следует экспортировать в виде файла VHDX.
Команду импорта можно дополнить ключами --version <Version — указывающий версию WSL (1 или 2) и --vhd — указывающий, что представленный файл является файлом VHDX, а не файлом tar.gz.
Файл tar можно получить разными способами, например:
- загрузить с сайта разработчика (при наличии);
- экспортировать контейнер дистрибутива.
Далее файл tar нужно импортировать в WSL:
1 2 3 4 5 6 7 |
# экспорт wsl --export <DistName> <Filename> wsl --export Debian C:\WSLDistros\export.tar.gz # импорт wsl --import <DistName> <InstallLocation> <FileName> wsl --import Debian C:\Users\username\WSL\ C:\Users\username\export.tar.gz |
