# Windows Subsystem for Linux WSL позволяет запускать, разрабатывать и отлаживать Linux программы на Windows. Более того обеспечивается удобная прозрачность между файловыми системами и возможность запускать программы друг-друга. Существует две реализации WSL: - WSL1 - транслятор API Linux <-> Windows - WSL2 - виртуальная машина с полноценным ядром Linux. Мы будем пользоваться WSL2. По скорости работы WSL2 почти не уступает нативной OS Linux. Более подробные отличия можно посмотреть в интеренете. Находим в поиске: Включение или отключение компонентов Windows Включаем галочки: - Подсистема Windows для Linux - Платформа виртуальной машины

Перезагружаем. В терминале включаем WSL2 по умолчанию для всех дистрибутивов. ``` wsl --set-default-version 2 ``` Далее из Microsoft Store можно устанавливать дистрибутивы Ubuntu, Debian, и др. ## Конфигурация WSL Установленные дистрибутивы можно запускать из профиля [Windows Terminal](Windows-Terminal) так: ``` wsl.exe -d ``` Например: ``` wsl.exe -d Ubuntu-20.04 ``` Если после настройки .bashrc будет ругаться на переменные locale то надо сгенерировать локаль ru_RU.UTF-8: ``` sudo dpkg-reconfigure locales ``` ## Настройка DNS (для работы с VPN) При включении VPN наблюдается проблема с переключением на новый DNS. Для ее решения необходимо чтобы WSL использовала DNS независимо от хостовой системы. В файл /etc/wsl.conf добавляем: ``` [network] generateResolvConf = false ``` Пишем свои DNS сервера в /etc/resolv.conf ``` sudo rm -rf /etc/resolv.conf sudo nano /etc/resolv.conf ``` ``` nameserver 8.8.8.8 nameserver 8.8.4.4 ``` Перезапускаем WSL: ``` wsl --shutdown ``` ## Проброс USB устройств в WSL Устанавливаем `usbipd` ``` winget install usbipd ``` Вводим для получения листа ```usbipd list``` и получаем что то вроде такого: ``` Connected: BUSID VID:PID DEVICE STATE 1-1 1a86:7523 USB-SERIAL CH340 (COM5) Not shared ``` Биндим нужное устройство: ``` usbipd bind --busid 1-1 ``` Лист станет таким: ``` Connected: BUSID VID:PID DEVICE STATE 1-1 1a86:7523 USB-SERIAL CH340 (COM5) Shared ``` Пробрасываем нужное нам устройство: ``` usbipd attach --wsl --busid 1-1 ``` Всё, после этого отваливется COM от винды и он теперь доступен в WSL. ## Работа Чтобы получить доступ к файловой системе виртуальной машины надо при запущенной машине зайти в сетевую папку: ``` \\wsl$ ``` Либо запустить внутри виртуальной машины: ``` explorer.exe . ``` Если используете VS Code то его можно открыть в нужной папке виртуальной машины: ``` code . ```