WSL не так уж и плох
В этот раз давайте поговорим отдельно о работе с 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. При этом я мог наслаждаться нормальным скейлингом экрана рабочими кодеками и всеми мультимедийными возможностями своего компьютера.