Provide feedback
Saved searches
Use saved searches to filter your results more quickly
Sign up
Appearance settings
Подсистема 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 |
- Where is the WSL config file?
- How do I open a WSL config file?
- How do I create a Wslconfig file?
- How do I open a Wslconfig file?
- Is WSL a VM?
- How do I open WSL File Explorer?
- How do I run a GUI on WSL?
- Can I access WSL files from Windows?
- How do I set default WSL?
- Is WSL installed?
- How do I access WSL terminal?
- What is WSL EXE?
- Where are WSL folders?
Where is the WSL config file?
wslconfig. Stored in your %UserProfile% directory. Used to configure settings globally across all installed Linux distributions running as the WSL 2 version.
How do I open a WSL config file?
To start using WSL, open up a PowerShell terminal and type wsl . If you’ve set up WSL correctly, you’ll enter a bash terminal running on the WSL distro of choice. From here, you can run any Linux commands you wish. Below you will find a reference to all of the options the wsl.exe provides when starting up.
How do I create a Wslconfig file?
To create a global configuration for all installed WSL2 Linux disributions, create a file named . wslconfig in your user profile folder. For example, if your Windows 10 user name is Bleeping, then you would create the file at C:\users\Bleeping\. wslconfig.
How do I open a Wslconfig file?
The wslconfig.exe command lets you manage the Linux distributions running via the Windows Subsystem for Linux, or WSL. To run it, you need to open either a Command Prompt or PowerShell window. To open a Command Prompt window, open the Start menu, type “cmd”, and then click the “Command Prompt” shortcut.
Is WSL a VM?
WSL 2 uses the latest and greatest in virtualization technology to run a Linux kernel inside of a lightweight utility virtual machine (VM). However, WSL 2 is not a traditional VM experience.
How do I open WSL File Explorer?
To open your WSL distribution in Windows Explorer, click on the Windows start menu and type. You can also type this path in windows explorer. Click on the path, and you will see your WSL distribution. If you click on the name, you will see the entire Linux file system available to WSL.
How do I run a GUI on WSL?
If you already have WSL installed on your machine, you can update to the latest version that includes Linux GUI support by running the update command from an elevated command prompt. Select Start, type PowerShell, right-click Windows PowerShell, and then select Run as administrator.
Can I access WSL files from Windows?
Starting with Windows 10 build 18342, Microsoft added the ability for users to access Linux files in a WSL distro from Windows 10. These files can be accessed through the command line, and also Windows apps, like File Explorer, VSCode, etc. can interact with these files.
How do I set default WSL?
Set default Linux distro on WSL2
Search for Command Prompt, right-click the top result, and select the Run as administrator option. Quick tip: You can also write the command like this: wsl -l . In the command, replace DISTRO-NAME for the name of the distro you want to set as default (see step No. 3).
Is WSL installed?
To check the WSL version installed on Windows 10 or 11, use these steps: Open Start. Search for Command Prompt (or PowerShell), right-click the top result and select the Run as administrator option. … Under the “Version” collum, confirm the WSL version installed on Windows 11 or Windows 10.
How do I access WSL terminal?
Enable WSL permissions
Open another PowerShell window with «Run as Administrator». After the command is completed, you can execute the Linux command in the built-out Terminal. First enter ubuntu in cmd, take a little time to start Ubuntu, set the username and password. Then you can play with Ubuntu happily.
What is WSL EXE?
wsl.exe. 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. The command can also be used to run Linux binaries from the Windows Command Prompt or Windows PowerShell.
Where are WSL folders?
Where are WSL files stored? WSL files are exposed through a network share \\wsl$\[distro name], for example my home directory is at \\wsl$\Ubuntu-20.04\home\pawelb. C:\Users\pawelb\AppData\Local\Packages\CanonicalGroupLimited. Ubuntu18.
This part will be separate and dedicated to Linux and Terminal. Because of my everyday job I find this feature extremely useful. In this part, we will go step by step on how to install WSL, and look into basic features of WSL. We will also install Hyper-V, Sandbox and have a look at Terminal.
Let’s start right away. Just to repeat once again, for fifth time – this is not typical step by step guide, this is part of my Windows 11 configuration series, which is reminder for me, and maybe can give you some ideas how to configure Windows 11, what you can use
Linux – setup WSL
Extremely useful, escpecially if you are using SSH and lot of Linux stuff.
Make sure you have virtualization features enabled in your BIOS before running this!
This method works on Windows 11 23H2 and 24H2!
WSL installation has a few steps:
To install Windows Subsystem for Linux we need to enable feature called Virtual Machine Platform.
Virtual Machine Platform is based on Hyper-V but separate from it.
Control Panel – Programs and features – Turn Windows features on or off – enable Virtual Machine Platform – after PC reboots we can continue
After reboot open again Control Panel – Programs and features – Turn Windows features on or off – check Windows Subsystem for Linux – OK – reboot system
After reboot, we need to go to Powershell, and install wsl through it. That process will update WSL, and install Ubuntu 24.04.1 LTS (actual at the time of writing this).
Type in search – Powershell – right click on icon and select Run as Administrator.
Type into powershell
wsl.exe --install
It will install WSL, and then Ubuntu…
After Ubuntu is installed, You will be asked then to enter username and pass for new Linux user – after that is done you will get – Installation is successful.
You can now access Ubuntu through Terminal – new shell is available
You will start Linux by going to Start – All apps – Ubuntu (I also pin it to Taskbar)
First steps after you run Linux
sudo apt update and sudo apt upgrade should be run first in Linux.
Managing WSL through Powershell
You can also manage WSL through Powershell
wsl –list -> will list installed distros
wsl –list –online -> will list distros available for installation
To install one of the listed available distros type
wsl –install Debian (for example)
To install graphical Linux app, open Linux shell and type in (I will install text editor for example)
sudo apt install gedit -y
to start app, then type
gedit
#### Accessing file system
Windows drive is mounted in /mnt/c
cd /mnt/c
ls
Also in Windows in File Explorer in navigation bar – Linux drive will appear. You can easily copy files and folders to Linux through Windows Explorer – recommend directory would be /home.
That is it, you now have Linux in your Windows.
While we are at the topic on VMs and adding various platform, I will add Hyper-V and Sandbox. I use exclusively Hyper-V on Windows for virtualization, and Sandbox is great feature
In Windows 11 Pro (it can also be done in home, since I’m not using home edition, I won’t cover it)
Make sure you have virtualization features enabled in your BIOS before running this!
Control Panel – Programs and features – Turn Windows features on or off – select Hyper-V – ok
Windows Sandbox
Run untrusted software in an isolated/temporary environment. In Windows Sandbox nothing survives the reboot of the machine in sandbox. Great feature for security, especially browsing to untrusted sources.
Control Panel – Programs and features – Turn Windows features on or off – Windows Sandbox
I pin both Hyper-V and Sandbox to Taskbar.
Terminal
Combines multiple shells (command prompt, powershell, Linux…).
CTRL + SHIFT + T to open new tab in Terminal
Zoom in – CTRL + Plus
Zoom out – CTRL + Minus
To return to default value – CTRL + 0
Besides + sign at the top of the Terminal window there is a little arrow/triangle pointing down – click on it to select which shell you wish to open in new tab.
If you click on an little arrow and select Settings you will get a whole lot of settings you can set for Terminal
Command Pallete can be selected when clicking on little arrow/triangle on top of Windows Terminal – it gives us all possible commands to control Terminal. You can open it also by clicking CTRL + SHIFT + P
And that is it for this part. We are almost done with initial Windows 11 setup
Windows Configuration / Tips and Tricks – Part 1
Windows Configuration / Tips and Tricks – Part 2
Windows Configuration / Tips and Tricks – Part 3
Windows Configuration / Tips and Tricks – Part 4
Windows Configuration / Tips and Tricks – Part 5
Windows Configuration / Tips and Tricks – Part 6
Windows Configuration / Tips and Tricks – Part 7
Disclaimer
Время на прочтение4 мин
Количество просмотров53K
В новостях прошла весть, что теперь WSL поддерживает демон systemd. В качестве преимущества использования systemd предлагается установка и запуск приложений и сервисов через snap. Для примера приведены Nextcloud, LXD, MySQL, MicroK8s и Docker. Я пока в преимущества самого snap не вникал. Но возможность запуска и управления демонами через systemd привлекает.
Начинаем с установки «Virtual Machine Platform». Запускать команду надо от имени администратора в консоли PowerShell:
PS C:\> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all
Cистема DISM
Версия: 10.0.22000.653
Версия образа: 10.0.22000.1042
Включение функций
[==========================100.0%==========================]
Операция успешно завершена.
Для запуска systemd нужна WSL версия 0.67.6. Статья на сайте Microsoft рекомендует установить предварительную версию WSL из магазина приложений. Проблема в том, что в магазине версия 0.66. Для установки WSL Preview требуется Windows 11 (сборка 22000 или более новая).
Поступаем следующим образом. Ставим из магазина приложений «устаревшую» версию (0.66), чтобы в дальнейшем получать обновления на нее. А дальше качаем с GitHub нужную нам версию 0.67.6. Она последняя доступная на момент написания статьи. Возможно, на момент прочтения выйдут версии поновее. При запуске скаченного с GitHub пакета Менеджер установки предложит обновить WSL до нужной нам версии, то есть распознает, что WSL Preview у вас уже установлен. Это позволит в будущем обновлять WSL Preview автоматически встроенными в магазин приложений средствами
Какие команды могут помочь. Проверка версии WSL.
PS C:\> wsl.exe --version
Если команда не распознает параметр «—version», значит у вас старая версия WSL (0.65 и ниже).
Недопустимый параметр в командной строке: --version (c) Корпорация Майкрософт (Microsoft Corporation). Все права защищены. Использование: wsl.exe [Аргумент] [Параметры...] [Командная строка] ....
В этом случае будет работать параметр «—status»:
PS C:\> wsl --status Распределение по умолчанию: Ubuntu-20.04 Версия по умолчанию: 2 Подсистема Windows для Linux в последний раз обновлена 21.06.2022 Включены автоматические обновления WSL. Версия ядра: 5.10.102.1
В версии 0.66 параметр «—version» (-v) и статус «—status» дают следующий вывод:
PS C:\> wsl --status Default Distribution: Ubuntu-20.04 Default Version: 2 WSL version: 0.66.2.0 Kernel version: 5.15.57.1 WSLg version: 1.0.42 MSRDC version: 1.2.3401 Direct3D version: 1.606.4 DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windows version: 10.0.22000.978 PS C:\> wsl --version WSL version: 0.66.2.0 Kernel version: 5.15.57.1 WSLg version: 1.0.42 MSRDC version: 1.2.3401 Direct3D version: 1.606.4 DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windows version: 10.0.22000.978
А вот в версии 0.67 вывод параметра «—status» меняет формат:
PS C:\> wsl --status Default Distribution: Ubuntu-20.04 Default Version: 2
Итого, надо добиться того, чтобы версия WSL («WSL version» в выводе команды) была 0.67.6.0.
PS C:\> wsl -v WSL version: 0.67.6.0 Kernel version: 5.15.62.1 WSLg version: 1.0.44 MSRDC version: 1.2.3401 Direct3D version: 1.606.4 DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windows version: 10.0.22000.1042 PS C:\> wsl --status Default Distribution: Ubuntu-20.04 Default Version: 2
Я предполагаю, что уже есть созданная виртуальная среда в WSL. Кратко, как создать, если еще нет. Смотрим список доступных систем в WSL:
PS C:\> wsl.exe --list --online
The following is a list of valid distributions that can be installed.
Install using 'wsl.exe --install <Distro>'.
NAME FRIENDLY NAME
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
SLES-12 SUSE Linux Enterprise Server v12
SLES-15 SUSE Linux Enterprise Server v15
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
OracleLinux_8_5 Oracle Linux 8.5
OracleLinux_7_9 Oracle Linux 7.9
Далее ставим выбранный дистрибутив параметром «—install», пример:
PS C:\> wsl.exe --install Ubuntu
В конце установки предложат ввести имя пользователя Linux и пароль для него.
После установки надо в файл /etc/wsl.conf добавить ключ для запуска systemd. В моем случае файл /etc/wsl.conf не существовал и был создан при редактировании:
user@DESKTOP:~$ sudo vim /etc/wsl.conf
[boot]
systemd=true
Важно, файл редактируется в гостевой системе Linux, не на хосте.
PS C:\> wsl.exe --shutdown
В консоли Linux появится сообщение:
user@DESKTOP:~$ [process exited with code 1 (0x00000001)]
Вообще рекомендую команду «wsl.exe —shutdown» вводить после каждого изменения в WSL. Чтобы запустить WSL после остановки, нужно открыть заново консоль гостевой ОС.
Проверяем, что всё получилось:
user@DESKTOP:~$ systemctl list-unit-files --type=service
UNIT FILE STATE VENDOR PRESET
accounts-daemon.service masked enabled
apparmor.service enabled enabled
apport-autoreport.service static -
apport-forward@.service static -
apport.service generated -
apt-daily-upgrade.service static -
apt-daily.service static -
atd.service masked enabled
autovt@.service alias -
blk-availability.service enabled enabled
bolt.service static -
clickhouse-server.service masked enabled
cloud-config.service enabled enabled
cloud-final.service enabled enabled
cloud-init-hotplugd.service static -
.........
И, например, так
user@DESKTOP:~$ systemctl status networkd-dispatcher.service ● networkd-dispatcher.service - Dispatcher daemon for systemd-networkd Loaded: loaded (/lib/systemd/system/networkd-dispatcher.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2022-09-25 23:57:28 MSK; 37s ago Main PID: 133 (networkd-dispat) Tasks: 1 (limit: 9390) Memory: 16.8M CGroup: /system.slice/networkd-dispatcher.service └─133 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers Sep 25 23:57:27 DESKTOP systemd[1]: Starting Dispatcher daemon for systemd-networkd... Sep 25 23:57:28 DESKTOP networkd-dispatcher[133]: No valid path found for iwconfig Sep 25 23:57:28 DESKTOP networkd-dispatcher[133]: No valid path found for iw Sep 25 23:57:28 DESKTOP systemd[1]: Started Dispatcher daemon for systemd-networkd. Sep 25 23:57:28 DESKTOP networkd-dispatcher[133]: WARNING:Unknown index 7 seen, reloading interface list
Всё, можно пользоваться. Примеры использования есть на видео и в статье выше: