Vcxsrv windows x server настройка

Обновлено: 19.05.2024

Графический интерфейс пользователя (Graphical User Interface, GUI) в Linux реализован по клиент-серверной технологии, где клиентом является приложение, а сервером – графический сервер, получивший название X Server и являющийся частью графической подсистемы X Window System . Данная подсистема обслуживает запросы графических приложений и обеспечивает их взаимодействие с дисплеем, мышью, клавиатурой и другими устройствами пользовательского интерфейса. Иногда графическую подсистему называют X11 по номеру версии протокола, в соответствии с которым выполняется взаимодействие клиента с сервером. Для такого взаимодействия в Linux используются объекты файловой системы, называемые сокетами (socket) , функционально представляющие собой двунаправленные каналы обмена данными. Естественно, такой обмен должен выполняться по определенным правилам, то есть по протоколу, получившему название X11 или X11R6 X-протоколу версии 11 и редакции R6 (Revision 6). При чем, взаимодействие клиента с сервером в данном случае возможно как через оперативную память, так и с использованием сетевых соединений.

Из всего сказанного выше, следует, что графическое приложение (X-клиент) и графический сервер (X-сервер) могут взаимодействовать друг с другом не только в пределах одной системы, но и находясь на разных компьютерах. А с учетом кроссплатформенности X Window System , графический сервер может функционировать не только в операционных системах (ОС) семейства Linux, но и в Windows. Таким образом, для удаленной работы в графической оболочке пользователя достаточно просто разместить графический сервер на том компьютере, с которого будет выполняться удаленное подключение к Linux, а также настроить удаленный компьютер таким образом, чтобы графические приложения работали не с локальным X-сервером, а с удаленным.

Удаленное подключение к Linux с использованием перенаправления графического протокола X11 Forwarding

Для удаленного подключения к ОС семейства Linux из среды Microsoft Windows с использованием X-сервера используются два способа:

- Перенаправление X-протокола – X11 Forwarding

- Удаленное подключение по протоколу XDMCP ( X Display Manager control protocol), позволяющего получить обычный сеанс пользователя Linux с перенаправлением графического ввода-вывода на удаленный X-сервер.

X11 Forwarding реализуется наиболее просто и отличается более высоким быстродействием, однако для запуска приложений требует наличие SSH-сессии с удаленным компьютером. Второй способ позволяет удаленно подключиться к стандартному рабочему столу, но отличается более низким быстродействием.

Принцип удаленной работы с перенаправления графического ввода вывода заключается в том, что ssh-сервер на удаленном компьютере настраивается таким образом, что весь графический ввод-вывод приложений, запущенных в данном сеансе пользователя, перенаправляется на X-сервер, который должен работать на стороне ssh-клиента.

Если на удаленном компьютере с Linux не установлен ssh-сервер, установить его командой:

sudo apt install ssh

После завершения установки сервер ssh будет запущен с настройками по умолчанию. Как правило, это означает, что перенаправление X11 Forwarding отключено.

Для проверки работоспособности ssh-сервера можно воспользоваться командой:

netstat -nap | grep sshd

Команда отображает список всех сетевых соединений без разрешения имен узлов и портов с добавлением программ, участвующих в соединении, из которого с помощью grep отбираются только связанные с шаблоном ”sshd”:

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

tcp6 0 . 22 . * LISTEN

Состояние соединения LISTEN (слушается) означает, что демон sshd ожидает входящие TCP-соединения на порт 22/TCP

Большинство последующих действий требуют привилегий суперпользователя root и, чтобы постоянно не вводить sudo и пароль пользователя, можно один раз выполнить команду:

После выполнения команды пользователь будет работать с привилегиями root .

Конфигурация демона sshd хранится в файле sshd_config каталога /etc/ssh . Для удаленной работы с Linux через перенаправление X11 в файле конфигурации сервера sshd должна присутствовать директива:

service sshd restart

После старта sshd все будет готово к использованию перенаправления графического ввода-вывода на X-сервер подключившегося ssh-клиента.

Естественно, для удаленной работы необходимо, чтобы ssh-клиент поддерживал X11 Forwarding и на его стороне имелся в наличии работоспособный X-сервер. В случае с Windows, в качестве ssh-клиента обычно используется PuTTY , а в качестве X-сервера - VcXsrv

Настройка Putty для перенаправление X11 Forwarding.

Настройка PuTTY для режима X11 forwarding

Данные настройки означают, что разрешено X11 Forwarding и для него будет использоваться графический дисплей (X-дисплей) с номером 0 . Использовать 0-й номер дисплея не обязательно, но важно, чтобы этот номер совпадал с номером дисплея, указанном при запуске VcXsrv ( поле Display number ). Значения X-display location в настройках PuTTY и Display number для X-сервера можно вообще не заполнять – программы определят их автоматически.

VcXsrv - X11 forwarding

При запуске VcXsrv , с помощью мастера Xlaunch , задается номер дисплея (при необходимости) и выбирается многооконный режим Multiple windows , остальные параметры можно оставить по умолчанию. Фактически, номер дисплея определяет номер порта графического сервера на стороне Windows

– 0 соответствует порту 6000/TCP

Соответственно, если на одном и том же компьютере запускается несколько X-серверов VcXsrv, то номера графических дисплеев для них должны быть разными.

Порядок работы с графическими приложениями Linux с использованием X11 Forwarding

После того, как VcXsrv стартовал, с помощью ssh-клиента PuTTY подключаемся к ssh-серверу Mint, и в командной строке запускаем нужное графическое приложение, Например, если запустить графический терминал xterm , то на компьютере с Windows появляется окно графического терминала Linux. При запуске из сессии SSH-клиента PuTTY, или из окна уже запущенного терминала xterm , какого-либо графического приложения, например, Центра управления mate-control-center на рабочем столе Windows отобразится его окно, в котором можно работать точно так же, как и на локальном компьютере с Mint Linux

Центр управления Mint на рабочем столе Windows 10 - X11 forwarding

Удаленное подключение к графической подсистеме из Linux .

Настройки демона sshd для удаленного доступа к графической подсистеме Linux выполняются точно так же, как и в случае перенаправления для X-сервера на стороне Windows. Графический вывод удаленной системы, в данной конфигурации, будет перенаправляться демоном sshd и разворачиваться графическим сервером на стороне подключившегося ssh-клиента.

Для удаленного подключения к графической подсистеме с использованием перенаправления X11 Forwarding клиентов Linux-систем, можно воспользоваться стандартным OpenSSH-клиентом:

ssh -X -l user@192.168.0.1

-X - использовать перенаправление графического вывода X11Forwarding.

-l user - имя пользователя для подключения к удаленному компьютеру.

192.168.0.1 - адрес удаленного компьютера

После регистрации в удаленной системе, пользователь user имеет возможность работать с графическими приложениями на удаленном компьютере 192.168.0.1

Для запуска конкретного приложения на удаленной системе, можно указать его имя:

ssh -X -l user@Mint-9 ‘xterm’ - подключиться к компьютеру Mint-9 в режиме X11 Forwarding и запустить графический терминал xterm .

После авторизации, на локальном дисплее отобразится окно терминала xterm удаленного компьютера под управлением Linux.

По соображениям безопасности, вместо параметра ssh -X желательно использовать параметр -Y , предотвращающий возможность взаимодействия удаленного клиента с локальным графическим дисплеем системы, к которой выполняется подключение.

И в заключение, добавлю, что на компьютере с Linux графическая среда не нужна, поскольку с графическими приложениями взаимодействует X-сервер на удаленном компьютере с Windows или Linux. Этот факт позволяет повысить быстродействие графических приложений за счет экономии ресурсов компьютера с ОС Linux, которые потребовались бы для графической среды (особенно с KDE).

Подключение к рабочему столу Mint с использованием XDMCP.

Данный вид подключения позволяет получить рабочий стол Linux на компьютере с Windows и требует изменения настроек менеджера дисплея и графического сервера.

Менеджер дисплея ( Display Manager или DM ) - это специальная системная служба обеспечивающая запуск графического сервера, вывод на графический дисплей приглашения на вход в систему, регистрацию пользователей, запуск оконных менеджеров, монтирование необходимых устройств, ведение баз данных входов и выходов пользователей в системе utmp и wtmp и т.п.

А если упрощенно - то менеджер дисплея - это программа, с которой начинается сеанс работы пользователя в графическом окружении Linux. Визуально, менеджер дисплея представляет собой окно регистрации пользователя при входе в систему. Обычно под этим подразумевается форма для ввода логина и пароля, меню для выбора графической среды, и дополнительные элементы управления питанием (для выключения компьютера, перезагрузки, перевода в спящий режим), выбора языка ввода, и т.п. По умолчанию, в Mint устанавливается менеджер дисплея Light Display Manager ( LightDM ) , однако имеется возможность сменить его другие - GNOME display manager (GDM) , KDE display manager (KDM) , LXDE display manager (LXDM) и т.д. Какой из менеджеров используется в данный момент времени, можно посмотреть в файле /etc/X11/default-display-manager . Пример содержимого :

Все файлы конфигурации менеджера дисплея LightDM размещаются в системном каталоге /etc/lightdm . Основные настройки хранятся в файле lightdm.conf , где нужно найти секцию XDMCPServer :

Если в файле конфигурации отсутствует секция [XDMCPServer] или нет вышеперечисленных строк, можно воспользоваться примером конфигурационного файла из /usr/share/doc/lightdm/lightdm.conf.gz .

Пример конфигурации для дистрибутива Mint Mate 20.2 содержимое файла lightdm.conf

Внесенные изменения вступят в силу только после перезапуска менеджера дисплея или перезагрузки системы. Для перезапуска LightDM можно воспользоваться командой:

service lightdm restart

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

Для подключения к удаленному компьютеру с Linux Mint, можно воспользоваться ярлыком Xlaunch . При подключении с использованием XDMCP необходимо выбрать режим работы в одном большом окне ( One large window ):

Xlaunch - режим XDMCP

Выбираем сессию с использованием XDMCP:

Xlaunch - режим XDMCP

Указываем IP-адрес или имя компьютера с ОС Linux, к которому необходимо подключиться:

Xlaunch - режим XDMCP

Следующий экран служит для определения дополнительных параметров сессии и в частности, использование буфера обмена между приложениями. Как правило, эти настройки можно оставить без изменений. Жмем кнопку "Далее" и, если все сделано правильно - перед нами приглашение менеджера дисплея Linux.

После регистрации пользователя в системе он получит удаленный рабочий стол Linux, работа с которым ничем не отличается от работы в локальной системе.


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

Unity поверх Windows 10. И это не эмулятор

Unity поверх Windows 10. И это не эмулятор

WARNING

Помни: сначала 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. ». И снова перезагрузить компьютер.

В русской версии Windows 10 все немного иначе, но общий смысл такой же

В русской версии Windows 10 все немного иначе, но общий смысл такой же

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

Инсталляция bash сводится к одной команде в консоли Windows 10

Инсталляция bash сводится к одной команде в консоли Windows 10

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

X Window, Unity и все-все-все

Установка bash — это лишь полдела. Дальше начинается самое интересное — установка и настройка X-сервера в Windows и запуск графических приложений, в том числе и Unity.

Задача эта нетривиальная, и то, что в итоге получится, трудно назвать полноценным рабочим столом 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 обязательно обнови ее, введя стандартные для этого команды:

VcXsrv — X-сервер для Windows

VcXsrv — X-сервер для Windows

Далее нужно снова вернуться в Windows 10 и установить совместимый с ней X-сервер. Для нашего эксперимента идеально подойдет VcXsrv. Его собрата Xming лучше не использовать, так как с ним, по неизвестной мне причине, возникает проблема: при попытке запустить любое графическое приложение для Linux все просто вылетает, в том числе и консоль Windows. Но это не все. Нужно сказать Ubuntu о том, что следует использовать именно X-сервер VcXsrv. Для этого введи в bash команду

Теперь любое графическое приложение Linux будет работать в Windows 10. Но только до закрытия bash. Чтобы WSL работала с графикой Linux все время, автоматически выбирая нужный для работы X-сервер, просто добавь указанную строку в конец конфигурационного файла bash (

VcXsrv — X-clock в Windows. Магия!

Firefox для Ubutnu работает отлично, почти не тормозит!

После этого ты сможешь запускать любые графические приложения Linux, например Firefox или любое DE. Однако они будут работать не так, как в Linux, падая каждую минуту, а некоторые, например Unity, и вовсе не запустятся. Проблема тут в том, что WSL не содержит в себе кода поддержки сокетов (универсальная концепция обмена данными между процессами в UNIX-подобных системах, подробности тут).

Самое главное — правильно указать дисплей!

Самое главное — правильно указать дисплей!

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

Долгая установка Unity.

Долгая установка Unity.

Первая команда установит основные графические компоненты Ubuntu, в том числе программы для конечного пользователя, такие как LibreOffice. Следующая команда устанавливает рабочий стол Unity. Две остальные команды поставят композитный оконный менеджер Compiz, использующий OpenGL, и графический фронтенд к нему. Именно его и нужно будет правильно настроить на следующем этапе.

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

В секции General (Общие):

  • Commands (Команды)
  • Composite
  • Copy to texture
  • OpenGL

В секции Desktop (Рабочий стол):

В секции Utility (Утилиты):

В секции Window Management (Управление окнами):

  • Place Windows (Переместить окно)
  • Resize Window (Изменение размеров окна)
  • Scale (Масштабировать)
  • Snapping Windows
  • PNG

Далее, чтобы все наконец заработало, закрой CCSM и запусти Compiz из bash командой

Примерно через минуту ты увидишь запущенную оболочку Unity.

Unity во всей красе

Unity во всей красе

Отмечу несколько ключевых моментов:

  1. Если ты и правда хочешь запускать иксовые приложения в WSL, устанавливай в качестве X-сервера VcXsrv, а не Xming. Опытным путем доказано, что Xming не желает нормально работать с WSL.
  2. После установки CCSM необходимо настроить его именно так, как показано на картинке (то есть включить то, что отмечено галочками, и выключить все остальное). Только тогда Unity со скрипом, не с первой попытки, но запустится.
  3. Лучше не устанавливать проприетарные драйверы ATI для Ubuntu внутри WSL. Это приводит к полному зависанию всей системы (в том числе и Windows 10) и влечет за собой тотальную переустановку WSL со всеми вытекающими.
  4. Огорчу тебя: не стоит возлагать на получившийся костыль большие надежды. Нормально ЭТО работать не будет. Но на моей тестовой машине Unity внутри WSL работала вполне сносно. Субъективно — чуть медленнее, чем в нативном Linux. Быть может, в будущем кто-нибудь доведет все это дело до ума. И от Unity в WSL таки будет польза.

Что же получится в итоге, после стольких мучений? А в итоге (теоретически, так как на практике выходит пока просто интересный экспериментальный способ запуска Unity и прочих DE внутри WSL) мы получим среду для тестирования Linux-приложений прямо внутри Windows. И Unity, работающую поверх Windows. Конечно, скорость работы и отзывчивость ее не такие, как на реальном железе, но все же быстрее, чем в виртуальной машине. Многие приложения, например Google Chrome или Pidgin, просто не запускаются. А вот Firefox, файловый менеджер, магазин приложений и прочие системные утилиты Ubuntu работают на ура (чуть медленней, чем в «настоящей» Ubuntu, но работают!).

WARNING

Установить WSL можно только в версиях Windows 10 «Профессиональная» и «Корпоративная». «Домашняя» не годится.

История ненависти и любви

Издавна Microsoft питала особые чувства к Linux в частности и ко всему миру FOSS в целом. И чувства эти, надо сказать, как правило, были не самыми теплыми — начиная со знаменитого «Открытого письма любителям» Билла Гейтса, написанного в далеком 1976 году (подробности в Вики), где автор обвинял пользователей персональных компьютеров (которые в те доисторические времена были и пользователями, и программистами, и хакерами!) чуть ли не в воровстве его интеллектуальной собственности (того самого бейсика), и заканчивая гневными высказываниями Стива Балмера в 2001 году по поводу Linux: «Linux — это раковая опухоль, которая пожирает всю интеллектуальную собственность, к которой прикасается. Согласно правилам лицензии, если вы используете какие-либо компоненты программного обеспечения с открытым исходным кодом, вы должны открыть код всего имеющегося у вас программного обеспечения».

Спустя пятнадцать лет, однако, Стив смягчил свою позицию: в марте 2016 года бывший генеральный директор Microsoft заявил, что рад видеть, что новый глава компании Сатья Наделла принял решение активнее поддерживать сообщество разработчиков открытого ПО, и «с удовольствием» (loved) наблюдал за анонсом MS SQL Sever для Linux. Во многом такой разворот бывшего гиганта софтверной индустрии — это заслуга сообщества FOSS. Тех тысяч и тысяч программистов, дизайнеров, майнтейнеров, FOSS-активистов и просто неравнодушных людей, которые годами «точили камень, аки вода».

Еще в середине 2000-х годов MS начала менять свою позицию в отношении FOSS. И это не пустые слова, а дела. Даром что ли не так давно Microsoft получила статус «платинового» участника Linux Foundation — главной организации, курирующей разработку Linux, высказала приверженность идеям разработки FOSS-сообщества. Ну и само существование WSL тому подтверждение. Спустя сорок с небольшим лет мы наблюдем, как некогда непримиримые идеологические (и не только идеологические) противники начали работать бок о бок, сообща делая мир лучше. Ну или хотя бы пытаться.

Спустя пятнадцать лет Стив Балмер, по сути, признал свою неправоту

То самое письмо Билла Гейтса в защиту копирайта

На данный момент апогеем такого симбиоза можно считать Windows Subsystem for Linux. Да, прослойка пока далека от совершенства. Но направление выбрано верное. И той и другой стороной.

«Дайте ей шанс!»

«Дайте Windows Subsystem for Linux шанс, и вы будете поражены», — говорят в Microsoft. Microsoft наконец-то признала потенциал мира FOSS в целом и Linux в частности. И каждое событие становится для Microsoft уроком, позволяющим оценить свои возможности и расширить свою деятельность в этой области программирования.

Совсем недавно, 16 ноября прошлого года, на сайте Microsoft для разработчиков появился пост с видеороликом под названием «Улучшения в bash на Windows и консоли Windows», в котором старший программист Microsoft Рич Тёрнер призывает Linux-разработчиков взглянуть на то, что Windows 10 может им предложить. «Установите экземпляр сборки Windows 10 для разработчиков (Windows 10 Insider Preview Build) и исполняйте свой код, используйте привычные вам инструменты, размещайте свои сайты на Apache, получайте доступ к своим базам данных MySQL непосредственно из вашего Java-кода», — говорит Тёрнер.

Новое, дружелюбное лицо Microsoft — Рич Тёрнер

Новое, дружелюбное лицо Microsoft — Рич Тёрнер

Тёрнер особо отметил, что WSL была создана специально для разработчиков с целью предоставить последним все необходимые инструменты разработки для Linux. И все это, по его словам, без потери новшеств и преимуществ Windows 10. «Независимо от того, какие инструменты вы обычно используете в Linux для создания приложений, будь то Go, Erlang или C, дайте шанс WSL, а самое главное, отправляйте нам отчеты об ошибках. Эти отчеты действительно делают нашу жизнь намного проще, позволяя нам создавать продукт, который мы все можем использовать, чтобы работать более плодотворно», — продолжил он.

Разумеется, Microsoft сама заинтересована в улучшении WSL, и Тёрнер утверждает, что конечная цель всего этого состоит в том, чтобы сделать эту подсистему полностью совместимой со всеми инструментами разработки для Linux. И, по их словам, любой, кто перейдет на Windows 10, будет чувствовать себя так же комфортно, как и в Linux. А это, в свою очередь, обеспечит Microsoft приток новых пользователей. «Пока мы только в самом начале. Нам предстоит долгий путь. В данный момент нельзя сказать, что эта штука действительно полностью совместима с Linux-инструментами и готова к полноценному использованию вами», — сказал он. Это заявление стало для многих людей сюрпризом. Однако, как уже говорилось, Сатья Наделла, нынешний глава софтверного гиганта, применит в отношении FOSS и Linux иной подход, рассматривая открытый и свободный код в качестве источника дохода и новых возможностей.

Отдельно отмечу, что Рич Тёрнер в своей речи не призывает разработчиков отказаться от Linux и нисколько не умаляет преимущества этой ОС, а лишь просит дать WSL шанс.

Промежуточные итоги

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

В следующей статье про Windows Subsystem for Linux мы проведем несколько тестов на производительность и попробуем наконец WSL на практике, установив на нее веб-сервер Apache и запустив локальный хостинг сайта. А пока можно промежуточно резюмировать, что эксперимент удался.

К написанию данной статьи меня побудил вопрос на Тостере, связанный с WSL. Я, после нескольких лет использования систем на ядре Linux, около полугода назад перешел к использованию Windows 10 на домашнем ПК. Зависимость от терминала и Linux окружения в моей работе практически сразу привели меня к вопросу: или ставить виртуалку или попробовать WSL. Я выбрал второе, и остался вполне доволен.

Под катом я расскажу как установить и настроить WSL, на какие я наткнулся проблемы и ограничения, как запускать Linux приложения из Windows и наоборот, а так же как интегрировать элементы окружения Xfce в окружение рабочего стола Windows.


Никогда не думал, что однажды вернусь на Windows, но повод попробовать мне дали стечения обстоятельств: жена, далекая от IT, дергала почти каждый раз, когда у нее возникала необходимость воспользоваться компом; проснулась ностальгия по одной игре, но она никак не хотела адекватно работать под wine; а тут еще мне подарили коробочную Windows 10 Pro. WSL я поставил чуть ли не сразу после установки системы, поигрался несколько вечеров, понял, что продукт для моих задач годный, но хочется более привычный терминал и вообще некоторых удобств.

Установка WSL и дистрибутива

Сразу оговорюсь, в интернете можно найти описание установки с помощью выполнения команды lxrun /install в командной строке или консоли PowerShell. Данный способ больше не работает (после выхода WSL в стабильный релиз). Насколько мне известно, сейчас WSL можно установить только из Microsoft Store вместе с предпочитаемым дистрибутивом.

Так же отмечу, что когда установку производил я, на выбор были доступны дистрибутивы OpenSUSE, SUSE Linux Enterprise и Ubuntu 16.04 — последний я и установил. Сейчас также доступны Ubuntu 18.04, Debian 9 и Kali Linux, возможно появятся и другие дистрибутивы. Действия по установке могут отличаться. Так же, часть проблем описанных в статье может быть уже исправлена.

Находим в магазине желаемый дистрибутив и устанавливаем. Установка пройдет быстро, так как скачает только эмулятор ядра Linux и утилиту для запуска подсистемы, которая окажется в системной папке в трех экземплярах: wsl.exe, bash.exe и ubuntu.exe (вместо ubuntu будет имя Вашего дистрибутива). Все они равнозначны и делают одно и то же — запускают собственный эмулятор терминала, в нем linux'овый bash работающий под эмулятором ядра. При первом же запуске нас попросят придумать логин и пароль для пользователя по умолчанию, а после произойдет непосредственно установка дистрибутива. В качестве пользователя по умолчанию указываем root без пароля — это потребуется для дальнейших шагов. Безопасность не пострадает, кроме того при подготовке материалов к статье, в англоязычном туториале, я наткнулся на информацию, что новые версии WSL теперь делают пользователем по умолчанию root без пароля без лишних вопросов.

Дожидаемся установки. Далее первым делом стоит обновить зеркала apt на ближайшие. Для этого понадобится CLI текстовый редактор. В комплекте только vi, я же больше предпочитаю nano, поэтому ставлю его:

sudo вводить не требуется, так как мы уже под root'ом. Отредактируем файл /etc/apt/sources.list:

У меня лучше всего работают зеркала Яндекса, поэтому мой файл выглядит так:

Нажимаем Ctrl+O для сохранения и Ctrl+X для выхода. Теперь можно обновить систему до актуального состояния:

После обновления можно создать нашего основного пользователя. В данной статье я назову его user1, Вы же можете задать привычное имя:

Далее переходим в папку юзера, зайдем под ним, установим пароль и отредактируем файл

Все, подсистема готова к использованию… почти.

Установка X-сервера, Xfce и прочих GUI'шных приложений

Первая же проблема, на которую я натолкнулся — bash-completion в предлагаемом эмуляторе терминала работал, мягко говоря, некорректно. Кроме того, данный эмулятор не умеет вкладки, а каждый его экземпляр запускает все в новом пространстве процессов, с отдельным init'ом (который кстати не заменить). Мне захотелось нормальный эмулятор терминала, некоторых других GUI приложений, а так же панельку, чтоб это все быстро запускать.

Когда я гуглил этот вопрос, я наткнулся на множество проблем, вроде необходимости перевода dbus на tcp протокол. На данный момент всех этих проблем нет. В подсистеме нормально работают unix-domain-socket'ы и все спокойно общается через них.

Первым делом нам понадобится X-сервер, притом установленный в основную систему (в Windows). Лично я использую для этих целей VcXsrv — порт X11 на Windows. Официальный сайт указанный в about самой утилиты его сейчас не предоставляет, поэтому гуглим установщик и устанавливаем все по умолчанию.

Пока идет установка возвращаемся в терминал WSL, командой exit выходим обратно в root'а. Первым делом настроим русские локали:

Далее установим некоторые компоненты Xfce. Можно конечно установить его целиком из мета-пакета, но большинство компонентов нам не понадобится, а модульная архитектура Xfce позволяет нам поставить только необходимое:

Запускать каждый раз окружение руками не очень удобно, поэтому я автоматизировал данный процесс. Для этого в основной системе создадим в удобном для нас месте папку, а в ней 3 файла для запуска:

    config.xlaunch — файл настроек для VcXsrv

x-run.vbs — WSL всегда запускается со своим эмулятором терминала, если его закрыть — завершатся все его дочерние процессы. Чтоб данное окно не мозолило глаза, неплохо его запускать скрытым. К счастью в Windows встроен интерпретатор VBScript, который позволяет это сделать в одну строчку:

Поясню, что здесь происходит. Мы говорим VBscript выполнить приложение wsl с параметром cd /home/user1; DISPLAY=:0 LANG=ru_RU.UTF-8 su user1 -c xfce4-session , папка запуска нам не важна, поэтому пустая строка, действие open — запуск, 0 — скрытый режим. Самому wsl мы отдаем команду на выполнение: переход в папку пользователя, затем с установкой переменных окружения DISPLAY (дисплей X-сервера) и LANG (используемая локаль) мы запускаем xfce4-session от имени нашего пользователя user1 (благодаря команде su)

Далее можем запустить наш start.bat и настроить панель Xfce под себя. Замечу, что здесь я наткнулся на еще одну проблему — панель прекрасно отображается поверх всех окон, но вот выделить себе место, как панель на рабочем столе Windows она не может. Если кто знает решение данной проблемы, поделитесь в комментариях.

Ну и под конец данной части, скриншот моего рабочего стола:


Взаимодействие окружения Windows и окружения подсистемы Linux

Запускать Linux приложения напрямую из Windows можно через те же 3 команды — bash, wsl или ubuntu. Не забываем, что по умолчанию запуск идет от root, поэтому стоит понижать привилегии через su , так же нужно не забывать передавать переменную окружения DISPLAY=:0 если приложению требуется X-сервер. Так же нужно менять папку, из которой должно работать приложение, через cd внутри WSL. Пример, посчитаем md5 для file.txt на диске D средствами Linux'овой md5sum:

Доступ к файловой системе Linux так же имеется, лежит она в %localappdata%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs . Читать таким образом файлы можно, а вот писать — не желательно, можно поломать файловую систему. Думаю проблема в том, что Windows не умеет работать с правами и владельцами файловой системы Linux.

Из Linux так же можно запускать Windows приложения. Просто запускаем exe-шник и он выполнится в основной системе.

Диски Windows монтируются в /mnt в соответствии со своими буквами в нижнем регистре. Например диск D будет смонтирован в /mnt/d . Из Linux можно свободно читать и писать файлы Windows. Можно делать на них симлинки. Права у таких файлов всегда будут 0777, а владельцем будет root.

Сетевой стек у подсистемы общий с Windows. Сервер поднятый в Linux будет доступен на localhost в Windows и наоборот. Однако unix-domain-socket для Windows будет просто пустым файлом, работать с этим можно только внутри Linux. Выход во внешнюю сеть у Linux так же есть, в том числе можно слушать порты, если этого не запрещает фаервол.
ifconfig в Linux и ipconfig в Windows выдают одинаковую информацию о сетевых интерфейсах.

Из диспетчера задач Windows можно спокойно прибить процесс внутри подсистемы Linux. Однако Linux увидит только свои процессы.

Особенности, ограничения и подводные камни

Ядро Linux в WSL не настоящее. Это всего лишь прослойка-эмулятор, которая часть Linux-специфичных задач выполняет сама, а часть проксирует напрямую в ядро winNT. Большая часть api в нем реализована, но не все. Свое ядро собрать не получится, как и не получится подключить модули ядра (.ko, Kernel Object).

Init процесс у WSL тоже свой и заменить его, например, на system.d не выйдет. У меня давно есть желание написать менеджер демонов на go, который бы работал с файлами юнитов system.d и предоставлял бы схожий интерфейс, да все руки не доходят.

Нет поддержки openFUSE, соответственно примонтировать виртуальную или удаленную файловую систему не получится. Так же нельзя сделать mount из файла, mount вообще ничего кроме bind здесь, похоже, не умеет.

Так же нет никакой возможности разбить файловую систему Linux на несколько разделов/дисков.

Прямой доступ к железу практически отсутствует. Все таки мы находимся в песочнице Windows, а не в полноценном Linux. /dev и /sys заметно пустуют, в них лишь проц да виртуальные устройства. Доступ к GPU — только через X-сервер, напрямую — никак, так что нейросети обучать придется в Windows.

В JS разработке столкнулся с тем, что electron.js отказался запускаться в WSL, пришлось дублировать окружение node.js в Windows.

Итоги

Статья получилась довольно длинной, надеюсь, что она окажется еще и полезной.
WSL для меня лично оказался инструментом вполне юзабельным, решающим мои задачи fullstack backend разработчика. Виртуалка с Linux за полгода так и не понадобилась. По общим ощущениям Windows+WSL намного функциональнее, чем Linux+Wine.

Пока писал статью, обнаружил, что в Microsoft Store появилась сборка WSL с Debian 9.3, данный дистрибутив мне более симпатичен, чем Ubuntu, поэтому буду пробовать ставить.

run linux windows subsystem

Windows Subsystem для Linux поставляется без рабочего стола. Давайте посмотрим как установить среду рабочего стола WSL, например GNOME, Xfce, KDE или LXDE, в Windows.

Запуск Linux наряду с Windows с годами становится все более полезным. Но двойной загрузкой может быть сложно управлять, а при настройке виртуальной машины возникают некоторые проблемы со стабильностью.

Одним из решений является использование подсистемы Windows для Linux. Как же запустить рабочий стол Linux в Windows с помощью подсистемы Windows для Linux?

Что такое подсистема Windows для Linux?

windows linux wsl store

По сути это означает, что вы можете открыть терминал Linux в Windows, установить и запустить программное обеспечение Linux.

Нет необходимости устанавливать какие-либо приложения для виртуализации и нет двойной загрузки.

Проблема с Windows Subsystem for Linux, однако, заключается в том, что по умолчанию это чисто командная строка. Рабочий стол отсутствует. Для опытных пользователей это, вероятно, не будет проблемой, но поскольку Linux имеет широкий выбор окружений рабочего стола, это кажется небольшим упущением.

К счастью, вы можете установить рабочий стол Linux в Windows с помощью WSL.

Убедитесь в совместимости с Windows 10

Прежде чем продолжить, вот важный момент: вы должны использовать 64-битную версию Windows.

После того как Windows 10 будет совместима, настанет время следовать нашему руководству по установке подсистемы Windows для Linux.

Когда все готово, пора добавить рабочий стол.

Установка рабочего стола Linux в WSL

Если вы уже установили подсистему Windows для Linux, нажмите кнопку Пуск и введите bash. Щелкните первый вариант (команда bash run), чтобы начать использовать Linux. Следующие шаги предполагают, что вы установили Ubuntu в качестве предпочитаемой операционной системы Linux.

Начните с запуска обновления и обновления Ubuntu:

sudo apt update
sudo apt upgrade

Пока идет обновление, зайдите на Sourceforge, чтобы загрузить и установить утилиту VcXsrv Windows X Server. (Для Windows доступны и другие X-серверы, включая Xming и MobaXterm. В оставшейся части этого руководства мы будем использовать VcXsrv.)

Сервер X позволяет получить доступ к графическому пользовательскому интерфейсу (GUI) приложения Linux или среды рабочего стола. Системы Linux полагаются на X для отображения рабочего стола, но его можно использовать и в сети.

Прежде чем продолжить, убедитесь, что сервер окон X установлен. Следующим шагом будет установка среды рабочего стола Linux (LDE).

Для WSL доступно множество окружений рабочего стола Linux. Для начала, мы будем действовать проще и установим легкую среду под названием LXDE. Чтобы установить, введите:

sudo apt install lxde

После установки LXDE введите следующую команду

export DISPLAY=:0
export LIBGL_ALWAYS_INDIRECT=1

Это указывает Linux отображать рабочий стол через X-сервер. Таким образом, когда вы запустите программу X Server, которую вы скачали выше, вы увидите окружение рабочего стола Linux.

И выберите One large window или One large window without titlebar.

wsl1

Нажмите Далее, затем выберите Запустить без клиента, чтобы XLaunch запустил только сервер, что позволит вам позже запустить рабочий стол Linux. Снова нажмите Далее, затем Готово. Также, вы можете нажать Сохранить конфигурацию, чтобы сохранить ее.

Прочтите: Как обновить Ubuntu 21.10 Impish Indri Beta с версии 21.04

wsl2

Готовы запустить рабочий стол Linux? Введите команду для запуска предпочитаемого вами LDE. Для LXDE, например, используйте:

После этого должно появиться окружение рабочего стола Linux!

wsl4

Теперь вы можете запускать любое предустановленное программное обеспечение Linux и даже устанавливать новые приложения и утилиты. Другие совместимые с WSL среды рабочего стола включают KDE. Вы даже можете установить GNOME на Windows, чтобы получить полноценный рабочий стол Ubuntu.

Установите рабочее окружение Xfce или KDE в Windows

Для установки рабочего стола Xfce, используйте команду

sudo apt install xfce4

После установки, запустите рабочий стол командой

xfce wsl

Если рабочий стол XFCE не запускается, смотрите чуть ниже про установку kde plasma

Хотите использовать рабочее окружение KDE Plasma в Windows, введите следующую команду

sudo apt install kubuntu-desktop

Далее запустите рабочий стол Plasma

У меня не получилось запустить этот рабочий стол ввиду ошибки

error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory

Это известная ошибка, но ее можно обойти

Для начала узнайте ваш IP-адрес введя в терминале Windows команду

Далее перейдите в терминал Ubuntu, где вам нужно отредактировать файл .bashrc

В конце этого файла, добавьте следующую строку

wsl7

Не забудьте поменять на ваш IP-адрес

Чтобы изменения вступили в силу немедленно

Далее вам нужно установить дополнительные инструменты, введя команду

sudo apt install binutils

sudo strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5

Запустите рабочий стол Plasma

Вы должны увидеть знакомое рабочее окружение

kde plasma wsl

Не хотите использовать среду рабочего стола WSL? Просто установите приложение Linux

Например, чтобы установить медиаплеер Rhythmbox и запустить его в Linux на Windows, используйте:

sudo apt install rhythmbox

Убедитесь, что вы задали команду export:

Затем просто запустите приложение из интерпретатора bash:

Запустится медиаплеер, готовый к поиску библиотеки.

windows linux wsl rhythmbox 2021

Теперь, в этом случае, вам, очевидно, нужно добавить некоторые медиафайлы в среду Linux на вашем компьютере. Вы можете сделать это, установив браузер и загрузив файлы, или просто подключив USB-накопитель с медиафайлами.

После подключения USB-накопителя не забудьте смонтировать его (в данном примере в качестве буквы диска используется D:):

sudo mount -t drvfs D: /mnt/d

Когда вы закончите, вам нужно будет размонтировать диск перед извлечением. Это обеспечит целостность данных на диске.

sudo umount /mnt/d

Хотя из приложений Linux можно просматривать папки Windows, реальные файлы открывать нельзя. Это недостаток подсистемы Windows для Linux, хотя и защищающий среду Windows и Linux от повреждений.

Запустите рабочий стол Linux в Windows: Предельная конвергенция!

Подсистема Windows для Linux позволяет легко запускать программное обеспечение Linux на ПК под управлением Windows. Нет необходимости беспокоиться о виртуальных машинах или мучиться с двойной загрузкой.

С установленным рабочим столом Linux конвергенция практически завершена. Это отличный способ освоить Linux, не выходя за пределы рабочего стола Windows.

Читайте также: