WSL не так уж и плох

07 Dec 2023 время чтения 3 мин Desktop Георг Граубергер

В этот раз давайте поговорим отдельно о работе с WSL 2. В прошлой статье я уже описал как можно установить WSL. Таким образом мы получаем что то подобное обычному Линукс серверу. Пройдемся по некоторым фишкам.

Встроенный файловый сервер

При старте WSL запускает файловый сервер(plan9) с который прокидывает все файлы с файловой системы Linux на Windows и обратно. Для этого нужно всего лишь открыть Файловый менеджер и набрать в адресной строке \\wsl$ и вы сможете выбирать из списка файловых систем установленных дистрибутивов.

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

# На стороне Windows выбираем диск с BTRFS
GET-CimInstance -query "SELECT * from Win32_DiskDrive"

DeviceID           Caption                        Partitions Size          Model
--------           -------                        ---------- ----          -----
\\.\PHYSICALDRIVE4 Samsung SSD 970 EVO Plus 500GB 2          500105249280  Samsung SSD 970 EVO Plus 500GB
\\.\PHYSICALDRIVE3 ST4000VN008-2DR166             1          4000784417280 ST4000VN008-2DR166
\\.\PHYSICALDRIVE5 ARTURIA Flash Disk USB Device  1          69632         ARTURIA Flash Disk USB Device
\\.\PHYSICALDRIVE2 TOSHIBA MK5061GSY              1          500105249280  TOSHIBA MK5061GSY
\\.\PHYSICALDRIVE0 CT500MX500SSD1                 3          500105249280  CT500MX500SSD1
\\.\PHYSICALDRIVE1 Samsung SSD 850 EVO 120GB      0          120031511040  Samsung SSD 850 EVO 120GB

# В моем случае это диск 3
# и устанавливаем его в wsl, запускать надо с правами Администратора

wsl --mount \\.\PHYSICALDRIVE3 --partition 1 --type btrfs
The disk was successfully mounted as '/mnt/wsl/PHYSICALDRIVE3p1'.
Note: The location will be different if you have modified the automount.root setting in /etc/wsl.conf.
To unmount and detach the disk, run 'wsl.exe --unmount \\.\PHYSICALDRIVE3'

Содержимое диска теперь можно посмотреть в файловом менеджере.

# Запускаем командную строку Linux
wsl
# Открываем файловый менеджер и видим содержимое нашего BTRFS диска
explorer.exe /mnt/wsl/PHYSICALDRIVE3p1

Таким образом плавно переходим к следующему классному функционалу

Интероперабельность бинарных файлов

Если посмотреть внимательно то видно что я запускаю explorer.exe. С WSL можно использовать бинарные файлы в обоих системах. Так что если хочется запустить настоящий vim или grep из powershell то это стало возможным.

wsl grep -R something

# Даже есть возможность перенаправлять потоки в команды из разных систем
wsl cat ~/.ssh/id_ed25519.pub | scb
NOTE:
Система удобная, но не совершенная. Т.к. во всех этих операциях присутствует сетевая файловая система. Поэтому работа требующая быстрого хранилища будет очень сильно замедлятся. Имейте это ввиду.

WSL как бэкенд для IDE

Если вам приходилось пользоваться VSCode то наверняка вы слышали о расширении для удаленной разработки через SSH. Есть такое же расширение для разработки в WSL. Установить его можно простой командой в powershell.

code --install-extension ms-vscode-remote.remote-wsl

После у вас появляется возможность открыть любой проект внутри WSL и использовать Линукс как бэкенд для разработки. Просто открываем проект и жмем Ctrl + Shift + P и набираем команду Dev Container: Reopen Folder in WSL.

Итог

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