Да-да, Microsoft собирается сделать так, чтобы после следующего крупного обновлении Windows 10 под названием Redstone пользователи смогли запускать нативно в операционной системе Windows 10 оболочку Bash и, представьте себе, Ubuntu.
Как, черт возьми, им это удалось? Во-первых, Canonical, родительская компания Ubuntu, и Microsoft будут заставлять все это работать не внутри контейнера или виртуальной машины под операционной системой Linux, а на основе набора родных библиотек и программ — Windows Subsystem for Linux (WSL, подсистема Windows для приложений на базе Linux).
Подсистему WSL без лишних громких слов поместили в код Windows 10 (билд № 14251) еще в конце января. Несколько дней спустя один программист смекнул, что две новые подсистемы внутри файлов lxcore.sys и lxss.sys могут стать вспомогательным средством разработки приложений под Linux для Windows-программистов. Этот программист оказался наполовину прав.
Подсистему WSL можно использовать и с такой целью, однако ее главное предназначение состоит в том, чтобы эмулировать образ Ubuntu в пользовательском режиме. Как пояснил представитель компании Microsoft: «Мы создали новую инфраструктуру внутри Windows — WSL, на базе которой мы запускаем в пользовательском режиме настоящий образ Ubuntu, который нам любезно предоставили наши замечательные партнеры из компании Canonical, являющейся создателем операционной системы Ubuntu Linux. В результате теперь можно запускать нативную оболочку Bash для Ubuntu под операционной системой Windows».
Но это вовсе не разновидность среды Cygwin, заметил Дастин Кирклэнд, участник подразделения компании Canonical, занимающегося стратегическим развитием Ubuntu. «Чтобы открытый интерфейс Cygwin мог нативно работать под Windows, его код специально перекомпилируется из исходников, — отметил Кирклэнд. — Здесь же мы говорим о побитных ELF-бинарниках Ubuntu, с идентичной контрольной суммой, которые запускаются прямо из-под Windows».
Кирклэнд продолжил: «Команда блестящих разработчиков компании Microsoft приложила немало стараний, для того, чтобы фактически приспособить кое-какие исследовательские технологии Microsoft для перевода системных вызовов ОС Linux в системные вызовы ОС Windows в режиме реального времени. Линуксоиды могут считать эту концепцию противоположностью среды WINE, когда двоичные файлы Ubuntu нативно работают под Windows. Сама компания Microsoft называет ее „подсистемой Windows для приложений, разработанных на Linux“. (И нет, ее код пока что не открыт.)»
Некоторые, наверное, сразу скажут: «Могу поспорить, все это работает с такой же скоростью, как спринтер, который вместо стометровки бежит по мокрой проселочной дороге». А вот и нет. Кирклэнд утверждает, что «все работает лучше некуда. Утилита sysbench демонстрирует практически эквивалентные показатели работы процессора, оперативки и операций ввода-вывода».
Подсистема WSL еще не готова к повсеместному использованию. Представитель компании Canonical сказал, что сейчас «она находится на ранней стадии — это всего лишь бета-версия».
Кирклэнл добавил: «Система прошла подавляющее большинство LTP-тестов на производительность и работает хорошо. Но шероховатости все равно есть, особенно в работе с терминалами tty и vt100. Мои любимые мультиплексоры byobu, screen и tmux еще толком не работают, однако ребята движутся в нужном направлении».
Эта идея не нова. На самом деле, эта концепция самая что ни на есть древняя. Она уходит корнями в подсистему POSIX операционной системы Windows NT. NT Posix была задумана для того, чтобы запускать нативные бинарные коды для Unix (системы Linux тогда еще даже не было) внутри Windows NT.
Многие меня спрашивают: «Зачем все это?!» Кирклэнд дал ответ в своем интервью, копируя слова Стива Балмера: «Разработчики, разработчики, разработчики. Microsoft признает, что даже если на рабочих компьютерах нынешних разработчиков стоят операционные системы Windows или Mac (или даже Ubuntu), все равно они неизбежно проводят много времени, работая в оболочке Linux. До появления в Windows 10 этой новой возможности пользователям Windows приходилось запускать виртуальную машину (съедающую много ресурсов), терминал ssh к своему экземпляру облака (требующий подключения к Интернету) или возиться со средой Cygwin (глючной и медленной). С появлением новой возможности пользователю Windows достаточно нажать кнопку „Пуск“ в Windows и затем впечатать „bash“ или „ubuntu“ — и они переносятся в шикарную оболочку Ubuntu, с доступом ко всему функционалу Ubuntu и большей части ее прикладных программ, работающих нативно, без необходимости виртуализации или перекомпиляции».
В своем блоге Кирклэнд продолжает: «Это почти нереальный шаг Microsoft в сторону признания важности Open Source для разработчиков. [Это] фантастическая возможность провести бесплатные технологии с открытым кодом в абсолютно любой компьютер под управлением Windows 10. И ведь какой прекрасный вектор движения в сторону изучения и использования еще большего количества систем Ubuntu и Linux в публичных облаках!»
Кстати, по поводу облаков Кирклэнд в своем интервью добавил: «Всем известно, что Ubuntu — это самый популярный дистрибутив Linux на платформе Azure и в других облаках. Насколько же теперь проще, имея нативную оболочку Ubuntu, встроенную непосредственно в систему Windows, писать код в среде Visual Studio или в редакторах vim или emacs, а затем заливать его в экземпляр облака с помощью программ git, scp и rsync или делать обратную операцию. Очевидно, теперь множество таких облачных экземпляров станут экземплярами Azure Ubuntu».
Основатель компании Canonical, Марк Шаттлворт, сам в восторге от этого нового технологического партнерства. Шаттлворт говорит: «Доступность полной нативной среды Ubuntu под Windows без использования виртуализации или эмуляции стала ключевым событием, выходящим за привычные рамки. Мы чрезвычайно рады поспособствовать интеграции Ubuntu и Windows и считаем своим долгом служить интересам разработчиков под Windows, открывающих для себя Linux таким новым и удивительным способом».
Хотите попробовать? Скоро станет доступен первый образ Ubuntu для Windows 10, который называется Ubuntu 14.04 LTS. Версия Ubuntu 16.04 LTS, которая заменит Ubuntu 14.04, появится в онлайн-магазине Windows Store вскоре после своего выпуска, намеченного на 21 апреля. Так как образ работает на базе кода версии Redstone, вам придется установить билд Windows под номером 14251 и выше. Компания Microsoft совсем недавно объявила о том, что версию Windows 10 Redstone 1, также известную как «Windows 10 Anniversary Update» или, как я ее называю, Windows 10 SP1, она выпустит этим летом.