Есть ли жизнь в WSL2?  Публичный пост

Достаточно давно живу, одновременно используя Windows для игр и Linux для всего остального (да, дуалбутчик хуже пидораса). И вот в последнее время осознал, что очень напрягает перезагружаться всё время, да и к рабочему компьютеру всё равно через RDP подключаюсь, поэтому можно и в винде находиться в это время. Ну и, конечно, подбешивает ситуация в линуксах с видео-драйверами (nvidia, fuck you (c)).
В общем, хочется простой человеческой жизни под виндой, но всё-таки и полностью уходить с линукса тоже жаль. Личные проекты какие-то свои есть, докер нормальный хочется и вот это всё.
Есть у кого-то опыт работы с WSL2, насколько это всё готово к использованию, может есть какие-то подводные камни?

Связанные посты
25 комментариев 👇

WSL отлично работает, но у него постоянно какие-то косяки.
Сейчас WSL2 работает с помощью виртуализации, то есть стало намного больше фишек поддерживаться, но из-за этого тоже косяки всякие получаются, например есть баг с тем, что примонтированная файловая система работает медленно. Проявляется везде, например git status может секунд 10 отрабатывать на изи.
Пруф: https://github.com/microsoft/WSL/issues/4197

В целом я доволен. Я пробовал дуалбут, но это кусок говна, линукс не приспособлен для десктопа, просто пиздец, ебешься 2 часа чтобы настроить те вещи, что в винде работают из коробки.

Зато в WSL можно спокойно сидеть и делать нужные вещи с нормальной совместимостью. В пизду линукс как десктоп.

  Развернуть 1 комментарий

@Kirk, я вот слышал, что производительность компиляции, например, в WSL2 даже выше, чем нативно под виндой. Это действительно так?

Медленность ФС печалит, конечно

  Развернуть 1 комментарий

@djaler, ну я про такое не слышал, мои проекты не компилируются долго чтобы об этом задумываться.

В целом главное что есть posix инструменты и не всратый ssh (кстати наконец-то в винде его завезли из коробки, теперь не нужно ставить абсолютно богомерзкий путти)

  Развернуть 1 комментарий

Для posix инструментов есть cygwin. Но в нем есть тормоза при форках и переключениях контекста, из-за этого обычный unix-pipe-way работает медленно :(

  Развернуть 1 комментарий

Что надо помнить при использовании wsl2 - используйте нативную фс при работе с файлами. Т.е. если запускаете приложения в wsl2 убедитесь что оно будет работать с файлами из wsl. И тогда перфоманс вас приятно удивит :)

  Развернуть 1 комментарий

@Kirk, а как в WSL2 дела с CUDA и вообще с вычислениями на GPU? Помнится, я пробовал год назад на тогдашней WSL, но она CUDA вообще не видела.
Вебкамеру WSL2 видит? И вообще внешние устройства?

  Развернуть 1 комментарий

Cuda в wsl2 уже есть в dev-канале win10 (с мая). До беты ещё не докатилось, там регулярно в новых сборках что-нибудь ломается

  Развернуть 1 комментарий

@ZalHonan, норм, недавно полностью настроил - доволен. пока сыровато, но обещают дальше допиливать поддержку. но уже все что нужно работает - то есть вычислять на ней можно. но как и говорили выше, можно ловить баги, но на то она и дев ветка.
про вебку вроде пока не завезли, как и любые юсб устройства https://github.com/microsoft/WSL/issues/2195
но можно через костыли.

  Развернуть 1 комментарий
Алексей Ostin, Балансирую между разработкой и менеджментом 25 ноября 2020

С WSL есть жизнь.
Но эта жизнь делится на два лагеря: wsl и wsl2.
Первый wsl - фактически запущенное параллельно с windows linux-ядро. Быстрые файловые операции, но сложности с posix-вызовами. Можно провести аналогию с pv-виртуализацией.
Второй wsl - это hvm-виртуализация. Накладные расходы на трансляцию ресурсов и, особенно, дисковых операций между гостем и хостом, но все намного лучше с системными вызовами в рамках виртуальной машины.

Для меня основной задачей было получить unix-инструментарий для повседневной работы (cat, grep, вот это все), и я выбрал cygwin.

Определённо, удобства может добавить терминал, я использую Conemu, и очень доволен. Правда, в wsl2 появились какие-то странные тормоза при работе в псевдографике (framebuffer), например, MC. Не решал проблему, вернулся на cygwin.

  Развернуть 1 комментарий

@nitso, а в чем проявляются сложности с posix вызовами? Просто сколько не сидел на wsl не видел никаких проблем, интересно в каких кейсах все плохо

  Развернуть 1 комментарий

Хороший вопрос, может кто-нибудь объяснит почему все так хвалят WSL. Я пробовал пару раз, как-то не зашло, через 5 минут использования я обнаруживаю что какая-то фича не работает или не поддерживается. Полноценное ядро они не реализуют, и "дистрибутив" убунты там урезанный. Чем WSL лучше guest-линукса на VirtualBox с shared директориями? Чем WSL лучше cygwin?

  Развернуть 1 комментарий

Wsl лучше cygwin там, что есть возможность пользоваться любым дистрибутивом и намного сильнее развязаны руки в плане пакетов.

На машине с win 7 (sic!) сижу на cygwin. На десятке в wsl2.

Wsl нравится отсутствием головной боли с путями. В случае с cygwin проще поставить на хост готовую win-версию какой-то программы, чем компилять её под cygwin. И такая программа будет работать с Windows-путями. Если вызывать её из cygwin, приходится конвертить пути туда-сюда, благо, для этого есть инструменты.

  Развернуть 1 комментарий
Sergey Burma, Python-разработчик 26 ноября 2020

tl;dr да, жизнь есть, только нужно много ОЗУ (⩾16Гб), иначе тяжеловато

Лет 7 пользовался Xubuntu. Пересел на Windows в прошлом сентябре, когда купил Thinkpad, где он уже был предустановлен.
Сначала попробовал WSL1, но получилось неудобно, так как Docker живет в отдельной виртуальной машине, а компания как раз начала переезжать на Docker Compose и было много странных проблем. Плюс тогда перебрал много терминалов, но все были какие-то всратые (в основном не понравилось, что по функционалу все очень проигрывало Gnome Terminal, который работал тоже всрато).
Долгое время потом сидел на Ubuntu в VirtualBox, но там все время не хватало места и ОЗУ, докер периодически все засирал, т.к. выделил я только 30 Гб, зато можно быстро сохранять состояние машины целиком.

В августе наконец переехал на WSL2 и впечатления получились гораздо лучше:

  1. Докер работает нативно внутри и весь инструментарий с работы (вим, докер, питон и т.п.) завелся сразу.
  2. Windows Terminal к этому времени стал более стабильным и готовым к использованию - табы, поиск, разделение терминала и прочее из коробки, плюс все очень кастомизируемо. Из недостатков - если в tmux выводиться слишком много текста - терминал подвисает. В остальном вполне ок.
  3. Они упростили работу с сетью - все порты теперь доступны из винды по localhost. Это помогло в частности с настройкой X-сервера ну и в целом гораздо удобнее.
  4. VcXsrv, который поставлятся через chocolatey, оказался самым удобным и бесплатным X-сервером, с ним все прекрасно работает, в частности Pycharm и Meld как difftool.

Теперь о недостатках:

  1. Я очень редко пользуюсь файлами из винды в WSL и наоборот, но это работает довольно медленно, поэтому например Pycharm пришлось ставить внутри WSL (плюс с WSL умеет работать только профессиональная версия). Если не пересекаться - все работает очень быстро и без проблем
  2. Периодически WSL сжирал всю память из-за бага. Решилось установкой лимита https://medium.com/@lewwybogus/how-to-stop-wsl2-from-hogging-all-your-ram-with-docker-d7846b9c5b37 и добавлением своп-файла на всякий случай. После этого проблем не было.
  3. Графическое ускорение практически не работает, так что программы получится запустить только визуально простые, никаких серьезных игр и работы с GPU. Хотя MS обещают добавить поддержку Linux в DirectX, а также свой X-сервер, неизвестно когда это случится.
  4. Требуется версия Windows 10 не ниже 2004. Если почему-то стоит ниже, нужно делать тяжелый апдейт, который может сломать многое.
  Развернуть 1 комментарий
Ivan Filatov, PHP програмист/SRE 25 ноября 2020

Сам тоже с дуалбутом живу. Мне прям очень нужен докер, нормальная работа с файлами и сетью. Сижу на Линуксе почти всё время, но хотелось бы ещё иметь доступ не только к тем полутора играм которые нативно работают под Линукс.
Подпишусь.

  Развернуть 1 комментарий

Тоже дуалбутчик и тоже интересны альтернативы

  Развернуть 1 комментарий
Konstantin Marinenkov, PHP & Go Кекендер 26 ноября 2020

Пользовался ещё wsl1, сейчас переполз на wsl2. В целом, для моих php\go-шных работ его более чем хватает. Докер шуршит быстро, всё работает "как в нативе", джетбрейнсы подключаются к нему без проблем. Но есть три "но"

  1. Графика и вычисления на gpu. Microsoft там активно это всё пилит, и грозятся к 21H1 выкатить и поддержку gpu, и самый-самый X-сервер. Если очень хочется, то в insider preview уже можно пощупать. Но пока что максимум, чего можно ожидать на стейбл - несложные по графике приложения через VcXsrv. OpenCl пока в полном пролёте.

  2. Работа с дисками винды идёт через сеть. Т.е. оооооочень медленно. В целом, если не сидеть в /mnt/c/Users/vas3k/..., а сразу переносить на диск wsl, то скорость работы резко взлетает до нативной.

Из практики: стягивание зависимостей проекта через composer внутри wsl проходит за несколько секунд, а на условном диске "c" я успеваю сходить попить чай и полистать ленты.

  1. wsl2 пока что не умеет работать с внешними устройствами, только wsl1. Но над этим работают.

Резюмируя: мне вкатило. Для перекладывания json-ов из одного контейнера в другой и отображения в красивой формочке в браузере wsl2 идеален. Для написание чего-то консольного под линь - тоже. А вот с gui пока всё плохо, вот.

  Развернуть 1 комментарий

GUI натянуть можно. Делал у себя на компе. Перепробовал несколько вариантов, самый рабочий и не глючный с Хабра взял. В принципе даже юзабельно вполне. Просто все линуксовые окошки перекидываю на отдельный рабочий стол и вуаля - вот винда, клик, а вот у тя линукс. И без всякого дуалбута

  Развернуть 1 комментарий

@dwdraugr, я правильно понял, что WSL сейчас не поддерживает GPU? То есть если мне нужно нечто, что использует CUDA, запустить, то я в пролете?

  Развернуть 1 комментарий

@undeaddy, пока что да, единственное исключение - софт может работать через directML, или как его тамю

  Развернуть 1 комментарий

@undeaddy, в дев ветке есть поддержка куды - и даже работает не ломаясь каждые три секунды.

  Развернуть 1 комментарий

Где-то в 18м году переехал с макоси на винду с WSL. Как для пайтоно-быкендерской работы это было вполне себе окей. Но, я не любитель что-то кроме тестов локально запускать, так что не представляю как оно там себя под нагрузкой повело бы. Coreutils и всякие ssh работали и меня это устраивало

  Развернуть 1 комментарий

Я немного работал с WSL и мне не понравилось, вообще не то и просто неудобно, например я не могу запустить отладку Rails приложения из виндовой IntelliJ.

Игры можно играть через Lutris, Steam Play или протоны, но я не пробовал, только в CS:GO играю, а Diabotical который я играю на винде требует античит, который не запускается под Wine. Зато в некоторых играх (Assassins Creed: Odyssey) пишут что фпс даже лучше чем под шиндовс.

У меня AMD RX580 и i7 9900K.

Сейчас ради интереса поставлю Quake Champions. Upd: куча работает, но подлагивает ну ультра настройках, хотя фпс 100+, именно фризы. На лоу настройках 200 фпс и ничего не подлагивает.

  Развернуть 1 комментарий

еще некогда был популярен PlayOnLinux, это по сути протестированные конфигурации Wine, неплохое решение для старых игр. С AMD проблем быть не должно 👍

  Развернуть 1 комментарий
Andrey Ruban, Красивый DevOops 26 ноября 2020

Именно из за этого пересел на MacOs. Консолька и красота/эстетика :). А вообще надо конечно исходить из задач. Возможно просто взять второй ноут для игрушек)

  Развернуть 1 комментарий

Попробовал и остался на Win+ubuntu сервера, между ними samba шара. (Тут правда еще спецфика - много разных проектов, на одном хосте они начинают жопой толкатся бывает.) Работает быстро, к докеру так же цепляется, но мне проще из putty всем управлять. работаю с PyCharm и phpStorm

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб