Запускаем полноценный десктоп Ubuntu в Windows 10

Bosworth

Супер модератор
Команда форума
Сообщения
230
Реакции
7
Баллы
18
После написания автором этих строк предыдущей статьи о Windows Subsystem for Linux прошло больше полугода. За это время Microsoft успела выпустить первое крупное обновление Windows 10 — Anniversary Update 1607, в котором все нововведения, включая WSL, теперь доступны любому установившему это обновление пользователю. WSL стала гораздо более проработанной и, пожалуй, «цельной».
По сравнению со сборкой Windows 10 14316, в которой впервые появилась подсистема Linux, в Windows 10 Anniversary Update подсистема выглядит вполне работоспособной и применимой на практике (настолько, насколько это возможно на данном этапе). Стабильность работы не вызывает нареканий. Забегая вперед, отмечу самое главное — в WSL появилась возможность запуска графического окружения и других GUI-программ (из числа DE это пока что Unity и Xfce), чего не было в предыдущих сборках Windows 10. Пока это было сделано неофициально, отдельными энтузиастами-линуксоидами, а не разработчиками WSL, но есть надежда, что официальная поддержка запуска полноценного Linux GUI в WSL лишь дело времени.

Unity_in_Windows_10.jpg

warning-icon.jpg

Помни: сначала WSL необходимо установить. Из коробки подсистема не заработает.
WSL. Полгода спустя
Как я уже сказал, за последние полгода разработчики WSL успели основательно доработать эту подсистему, что упростило ее установку и настройку. А сама Microsoft успела стать «платиновым» членом Linux Foundation. Лет пятнадцать назад о таком нельзя было даже мечтать. В своем новом качестве Microsoft обязалась поддерживать все инициативы Linux Foundation в области открытого ПО и Linux и ежегодно перечислять в фонд 500 тысяч долларов США. Это, безусловно, большое достижение. В первую очередь для всего сообщества FOSS (free/libre and open-source software — бесплатное/свободное и открытое программное обеспечение). Через пятнадцать лет после того, как Стив Балмер назвал Linux раковой опухолью, новое руководство Microsoft оказалось куда более дальновидным и разумным.
Но вернемся к Windows Subsystem for Linux. Установка собственно Windows 10 проходит быстро и просто (почти как установка Ubuntu), и нет нужды описывать ее нашему читателю. Ты можешь выбрать либо обновление из предыдущей версии Windows 10, что займет в разы больше времени и сил, либо удалить предыдущую версию и установить систему с нуля (что я и сделал, и не из лени, а чистоты эксперимента для, чтобы система была, что называется, девственно-чистой). Автор этих строк вот уже больше года является бета-тестером Windows 10, и новые версии доступны ему бесплатно (от слова совсем). Если ты тоже бета-тестер, то у тебя должна быть лицензия на новые бета-релизы Windows 10.
В последнюю версию Windows, Anniversary Update 1607 — «юбилейное обновление» (непонятно, правда, что за юбилей у MS), WSL включается по умолчанию. Надо лишь активировать «Режим разработчика» в разделе «Обновление и безопасность», дождаться, пока система загрузит так называемый пакет разработчика, и перезагрузить компьютер. После чего запустить инструмент «Включение и отключение компонентов Windows», где выбрать пункт «Подсистема Linux для Windows…». И снова перезагрузить компьютер.
Enable_WSL.png

Установка bash в WSL проходит без проблем (хотя и не так быстро, как хотелось бы). Мне не удалось с первого раза установить Unity: инсталлятор постоянно ругался на битые пакеты. Как оказалось, сначала нужно было обновить систему через штатный менеджер пакетов Ubuntu — APT. После получения обновлений установка пошла как по маслу и… продлилась на моем тестовом Dell Inspiron (не самый старый ноутбук, хотя и не топовый) около девяти с половиной часов. Почему — тайна сия мне неведома. Однако я заметил, что каждый Ubuntu-пакет устанавливался раза в три-четыре дольше, чем в «чистой» Ubuntu.
Installing_Bash.png

info-icon.jpg

Перед установкой и включением WSL обязательно установи ВСЕ обновления Windows 10. Иначе могут возникнуть проблемы!

X Window, Unity и все-все-все
Установка bash — это лишь полдела. Дальше начинается самое интересное — установка и настройка X-сервера в Windows и запуск графических приложений, в том числе и Unity.
Изначально Canonical и Microsoft добавили возможность запуска Ubuntu поверх Windows 10 для того, чтобы предоставить системным администраторам и разработчикам возможность использования bash и других Linux-инструментов и утилит, таких как make, gawk и grep, непосредственно в Windows. Пользователи Linux, как истинные хакеры (в хорошем смысле этого слова), не заставили себя долго ждать и немедленно приступили к работе над запуском графических окружений рабочего стола в WSL. И угадай, что? Они сделали это. Гватемальский программист, зарегистрированный на GitHub под ником Guerra24, смог (цитата) «запустить Unity (рабочее окружение по умолчанию в Ubuntu) внутри WSL. Это говорит о том, что прослойка от Microsoft, в принципе, вполне способна запускать любые окружения рабочего стола».
Задача эта нетривиальная, и то, что в итоге получится, трудно назвать полноценным рабочим столом Linux, но это только начало. Если ты хочешь использовать рабочий стол Ubuntu в Windows 10 в практических целях, то лучше воспользуйся любой из доступных в данный момент виртуальных машин, например VirtualBox от Oracle. А вот если ты просто хочешь повеселиться и прокачать свои навыки программирования для рабочих столов, то можешь попробовать запустить «нативный» Linux прямо в Windows 10. Для запуска Unity в WSL тебе для начала нужно установить (любым доступным способом, желательно легальным!) версию Windows 10 Anniversary Update за номером 1607. Причем не «домашнюю» версию, а самую что ни на есть «профессиональную», а то и вовсе «корпоративную». После установки обязательно обнови систему и двигайся дальше.
После двух (иногда трех) перезагрузок в процессе обновления, чтобы установить bash, необходимо запустить командную строку Windows (Win + R, ввести cmd — и будет тебе счастье в виде «консоли» Windows) и ввести… да, именно так: bash. Будет предложено согласиться с условиями обслуживания (обязательно прими их, выбора у тебя нет!) и загрузить Ubuntu. На этом этапе тебе нужно просто нажать клавишу Y. Объем загружаемых файлов будет не многим более одного гигабайта. Так что, если у тебя медленный интернет (да, бывает и такое), приготовься ждать. Затем начнется установка, которая, в свою очередь, тоже займет некоторое время, зависящее от производительности компьютера. И в конце всего этого ты попадешь в пространство пользователя (пользовательское окружение) Ubuntu 14.04, работающее поверх WSL.
Технически ты запустишь не Linux. Оно может выглядеть как Linux, но это не Linux. Дело в том, что пользовательское окружение (тот самый bash и прочие) работает не поверх ядра Linux, а внутри прослойки WSL. WSL использует специальный API и набор инструкций, для того чтобы все выглядело как в Linux, но все же это не то же самое. В основе всего этого все еще стоит ядро Windows NT. Это важно понимать, чтобы разобраться в том, как запускается и работает Unity в WSL.
После установки Ubuntu обязательно обнови ее, введя стандартные для этого команды:
# apt-get update
# apt-get upgrade

Vcxsrv_1.jpg

Далее нужно снова вернуться в Windows 10 и установить совместимый с ней X-сервер. Для нашего эксперимента идеально подойдет VcXsrv. Его собрата Xming лучше не использовать, так как с ним, по неизвестной мне причине, возникает проблема: при попытке запустить любое графическое приложение для Linux все просто вылетает, в том числе и консоль Windows. Но это не все. Нужно сказать Ubuntu о том, что следует использовать именно X-сервер VcXsrv. Для этого введи в bash команду
# DISPLAY =: 0.0
Теперь любое графическое приложение Linux будет работать в Windows 10. Но только до закрытия bash. Чтобы WSL работала с графикой Linux все время, автоматически выбирая нужный для работы X-сервер, просто добавь указанную строку в конец конфигурационного файла bash (~/.bashrc):
# echo "export DISPLAY=:0.0" >> ~/.bashrc
Vcxsrv_2.jpg

Firefox_for_Linux.jpg

После этого ты сможешь запускать любые графические приложения Linux, например Firefox или любое DE. Однако они будут работать не так, как в Linux, падая каждую минуту, а некоторые, например Unity, и вовсе не запустятся. Проблема тут в том, что WSL не содержит в себе кода поддержки сокетов (универсальная концепция обмена данными между процессами в UNIX-подобных системах, подробности тут).
Для имплементации концепции сокетов графические окружения Linux по умолчанию используют систему обмена сообщениями D-bus. Большинство графических приложений Linux не смогут даже запуститься без D-bus, не то что работать. Но WSL, к счастью, поддерживает сетевой протокол TCP, что и подвигло пользователя Reddit.com под ником ShaRose найти способ заставить D-bus использовать вместо сокетов протокол TCP. Решение не идеальное, но оно работает. Чтобы «прикрутить» D-bus к TCP, введи в bash:
# sed -i 's/<listen>.*</listen>/<listen>tcp:host=localhost,port=0</listen>/' /etc/dbus-1/session.conf
Display_settings.png

Этой командой ты изменишь конфигурационный файл D-bus так, чтобы отныне он использовал TCP вместо сокетов. В этом тебе поможет старый добрый потоковый редактор sed. Что в итоге? Приложения, требующие для своей работы D-bus, теперь запускаются и в WSL.
Следующий шаг — установка графических приложений Linux. Для начала сделай в консоли WSL вот это:
# apt-get install ubuntu-desktop
# apt-get install unity
# apt-get install compiz-core
# apt-get install compizconfig-settings-manager

Unity_Install.png

Первая команда установит основные графические компоненты Ubuntu, в том числе программы для конечного пользователя, такие как LibreOffice. Следующая команда устанавливает рабочий стол Unity. Две остальные команды поставят композитный оконный менеджер Compiz, использующий OpenGL, и графический фронтенд к нему. Именно его и нужно будет правильно настроить на следующем этапе.
Перед тем как начать пользоваться окружением рабочего стола Unity в Windows 10, тебе необходимо правильно настроить CompizConfig Settings Manager (CCSM). После установки всех этих приложений запусти из интерфейса bash CCSM и активируй в нем следующие плагины (все должно быть ИМЕННО так, как на скриншоте!):
CCSM_settings.jpg

1.В секции General (Общие):
  • Commands (Команды)
  • Composite
  • Copy to texture
  • OpenGL
2.В секции Desktop (Рабочий стол):
  • Ubuntu Unity Plugin
  • В секции Utility (Утилиты):
  • Compiz Library Toolbox
3.В секции Window Management (Управление окнами):
  • Place Windows (Переместить окно)
  • Resize Window (Изменение размеров окна)
  • Scale (Масштабировать)
  • Snapping Windows
4.В секции Image Loading (Загрузка изображения):
  • PNG
Далее, чтобы все наконец заработало, закрой CCSM и запусти Compiz из bash командой
$ compiz
Примерно через минуту ты увидишь запущенную оболочку Unity.
Unity_in_Windows_10.jpg

Отмечу несколько ключевых моментов:
Если ты и правда хочешь запускать иксовые приложения в WSL, устанавливай в качестве X-сервера VcXsrv, а не Xming. Опытным путем доказано, что Xming не желает нормально работать с WSL.
После установки CCSM необходимо настроить его именно так, как показано на картинке (то есть включить то, что отмечено галочками, и выключить все остальное). Только тогда Unity со скрипом, не с первой попытки, но запустится.
Лучше не устанавливать проприетарные драйверы ATI для Ubuntu внутри WSL. Это приводит к полному зависанию всей системы (в том числе и Windows 10) и влечет за собой тотальную переустановку WSL со всеми вытекающими.
Огорчу тебя: не стоит возлагать на получившийся костыль большие надежды. Нормально ЭТО работать не будет. Но на моей тестовой машине Unity внутри WSL работала вполне сносно. Субъективно — чуть медленнее, чем в нативном Linux. Быть может, в будущем кто-нибудь доведет все это дело до ума. И от Unity в WSL таки будет польза.
Что же получится в итоге, после стольких мучений? А в итоге (теоретически, так как на практике выходит пока просто интересный экспериментальный способ запуска Unity и прочих DE внутри WSL) мы получим среду для тестирования Linux-приложений прямо внутри Windows. И Unity, работающую поверх Windows. Конечно, скорость работы и отзывчивость ее не такие, как на реальном железе, но все же быстрее, чем в виртуальной машине. Многие приложения, например Google Chrome или Pidgin, просто не запускаются. А вот Firefox, файловый менеджер, магазин приложений и прочие системные утилиты Ubuntu работают на ура (чуть медленней, чем в «настоящей» Ubuntu, но работают!).
warning-icon.jpg

Установить WSL можно только в версиях Windows 10 «Профессиональная» и «Корпоративная». «Домашняя» не годится.
Вывод
Что хотелось бы сказать в связи со всем этим? Во-первых, Microsoft уже не та. Не та монструозная корпорация зла. С каждым годом прибыли компании от продажи ПО падают, рынок мобильных устройств, по сути, отдан на откуп Google и Apple, а пользователи (как корпоративные, так и домашние) всё чаще стараются сэкономить на покупке софта. И компании приходится адаптироваться к новым условиям. Даже «заклятый друг» MS — Apple открывает исходники своих продуктов один за другим. Во-вторых, это все очень хорошо. В первую очередь для нас, простых пользователей.
В следующей статье про Windows Subsystem for Linux мы проведем несколько тестов на производительность и попробуем наконец WSL на практике, установив на нее веб-сервер Apache и запустив локальный хостинг сайта. А пока можно промежуточно резюмировать, что эксперимент удался.


Статья взята с журнала Xakep.ru
 
Верх