Я начал собирать рабочую станцию под задачи машинного обучения. Поставил в неё, кроме прочего, отличный процессор, много памяти, достойную видеокарту. Практически все мои задачи я решал в Ubuntu. Правда, для работы с текстами мне нужен был Microsoft Office. Онлайновый Office тогда ещё не появился, и, давайте называть вещи своими именами, LibreOffice — это просто ужас какой-то. Для меня решением стала двойная загрузка в конфигурации Ubuntu — Windows 10. Мне невероятно понравилось то ощущение свободы, которое испытываешь, переходя с ОС от Apple на Ubuntu. А возможности, которые открываются перед тем, кто сам собирает свой компьютер, практически бесконечны.
Двойная загрузка в течение долгого времени полностью меня устраивала. А когда я миллион раз ей воспользовался, появилась технология WSL (Windows Subsystem for Linux, подсистема Windows для Linux). Когда это случилось, я начал решать некоторые свои Linux-задачи в Windows. Правда, даже так, многого для полноценной работы мне ещё не хватало. Но теперь, с выходом WSL 2, у меня возникает такое ощущение, что новая версия WSL способна кардинальным образом изменить ситуацию. Сегодня я предлагаю поговорить о том, как, с помощью WSL 2, перенести задачи по разработке программ из Linux в Windows 10. Я расскажу о новых возможностях WSL 2, и о том, что можно ожидать от этой подсистемы в будущем.
Обзор WSL 2
WSL 2 — это новая версия подсистемы Windows для Linux. В этой версии имеются некоторые изменения, определяющие то, как Linux-дистрибутивы взаимодействуют с Windows.
Microsoft любит Linux
В этом релизе WSL в распоряжении пользователя оказывается улучшенная производительность файловой системы и полная совместимость с системными вызовами. Конечно, у нас есть возможность запускать Linux либо на WSL 1, либо на WSL 2, и, более того, переключаться между разными версиями WSL можно в любое время. WSL 2 — это результат серьёзного усовершенствования базовой архитектуры системы, её новые возможности основаны на технологии виртуализации и на функционале ядра Linux. При этом Microsoft берёт на себя заботу о мелких деталях, поэтому пользователь WSL может просто заниматься своими делами, ни на что не отвлекаясь.
Установка
Microsoft обещает, что в ближайшем будущем установка WSL 2 будет выполняться очень просто, и что Linux можно будет обновлять с использованием механизма обновлений Windows. Пока же процесс установки WSL 2 требует некоторых усилий, но, на самом деле, ничего страшного тут нет.
В этом примере мы установим на Windows 10 Ubuntu 20.04. Надо отметить, что процесс установки будет одним и тем же для всех дистрибутивов Linux, доступных в Microsoft Store. Для начала нужно включить компонент Windows Subsystem for Linux. Для этого надо открыть PowerShell от имени администратора и выполнить следующую команду:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
Далее, нужно обновить WSL до WSL 2. Для этого Windows 10 должна быть обновлена до версии 2004. В BIOS должна быть включена технология виртуализации Intel. Снова воспользуемся PowerShell с административными привилегиями и выполним такую команду:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Для завершения установки WSL и обновления до WSL 2 перезагрузите компьютер. Затем нужно установить WSL 2 в качестве версии WSL, используемой по умолчанию при установке новых дистрибутивов Linux. Для этого, всё так же, пользуясь PowerShell с правами администратора, выполним эту команду:
wsl --set-default-version 2
После того, как вы выполните эту команду, может появиться такое сообщение:
WSL 2 requires an update to its kernel component. For information please visit https://aka.ms/wsl2kernel
Сообщение, выдаваемое при попытке установки WSL 2 как подсистемы Windows для Linux, используемой по умолчанию
Перейдите по указанной ссылке и установите соответствующий MSI-файл, благодаря которому на вашу машину будет установлено ядро Linux для WSL 2. После того, как ядро будет установлено, выполните вышеприведённую команду снова. Теперь она должна завершиться успешно, не выдавая подобного сообщения.
Теперь осталось лишь установить нужный дистрибутив Linux. Для этого надо открыть Microsoft Store и поискать там Ubuntu 20.04 LTS. После установки дистрибутива в меню Пуск должен появиться ярлык для запуска Ubuntu. Запустите систему и следуйте инструкциям для завершения установки (в целом, завершение установки заключается в создании нового пользователя).
Для того чтобы проверить, действительно ли дистрибутив установлен на WSL 2, выполните такую команду:
wsl --list --verbose
Если оказалось, что используется WSL 1, то переключиться на WSL 2 можно, воспользовавшись командой такого вида:
wsl --set-version <distribution name> <versionNumber>
Вот и всё. Теперь в вашем распоряжении имеется полноценный дистрибутив Ubuntu, работающий в Windows 10.
Настройка рабочей среды для программиста
Теперь, когда в вашем распоряжении оказалась рабочая Ubuntu, вы можете устанавливать всё, что вам может понадобиться. Например, если вы — дата-сайентист, вы можете установить самый свежий дистрибутив Anaconda. Если вы — фронтенд-разработчик, то вас, например, могут заинтересовать Angular, npm и многое другое. Здесь же мне хотелось бы сосредоточиться на двух инструментах. Это — Visual Studio Code и связка Docker + Kubernetes.
?Visual Studio Code
VS Code — это редактор кода, которому отдаёт предпочтение множество разработчиков. Одна из сильных сторон этого редактора заключается в поддержке бесконечного множества расширений. А теперь, когда мы включили WSL 2, совершенно необходимым расширением для VS Code можно назвать Remote Development.
Это расширение позволяет удалённо работать над кодом, который имеется в среде, создаваемой средствами WSL 2, в контейнере, или даже на удалённой виртуальной машине, доступ к которой осуществляется по SSH. Данное расширение позволяет, например, создать проект в ОС Linux, работающей в WSL 2, и использовать для работы над этим проектом редактор VS Code, установленный в Windows 10.
Собственно говоря, VS Code отличается огромными возможностями. Это и интеллектуальная система IntelliSense, и интеграция с git, и отладчик, и терминал, и очень много чего ещё. Полагаю, с настройкой VS Code вы справитесь и очень скоро сможете сделать из этого редактора именно то, что нужно вам.
?Docker + Kubernetes
Docker для Windows сделан на «хорошо», но не на «отлично». На самом деле, именно Docker заставлял меня постоянно «прыгать» между Windows и Ubuntu. Например, мне приходилось делать это тогда, когда нужно было создать новый образ Docker. А вот WSL 2 отличается полной поддержкой Docker. Это, полагаю, такая возможность новой подсистемы, которая делает работу с Docker даже удобнее, чем в Linux.
Для того чтобы включить эту возможность, нужно перейти в настройки Docker Desktop и включить опцию
Use the WSL 2 based engine
.Включение поддержки Docker для WSL 2
Более того, перейдя в раздел настроек Kubernetes, можно включить возможность запуска локального кластера Kubernetes, просто установив соответствующий флажок.
Включение Kubernetes
Теперь можно перезапустить Ubuntu в WSL 2 и выполнить следующие команды:
docker version
kubectl version
Результаты выполнения подобных команд покажут, что в вашем распоряжении теперь есть Docker и Kubernetes.
Docker и Kubernetes работают в среде WSL 2
Бонус: новый терминал Windows
В качестве дополнительной полезной программы вы можете установить из Microsoft Store новый терминал Windows. В описании к нему сказано, что перед нами новое современное приложение — быстрое, эффективное и мощное. Оно предназначено для пользователей, работающих с инструментами командной строки и с соответствующими средами, наподобие PowerShell. Среди его главных возможностей можно отметить следующие: поддержка вкладок и панелей, поддержка Unicode и UTF-8, ускорение вывода текста средствами GPU, поддержка пользовательских тем, стилей и настроек.
Вот видео про новый терминал Windows.
Более того, новый терминал очень хорошо выглядит, а его внешний вид поддаётся настройке. Настройки можно выполнять, пользуясь особым JSON-файлом. Здесь можно найти темы для терминала. Вот материал, в котором можно почитать подробности о терминале.
Планы развития WSL
В WSL 2 ещё недостаёт некоторых возможностей, но подсистема Windows для Linux развивается в правильном направлении. В ближайшее время установить WSL можно будет с помощью одной команды. Для этого достаточно будет открыть терминал Windows и выполнить в нём следующее:
wsl.exe --install
Кроме того, WSL 2 будет той версией подсистемы, которая, при первой установке WSL, устанавливается по умолчанию.
Надо отметить, что разработчики очень ждут от WSL следующих возможностей: поддержка видеокарт и поддержка приложений с графическим интерфейсом.
С момента выхода WSL 1 команду разработчиков этой подсистемы чаще всего просили о внедрении в WSL поддержки CUDA или GPU Compute. В последний код команды разработчиков WSL, систем виртуализации, DirectX, Windows Driver работают над этой возможностью. Поэтому — следите за новостями.
Обучение модели, использующей технологии глубокого обучения, в WSL 2 (с использованием CUDA)
Более того, на подходе и поддержка графических приложений для Linux. Например, в Linux-системах, установленных на WSL, можно будет пользоваться текстовыми редакторами или IDE. На Windows-машине можно будет даже разрабатывать GUI-приложения для Linux!
Поддержка графического интерфейса Linux в WSL 2
Итоги
Сегодня мы поговорили о том, как, пользуясь WSL 2 можно превратить Windows-компьютер в рабочую станцию программиста, пользующегося Linux. В распоряжении такого программиста оказывается высокая производительность и множество полезных возможностей, набор которых, со временем, пополнится. Поэтому я и могу говорить о том, что двойная загрузка умерла.
А вы пользуетесь WSL 2?
Gorthauer87
И все таки, вы беспокоились о привязке к apple, потом перешли на linux, а теперь полностью привязались к Windows, в чем тогда профит? Можно было вообще не дергатьсяи продолжать юзать яблоко.
Все таки как мне кажется, помимо очевидного удобства пользования, Linux на десктопе это еще и про путь отказа от централизованных решений, когда тебя могут лишить под предлогом любой фигни привычного функционала и удобства.
IgorGIV
Думаю, автор ещё особо подчеркнул профит от сборки именно той системы, которая ему больше нравится/подходит. Проще говоря, речь о большом выборе комплектующих для ПК.
Gorthauer87
Таким образом wsl будет демотивировать производителей выпускать нормальные linux драйвера, что ну не очень то радует.
Хотя, я даже не знаю, как на нормально подобраном железе linux через wsl может быть удобнее родной системы, это как минимум заметно медленнее и менее безопасно
dmitrymyl
Бенчмарки говорят, что скорость почти как у нативной установки: www.phoronix.com/scan.php?page=article&item=windows10-may2020-wsl2&num=1
Gorthauer87
Ну не знаю, сама скорость vscode в линуксе явно лучше, чем в винде.
khim
Заметно кому? Человеку, испольщующему нативный редактор? Незаметно.
А если вы про тех, что хочет Linux-программы запускать… забудьте: за последние 4 года курс не изменился.
Цель-то всё та же: чтобы разработчики оставиались на Windows и пользовали нативные программы под Windows.
Как показывает данная статья — стратегия работает…
Gorthauer87
Заметно это как минимум все IO, тот же интегрированный терминал в windows работает заметно медленнее, причем как в общем так и в плане внезапных фризов.
Vadim_Aleks
После установки WSL 2.0 никаких фризов вообще нет.
Сам долгое время сидел на Ubuntu, но отличная поддержка C# в Visual Studio заставила перейти на Windows. После установки винды почувствовал много облегчения:
Линуксом пользовался только из-за терминала. Когда к нам пришел WSL 2.0 на линукс вижу смысл переходить только если хочешь сам настроить свою систему
looogle
А в моем случае с производительностью всё не так прекрасно. Я использую VS Code для C++ разработки, и с WSL1 работало всё значительно шустрее. Буквально в десятки раз. И я такой не один. Issue можно посмотреть вот тут: https://github.com/microsoft/WSL/issues/4197#issuecomment-604592340
Pro-dev-pm
Тут скорее автор имел в виду финансовую составляющую рабочей машины для его нужд, а не про независимость от одного производителя (каждый решает что лучше зависимость от одного производителя чего-либо или от множества)
poxvuibr
Да нет, он прямо написал, что его тревожила зависимость от прихотей Apple
Revertis
Apple ведь намного сильнее ограничивает то, какими программами пользователю можно пользоваться, и откуда их устанавливать. В мире PC таких проблем нет.
Например, вот коллеги теперь не могут запускать на своих Маках старые программы и игры, скомпиленные под 32-битную архитектуру.
fog
А я на рабочем ноутбуке с Ubuntu не могу запустить Evernote, SourceTree, PhotoShop и другие программы которые бы сильно улучшили качество моей жизни, и о чём это говорит? :)
leechong
Что они не входят в ваш рабочий стэк)
fog
Простите, мы знакомы, вы знаете как я бы мог быть более продуктивен если бы я мог пользоваться этими программами?
leechong
Л — логика: работалатель выдал машину, под конкретную задачу, как следствие этих программ нет в вашем рабочем стэке.
Какой вопрос такой ответ.
fog
Стек каждого профессионала уникален, другими словами кто чем хочет тот тем и пользуется если это делает работу его эффективней. Я сделал выбор в пользу Ubuntu по своему ряду причин но мне пришлось отказаться от ряда программ которыми я привык пользоваться до этого.
Я лишь огласил факты — одни системы имеют одни ограничения а другие имеют другие ограничения и ныть в комментах что у кого-то отняли какие-то программы — детский сад.
leechong
Полностью согласен. Просто вы написали первый пост немного не так, как описали сейчас)
domix32
Evernote в браузере, вместо тормознутого Source Tree какую-нибудь git-cola. Вместо PS можно Krita, но под неё надо немного переучиваться.
mistergrim
Krita никоим образом не замена фотошопу.
domix32
Почему нет? Она вполне себе feature complete для художников/аниматоров. И не настолько убого выглядит как тот же gimp. Для обработки фото может не подойти, да.
mistergrim
oWeRQ
Почему не замена, как минимум просмотр и нарезка psd(поддержка лучше чем в Gimp), интерфейс похож, для меня вполне замена, разумеется в Krita есть не весь фукционал PS, но я не удивлюсь если это и в обратную сторону работает.
mistergrim
Вы и раньше не могли, а у яблочников просто отняли такую возможность, ключевое слово — «теперь».
fog
Я раньше мог на Windows и Mac, а теперь не могу на Ubuntu :)
mistergrim
Это вы приняли такое решение, а не за вас его приняли.
fog
Разве я утверждал обратное?
tzlom
О том, что вам предстоит поставить Wine
OnYourLips
Wine не всемогущ, например он не работает с обеими программами, которых мне сильно не хватает под Linux и которые заметно повысят мою продуктивность.
Для меня линукс на десктопе — необходимое зло, связанное с разработкой ПО под серверный линукс, который я люблю. И если замена десктопного линукса будет удобной, то я ей воспользуюсь.
WSL 2 на 2004 апдейте меня сильно обрадовал. На один линукс-ноутбук в этом мире стало уже меньше, это мой ноутбук для домашней хобби-разработки.
UrbanRider
Простите, что именно заставляет вас писать под серверный линукс с десктопного? Мне вот не мешает писать под серверный линукс из под вин-десктопа…
OnYourLips
Проблемы с использованием внешней файловой системы внутри виртуалки. Как минимум права на файлы портились, из-за чего многое ПО не работало, рассчитывая на определенные права файлов, например приватных ключей.
Способов синхронизации ФС перепробовал много в своё время, все имеют значительное количество недостатков.
sumanai
А зачем работать с внешней? Я вот прекрасно работаю полностью внутри WSL, там как файлы проекта, так и базы данных. VSCode отлично цепляется к WSL, локальные инструменты, типа MySQL Workbench, к базам данных.
OnYourLips
Я другой IDE использую, он функционально значительно богаче для моего стека (и лично для меня удобнее), но нормально работает только с локальным проектом. Но в последнем я не совсем уверен, проверю его интеграцию в WSL на днях.
sumanai
Как вариант раз есть версия для Linux, то можно целиком поставить в WSL и пробросить иксы.
fog
Я когда-то пробовал — скажем, это далеко не самый бесшовный путь :)
Я не на столько энтузиаст чтобы терпеть все идущие с ним недостатки.
misharin
На Ubuntu есть неофициальный клиент для Evernote, называется Tusk, я им пользуюсь, меня полностью устраивает. Photoshop CS6 также работает с помощью PlayOnLinux, установка и настройка занимает 2-3 минуты и не требует особых знаний.
Revertis
Это говорит о том, что не стоит использовать маргинальную ОС.
Я ведь не покупаю себе смартфон на Windows Phone и не плачусь о том, что там не запускаются многие программы, значит и вы так не делайте.
barbos98
Ubuntu — система бесплатная. Photoshop — за денюшку. Плюс фотошоп защищает свои продукты может и на аппаратном уровне. И потом — зачем убунте судебные иски с правообладателями.
deseven
Как именно эппл ограничивает пользователей откуда можно устанавливать программы?
Revertis
Тем, что не пускает в свой стор какие-то проги, уже не помню какие, в новостях читал.
deseven
Что мешает скачать программу не из аппстора?
anonymous
Напомню, что на Catalina и выше, даже если вы не распространяете приложение через AppStore, вам придётся его подписывать у Apple (да, это пока можно отключить, но прецедент показательный (сижу на Mojave))
dead_undead
Товарищ скорее всего имел в виду, что в MacOS Catalina выпилена поддержка 32-битных программ. А имея предыдущую версию ОС, нельзя например теперь поставить XCode из стора, не имея аккаунта разработчика.
deseven
А через несколько лет в макоси вообще ничего на x86 не будет работать, да. Но откуда брать программы никто не ограничивал, можно с аппстора, можно в любом менеджере пакетов, можно просто качать софт с инета.
XCode старых версий берется с developer.apple.com, даже без платного аккаунта.
sumanai
То ли ещё будет.
deseven
Абсурд. Этого не произойдет никогда, потому что это убьет платформу. Громадное количество профессионального софта не выложено в аппстор вообще, либо представлено там с урезанным функционалом (потому что не может работать в песочнице с требуемыми ограничениями). Один только стим как альтернативный магазин с тысячами игр ставит на этой затее большой и жирный крест.
sumanai
Надо не забыть зайти сюда лет через 5-10 ))
deseven
Уверен, на вашем компьютере или телефоне есть календарь, в котором можно создать напоминание.
sumanai
Уверен, мой телефон 10 лет не проживёт. В прошлом создавал, а потом поставил последний андроид и с концами. Ах да, свой календарь я гуглу не сдаю. Хочу как-нибудь настроить всякие синхронизации на свой сервер, но дальше Syncthing ля файлов дело не ушло.
deseven
Могу вам напомнить через 5, а потом еще через 5, мне не трудно.
muxa_ru
И мне, если не сложно.
Заранее спасибо.
deseven
Не ожидал, что эта проблема может возникнуть у нескольких человек. Для удобства вот сделал вам страничку, добавьте ее в закладки и проверяйте когда вам нужно.
muxa_ru
Круто.
Спасибо.
А можно там добавить дату проверки реального состояния дел?
deseven
Макось — моя основная настольная ОС и я немного разрабатываю софт под нее, поэтому я всегда на последней версии и в курсе последних новостей. Как только что-то изменится страницу я сразу же обновлю.
saboteur_kiev
Я тут подумал, что неплохо было бы на хабре сделать возможность пользователям добавлять отдельные комментарии себе в закладки, как раз для таких случаев.
Ведь Хабр точно будет жить лет через 5-10.
DreamingKitten
Но ведь вы уже можете добавить комментарий в закладки.
saboteur_kiev
Прошу прощения, но вот это поворот!
Не знал. Добавил.
zartarn
Проблема что они потом теряются.:( когда их много. Было на каком то ресурсе что можно было завести на какое нибудь сообщение «напомнить через ...»
Nikita22007
Проблема этих компьютеров ли телефонов с календарём, в котором можно ставить упоминания, что эти упоминания все время ку-да то деваются, особенно при смене устройства/системы, а аккаунты синхронизации магическим образом становятся недоступны/забыты/удалены/стерты или иным образом повреждены заметки
sumanai
Просто отсутствуют, по крайней мере у меня.
muxa_ru
Уже есть.
У меня какую-то старую софтину прям не давали ставить.
Вроде бы Reget, но могу ошибаться
khim
Там точно не 16-битный инсталлятор? Была такая беда со старыми программами: сама программа 32-битная, а инсталлятор «чтобы не париться» 16-битный.
А потом пришёл x64 и подсистему-то выпилил…
sumanai
Кстати MS для некоторых распространённых инсталяторов запилила 32 битную версию, на которую подменяет при запуске.
muxa_ru
Нет, мне именно ЗАПРЕТИЛИ установку, чем глубоко и цинично оскорбили мои религиозные чувства — https://habr.com/ru/post/312344/ :)
khim
По ссылке огромная статья и куча обсуждаений. В которых не видно сходу иничего про запрет. Вы бы ещё ссылку https://habr.com/ru/ и сказали, что там, где-то, есть какая-то статья и какой-то комментарий, где всё написано. Или вообще на https://google.ru/…
muxa_ru
По ссылке статья показывающая что я и умею и люблю ставить старые программы.