Запуск графической оболочки linux bash в windows 10

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

К написанию данной статьи меня побудил вопрос на Тостере, связанный с 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, поэтому ставлю его:

apt install nano

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

nano /etc/apt/sources.list

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

deb http://mirror.yandex.ru/ubuntu/ xenial main universe restricted
deb-src http://mirror.yandex.ru/ubuntu/ xenial main universe  restricted

deb http://mirror.yandex.ru/ubuntu/ xenial-security main universe restricted
deb-src http://mirror.yandex.ru/ubuntu/ xenial-security main universe restricted

deb http://mirror.yandex.ru/ubuntu/ xenial-updates main universe restricted
deb-src http://mirror.yandex.ru/ubuntu/ xenial-updates main universe restricted

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

apt update && apt upgrade

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

addgroup --gid 1000 user1
adduser --home /home/user1 --shell /bin/bash --uid 1000 -G user1,sudo user1

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

cd /home/user1
su user1
passwd
nano .bashrc

Мой базовый .bashrc выглядит так

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar

# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm|xterm-color|*-256color) color_prompt=yes;;
esac

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
    # We have color support; assume it's compliant with Ecma-48
    # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
    # a case would tend to support setf rather than setaf.)
    color_prompt=yes
    else
    color_prompt=
    fi
fi

if [ "$color_prompt" = yes ]; then
    if [[ ${EUID} == 0 ]] ; then
        PS1='${debian_chroot:+($debian_chroot)}[33[01;31m]h[33[01;34m] W $[33[00m] '
    else
        PS1='${debian_chroot:+($debian_chroot)}[33[01;32m]u@h[33[00m] [33[01;34m]w $[33[00m] '
    fi
else
    PS1='${debian_chroot:+($debian_chroot)}u@h w $ '
fi
unset color_prompt force_color_prompt

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="[e]0;${debian_chroot:+($debian_chroot)}u@h wa]$PS1"
    ;;
*)
    ;;
esac

# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi

# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'

# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

# Add an "alert" alias for long running commands.  Use like so:
#   sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '''s/^s*[0-9]+s*//;s/[;&|]s*alert$//''')"'

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

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

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

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

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

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

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

locale-gen ru_RU
locale-gen ru_RU.UTF-8
update-locale

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

apt install -y xfce4-session xfce4-notifyd xfce4-appfinder xfce4-panel xfce4-quicklauncher-plugin xfce4-whiskermenu-plugin xfce4-xkb-plugin xfce4-settings xfce4-terminal xfce4-taskmanager mousepad

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

  1. config.xlaunch — файл настроек для VcXsrv
    <?xml version="1.0" encoding="UTF-8"?>
    <XLaunch
    WindowMode="MultiWindow"
    ClientMode="NoClient"
    LocalClient="False"
    Display="0"
    LocalProgram="xcalc"
    RemoteProgram="xterm"
    RemotePassword=""
    PrivateKey=""
    RemoteHost=""
    RemoteUser=""
    XDMCPHost=""
    XDMCPBroadcast="False"
    XDMCPIndirect="False"
    Clipboard="True"
    ClipboardPrimary="True"
    ExtraParams=""
    Wgl="True"
    DisableAC="False"
    XDMCPTerminate="False"
    />
  2. x-run.vbs — WSL всегда запускается со своим эмулятором терминала, если его закрыть — завершатся все его дочерние процессы. Чтоб данное окно не мозолило глаза, неплохо его запускать скрытым. К счастью в Windows встроен интерпретатор VBScript, который позволяет это сделать в одну строчку:

    WScript.CreateObject("Shell.Application").ShellExecute "wsl", "cd /home/user1; DISPLAY=:0 LANG=ru_RU.UTF-8 su user1 -c xfce4-session", "", "open", 0

    Поясню, что здесь происходит. Мы говорим 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)

  3. start.bat — batch файл для запуска, по желанию его можно засунуть в автозагрузку
    start config.xlaunch
    wscript x-run.vbs

Далее можем запустить наш 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:

wsl md5sum < d:file.txt

Доступ к файловой системе Linux так же имеется, лежит она в %localappdata%PackagesCanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgscLocalStaterootfs. Читать таким образом файлы можно, а вот писать — не желательно, можно поломать файловую систему. Думаю проблема в том, что 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, поэтому буду пробовать ставить.

В последних версиях Windows 10, Microsoft разрешила пользователям устанавливать бета-версию оболочки bash через Ubuntu. С обновлением Fall Creators Update 1709, пользователи теперь могут установить подсистему Windows для Linux (WSL). С WSL вы можете запускать мощные команды оболочки через настоящую оболочку bash, управлять несколькими дистрибутивами и даже устанавливать пакеты и приложения командной строки Linux apt-get.

Вы получаете самую мощную и полезную часть Linux: интерфейс командной строки. С помощью этого инструмента вы можете управлять глубокими функциональными возможностями вашей системы, используя команды bash и приложения командной строки из Linux. Windows Subsystem для Linux позволяет пользователям запускать bash команды, как grepsed и awk, а также bash сценариев и Linux приложений командной строки, как Vim, Emacs и tmux. Вы также получите доступ к таким языкам, как Javascript и node.js, Ruby, Python и C/C+, и сервисы, такие как sshd, MySQL, Apache и lighttpd. И если установка не идет по умолчанию с тем, что вы хотите, вы можете установить пакеты Linux с помощью apt-get диспетчера пакетов.

Подсистема Windows для Linux — это урезанная версия Linux, которая работает в Windows 10. Вы устанавливаете части полного дистрибутива Linux, вы не получаете рабочую среду или оконный менеджер, с которым ассоциируется настольный Linux. Но, с недавнего времени вы теперь можете запустить рабочий стол Linux в Windows 10. Вам больше не нужна двойная загрузка вашей системы с разными ОС и не нужны сторонние виртуальные машины для запуска виртуализации.

Включение подсистемы Windows для Linux в Windows 10

Полная версия подсистемы Windows для Linux доступна только для обновлений Fall Creators (1709, сборка 16215 и более поздних версий).  С этим обновлением Windows вы можете фактически установить подсистему Windows для Linux из Windows Store. Вам просто нужно сделать некоторую подготовку в PowerShell. Выполните по порядку три пункта. Документация подсистемы Windows для Linux на сайте microsoft

channel

1. Включите подсистему в PowerShell

  • Запустите PowerShell от имени администратора.

PowerShell Запуск от имени администратора


Введите или скопируйте следующую команду в окно PowerShell. Нажмите Y, затем Enter и перезагрузите компьютер при появлении запроса. Ваш компьютер будет перезагружен мгновенно, поэтому обязательно сохраните любую работу заранее.

  • Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Установка linux в Windows 10 в Powershell

2. Установите дистрибутив Linux или Ubuntu из Windows Store

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

Дистрибутивы Linux в windows store

  • Нажмите кнопку «Получить«, чтобы загрузить дистрибутив.

Скачать UBUNTU в Windows Store

3. Запуск дистрибутива

  • После скачивания, нажмите «Запустить» или в поиске windows наберите ubuntu.
  • Как только откроется окно, дождитесь завершения процесса установки.
  • Создайте свое имя пользователя и пароль UNIX. Это может отличаться от текущего имени пользователя и пароля Windows и не иметь отношения к вашему существующему имени и паролю.

Если вдруг у вас запуск Ubuntu завершается ошибкой 0x8000000d, то запустите PowerShell и введите еще раз команду, а потом пробуйте запустить приложение ubuntu еще раз Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Поиск windows 10 запуск ubuntu

Установить рабочий стол Linux в Windows

Шаг 1. Как только вы проделали выше шаги, установили и включили подсиситему Linux для Windows 10, то следующим шагом будем установка графической оболочки, чтобы появился рабочий стол Linux. В окне bash Linux введите ниже команды по 1 -ой, чтобы обновить:

  1. sudo apt update
  2. sudo apt upgrade

Обновить Linux в Windows 10

Шаг 2. Теперь перейдите в Sourceforge, чтобы загрузить и установить утилиту VcXsrv Windows X Server. Это нужно для того, чтобы рабочий стол Ubuntu, в моем случае, отображался, как графическая оболочка.

Скачать и установить VcXsrv Windows X Server

Шаг 3. Прежде чем продолжить, убедитесь, что сервер X Window установлен, как описано в шаге 2. Следующим шагом является установка вашего рабочего стола Linux. Доступны многие окружения рабочего стола linux, такие как GNOME, Cinnamon, Xfce, LXDE. Я буду устанавливать облегченную среду под названием LXDE. Для установки вводим следующее:

  1. sudo apt install lxde

Установка рабочего стола lxde linux для Windows

После установки LXDE введите эту команду, которая заставит Linux отображать рабочий стол через X-сервер:

  1. export DISPLAY=:0
  2. export LIBGL_ALWAYS_INDIRECT=1

Не закрывайте командную строку bash ubuntu, сверните её, и идем ниже

Отображать рабочий стол Linux

Шаг 3. Когда вы запустите программу X Server, которую вы скачали выше, вы увидите среду рабочего стола Linux. При запуске VcXsrv, вам будет выдан лаунчер, который предлагает запустить в окне, на весь экран и т.п. Поставьте значение 0 в графе Display number. Нажмите «Далее» и в следующем окне выберите Start no client. Далее жмите все время Next. Все готова, можете приступать к работе.

Если появился черное окно и ничего не отображается, то смотрим ниже, скорее всего не сработал экспорт дисплея или вы что-то упустили.

Запуск VcXsrv

Шаг 4. Запуск рабочего стола Linux в Windows через командную строку bash ubuntu. Запустите сам VcXsrv (шаг 3), дойдите до черно окна и не закрывайте его, запустите bash командную строку ubuntu, если вы её закрыли, и введите следующее:

  1. export DISPLAY=:0
  2. startlxde

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

Запуск рабочего стола Linux через bash


Смотрите еще:

  • Загрузочная флешка для установки windows 7/8.1/10
  • Как переустановить браузер EDGE в Windows 10
  • Как переустановить windows 10 Без потери лицензии
  • Как установить любые обновления Windows без Интернета
  • Как исправить ошибку ISDone.dll при установке игр в Windows 10 

[ Telegram | Поддержать ]

logo.png

In this post I will demonstrate how to run Linux GUI (Graphical User Interface) applications on Windows Desktop platform.

For now, it is necessary to install a third-party App to run the GUI Apps, but Microsoft announced on //build 2020 that they will release soon an improvement that will not require any third-party component to run Linux GUI Apps on Windows Desktop.

Pre-requirements:

  • Windows 10
  • WSL

If you want to know how to install WSL on Windows 10, please check the following post:

logo.pngUsing WSL2 in a Docker Linux container on Windows to run a Minecraft Java Server

It will be demonstrated the three ways to run the Linux GUI Apps on Windows 10 through:

  • VcXsrv Windows X Server (free)
  • X410 App available on Microsoft Store (paid app)
  • Kali App available on Microsoft Store (free)

First option: VcXsrv Windows X Server

The X server is a provider of graphics resources and keyboard/mouse events. I am using the VcXsrv Windows X Server that is open-source and is frequently update.

The first step is to install the third-part display manager called VcXsrv Windows X Server available at:

https://sourceforge.net/projects/vcxsrv/

During setup is important to disable the access control to avoid the permission denied error when trying to run a GUI application:

VcXsrv disable access control 2.png

To warranty that the “Disable access control” will be always checked, save the configuration and always launch VcXsrv using the configuration file (config.xlaunch) :

VcXsrv disable access control.png

NOTE: Don’t forget to allow VcXsrv in the Windows firewall settings.

Windows Security -> Firewall & network protection -> Allow an app through firewall -> make sure VcXsrv has both public and private checked.

firewall.png

The next step is to set the DISPLAY environment variable on Linux to use the Windows host’s IP address as WSL2 and the Windows host are not in the same network device. It is necessary to set the DISPLAY environment variable with the correct IP address on launch. There are different ways to set the DISPLAY variable, thank you @ZeevS and @Barry_Bazza for the updates.

Follows some ways that you can choose:

export DISPLAY="`grep nameserver /etc/resolv.conf | sed 's/nameserver //'`:0"

export DISPLAY="`sed -n 's/nameserver //p' /etc/resolv.conf`:0"

export DISPLAY=$(ip route|awk '/^default/{print $3}'):0.0

Running the following command, it is possible to see that the $DISPLAY environment variable now has the Windows Host’s IP set:

Echo $DISPLAY

display.png

To avoid having to run that command every time that WSL is launched, you can include the command at the end of the /etc/bash.bashrc file:

export display.png

UPDATE: I would like to thank @samuel_skeen for let me know that now it is also necessary to create a .xsession file in the user’s home directory (/home/<user>/.xsession) with the content xfce4-session:

echo xfce4-session > ~/.xsession

Done! Now you can run the Linux GUI Apps on Windows desktop.

Let’s try this out!

Follows some Apps that you can use to test:

Install Chromium Dev :

sudo add-apt-repository ppa:saiarcot895/chromium-dev
sudo apt-get update
sudo apt-get install chromium-browser

Install GEDIT:

sudo apt install gedit
gedit

Install x11-apps:

sudo apt install x11-apps
xeyes
xcalc

Make sure that XLaunch is running and before calling the Linux GUI Apps on Windows Desktop environment.

apps running.png

run gui apps wsl.gif

What about running Windows 10 Apps and Linux GUI Apps in the same Desktop?

Run the following command to launch the xfce-panel:

xfsettingsd --sm-client-disable; xfce4-panel --sm-client-disable --disable-wm-check &

What about accessing the Linux Desktop Environment via RDP?

The first thing that you need to do is to install a Linux Desktop Environment. I will user Xfce as it is a lightweight one.

Run the following commands to install Xfce:

sudo apt install xfce4

The next step is to install the xrdp that provides a graphical login to remote machines using RDP (Microsoft Remote Desktop Protocol).

sudo apt install xrdp

Type the following command to get the WSL IP address:

ip a

ip addr.png

Make sure that xrdp service is running:

start xrdp.png

Run the Remote Desktop Client (MSTSC) and type the WSL IP address to connect to xfce4:

mstsc.png

Done! Now you can access your favorite Linux IDE on WSL.

wsl rdp.png

wsl rdp 3.gif

Second option: X410 App

The app is available on Microsoft Store:

https://www.microsoft.com/store/productId/9NLP712ZMN9Q

X410.png

In the image below I am using the the X Server X410 App available in the Windows 10 store, that has a better graphic performance:

WinLinux.gif

Enabling Sound

X410 X Server App, as well as XLaunch, supports sound on Ubuntu (18;04 and 20.04). If you are using X410, please following the steps available at:

Enabling sound in WSL / Ubuntu — Let It Sing!

I only had to change the third step to use auth-anonymous instead of the auth-ip-acl:

load-module module-native-protocol-tcp auth-anonymous=1

More details here: https://github.com/microsoft/WSL/issues/4205

I defined the PULSE_SERVER environment variable too, as:

export PULSE_SERVER=tcp:$(grep nameserver /etc/resolv.conf | awk '{print $2}')

Thank you @Barry_Bazza, for letting me know that the following Pulse Audio version also works: pulseaudio-5.0-rev 18 .

This is the code bat file that I am using to load X410:

@echo off
start /B x410.exe /wm
start "" /B "C:wslpulseaudiobinpulseaudio.exe"

ubuntu2004.exe run "if [ -z $(pidof xfce4-panel) ]; then export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0;export PULSE_SERVER=tcp:$(grep nameserver /etc/resolv.conf | awk '{print $2}'):0;  cd ~; xfsettingsd --sm-client-disable; xfce4-panel --sm-client-disable --disable-wm-check; taskkill.exe /IM x410.exe;taskkill.exe /IM pulseaudio.exe /F; fi;"

For more details about how to enable the xfce-panel steps, please check:

https://x410.dev/cookbook/wsl/xidekick/ 

Follows a great thread about how to fix sound issues:

No sound in wsl2 · Issue #4205 · microsoft/WSL (github.com)

Third option: Kali App

Kali Linux Windows Application is available on Microsoft Store:

https://www.microsoft.com/store/productId/9PKR34TNCV07

Once installed, after having providing the credentials, run the following command to install Win-KeX to allow running GUI Linux Apps on KALI for Windows:

sudo apt update && sudo apt install kali-win-kex

Run the following command to run Kali:

kex wstart

kex wstart.png

The KALI environment will be loaded:

kali.png

With Kali, you don’t have to worry about setting environment variables or starting services.

Follows the Kali page with more details:

Kali Linux in the Windows App Store | Kali Linux

Win-KeX Version 2.0 | Kali Linux

In this post we see how to run GUI Linux Apps using XServer on Windows Desktop environment and how to access the full WSL Linux desktop environment.

I hope you liked!

После написания автором этих строк предыдущей статьи о 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

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

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

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

Подсистема Windows для Linux (WSL) – это дополнительная функция для Windows 10 и 11, которая поддерживает установку операционных систем Linux, доступных в Магазине Windows.

windows linux wsl store

windows linux wsl store

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

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

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

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

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

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

Вы можете проверить это в Настройки > Система > О системе, где вы найдете запись Тип системы. Чтобы продолжить, там должно быть написано “64-битная операционная система”. Если это не так, и вы используете 64-разрядное оборудование, вам нужно обновить Windows 10 с 32-разрядной версии до 64-разрядной.

Еще одним обязательным условием является то, что вы должны использовать Windows 10 build 14393 или более позднюю версию. Вы можете проверить это на том же экране “О программе”, в разделе “Характеристики Windows”. Посмотрите на сборку ОС – если она выше, чем 14393, вы можете использовать подсистему Windows для Linux. Если нет, просто запустите обновление Windows.

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

Как запустить Linux в Windows

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

Установка рабочего стола 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.

Мы использовали VcXsrv, который содержит инструмент XLaunch. Пришло время его запустить, На рабочем столе щелкните на иконку “XLaunch”

wsl8

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

wsl1

Настройка X-сервера в Windows

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

wsl2

Настройка X-сервера с помощью WSL в Windows

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

startlxde

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

wsl4

Запуск LXDE в Windows с помощью WSL

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

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

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

sudo apt install xfce4

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

startxfce4

xfce wsl

xfce wsl

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

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

sudo apt install kubuntu-desktop

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

startplasma-x11

Важное замечание

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

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

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

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

ipconfig

Мой ip-адрес – 192.168.0.111

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

nano ~/.bashrc

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

export DISPLAY=192.168.0.111:0

wsl7

wsl7

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

Чтобы сохранить файл нажмите “Ctrl+O” и закройте с помощью “Ctrl+X”

Введите команду

source ~/.bashrc

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

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

sudo apt install binutils

И наконец, чтобы исправить ошибку выше, введите команду

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

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

startplasma-x11

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

kde plasma wsl

kde plasma wsl

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

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

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

sudo apt install rhythmbox

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

export DISPLAY=:0

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

rhythmbox

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

windows linux wsl rhythmbox 2021

Приложение Linux, запущенное в Windows с помощью WSL

Теперь, в этом случае, вам, очевидно, нужно добавить некоторые медиафайлы в среду 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.

Хотите узнать больше? Сейчас самое время начать работать с Linux.

Установка Linux в Windows 10В Windows 10 появилась новая возможность для разработчиков — оболочка Ubuntu Bash, позволяющая запускать, устанавливать приложения Linux, использовать скрипты bash прямо в Windows 10, все это называется «Подсистема Windows для Linux». В версии Windows 10 1709 Fall Creators Update доступны уже три дистрибутива Linux для установки. Во всех случаях требуется 64-разрядная система для установки.

В этой инструкции — о том, как установить Ubuntu, OpenSUSE или SUSE Linux Enterprise Server в Windows 10 и некоторые примеры использования в конце статьи. Следует также учитывать, что есть некоторые ограничения при использовании bash в Windows: например, нельзя запускать GUI приложения (правда, сообщают об обходных путях с помощью X server). Кроме этого, командами bash нельзя запустить Windows-программы, несмотря на наличие полного доступа к файловой системе ОС.

Установка Ubuntu, OpenSUSE или SUSE Linux Enterprise Server в Windows 10

Начиная с версии Windows 10 Fall Creators Update (версия 1709) установка подсистемы Linux для Windows несколько изменилась по сравнению с тем, что было в предыдущих версиях (для предыдущих версий, начиная с 1607, когда функция была представлена в бета-версии, инструкция — во второй части этой статьи). Также обратите внимание, что в Windows 10 2004 можно установить Kali Linux с графическим интерфейсом.

Теперь необходимые шаги выглядят следующим образом:

  1. Прежде всего, необходимо включить компонент «Подсистема Windows для Linux» в «Панель управления» — «Программы и компоненты» — «Включение и отключение компонентов Windows». Включение компонентов Linux для Windows 10
  2. После установки компонентов и перезагрузки компьютера, зайдите в Магазин приложений Windows 10 и загрузите оттуда Ubuntu, OpenSUSE или SUSE Linux ES (да, теперь доступно три дистрибутива). При загрузке возможны некоторые нюансы, о которых далее в примечаниях. Дистрибутивы Linux в магазине Windows 10
  3. Запустите загруженный дистрибутив как обычное приложение Windows 10 и выполните первоначальную настройку (имя пользователя и пароль). Настройка Ubuntu Linux в Windows 10 1709

Для включения компонента «Подсистема Windows для Linux» (первый шаг) можно использовать команду PowerShell:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Теперь несколько примечаний, которые могут быть полезны при установке:

  • Вы можете установить сразу несколько дистрибутивов Linux.
  • При загрузке дистрибутивов Ubuntu, OpenSUSE и SUSE Linux Enterprise Server в русскоязычном магазине Windows 10 заметил следующий нюанс: если просто ввести название и нажать Enter, то нужных результатов в поиске не оказывается, но если начать вводить и затем нажать по появляющейся подсказке, автоматически попадаешь на нужную страницу. На всякий случай прямые ссылки на дистрибутивы в магазине: Ubuntu, OpenSUSE, SUSE LES.
  • Запускать Linux можно и из командной строки (не только с плитки в меню Пуск): ubuntu, opensuse-42 или sles-12

Установка Bash в Windows 10 1607 и 1703

Для того, чтобы установить оболочку bash, выполните следующие простые действия.

  1. Зайдите в параметры Windows 10 — Обновление и безопасность — Для разработчиков. Включите режим разработчика (должен быть подключен Интернет для загрузки необходимых компонентов). Включение режима разработчика в Windows 10
  2. Зайдите в панель управления — Программы и компоненты — Включение или отключение компонентов Windows, отметьте пункт «Подсистема Windows для Linux». Установка подсистемы Linux в Windows 10
  3. После установки компонентов, введите в поиске Windows 10 «bash», запустите предлагаемый вариант приложения и выполните установку. Вы можете задать свое имя пользователя и пароль для bash, либо использовать пользователя root без пароля. Установка Ubuntu bash

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

Запуск Ubuntu Bash в Windows 10

Примеры использования Ubuntu Shell в Windows

Для начала отмечу, что автор не является специалистом по bash, Linux и разработке, а примеры ниже — просто демонстрация того, что в Windows 10 bash работает с ожидаемыми результатами для тех, кто разбирается в этом.

Приложения Linux

Приложения в Windows 10 Bash можно устанавливать, удалять и обновлять с помощью apt-get (sudo apt-get) из репозитория Ubuntu.

apt-get install в Windows 10

Использование приложений с текстовым интерфейсом ничем не отличается от такового на Ubuntu, например, вы можете установить Git в Bash и использовать его привычным образом.

Использование bash git в Windows 10

Скрипты bash

Вы можете запускать скрипты bash в Windows 10, создать их можно в имеющемся в оболочке текстовом редакторе Nano.

Скрипты bash в Windows 10

Скрипты bash не могут вызвать программы и команды Windows, но возможен запуск скриптов и команд bash из bat файлов и сценариев PowerShell:

bash -c "команда"

Также вы можете попробовать запускать приложения с графическим интерфейсом в Ubuntu Shell в Windows 10, на этот счет в Интернете уже имеется не одна инструкция и суть способа сводится к использованию Xming X Server для вывода GUI приложения. Хотя официально возможность работы с такими приложениями Майкрософт не заявлена.

Как было написано выше, я не тот человек, который может в полной степени оценить ценность и функциональность нововведения, но вижу как минимум одно применение для себя: различные курсы Udacity, edX и другие, связанные с разработкой проходить будет куда проще, работая с необходимыми инструментами прямо в bash (а в этих курсах обычно демонстрируется работа именно в терминале MacOS и Linux bash).

Windows Subsystem for Linux (WSL) — подсистема ОС Windows 10, позволяющая разработчикам, тестировщикам запускать нативные приложения Linux, писать скрипты, выполнять команды непосредственно из Windows. В обновлённой Windows 10 (2004) появилась 2я версия WSL, в которой используется полноценное ядро Linux с возможностью запуска приложений и контейнеров Docker, реализована высокая скорость загрузки, небольшой объем потребляемых ресурсов, управление в фоновом режиме, обновление ядра. Таким образом вы сможете запускать ELF64 программы, которые могут получать доступ к файловой системе Windows без использования сторонних порто (таких как Cygwin).

Образ ядра Linux (версия ядра 4.19) в Windows 10 представляет собой легкую виртуальную машину, для запуска которой не нужно ставить полноценную роль Hyper-V. Системные вызовы Linux транслируются на лету в вызовы Windows без использования эмулятора (в отличии от WSL1).

Изначально компонент WSL отключен. Чтобы его включить, вам необходимо зайти в Пуск -> Панель управления -> Программы и компоненты -> Включение и отключение компонентов Windows (Control PanelAll Control Panel ItemsPrograms and FeaturesTurn Windows features on or off), активировать галочку Подсистема Windows для Linux (Windows Subsystem for Linux), нажать кнопку ОК, и перезагрузить компьютер.

установка Windows Subsystem for LInux 2 версия в windows 10

Вы можете включить компоненты WSL в Windows 10 с помощью dism:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

или PowerShell

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

В Windows Server 2004 Semi-Annual Channel (SAC) для установки компонента WSL используется командлет Install-WindowsFeature:

Install-WindowsFeature -Name Microsoft-Windows-Subsystem-Linux

После этого также необходимо перезагрузить компьютер.

В настройка BIOS/UEFI компьютера должна быть включена поддержка аппаратной виртуализации: Intel VT (Intel Virtualization Technology) или AMD-V.

Теперь вам нужно выполнить обновление WSL до версии 2. Для этого требуется зайти на сайт https://docs.microsoft.com/ru-ru/windows/wsl/wsl2-kernel, скачать файл wsl_update_x64.msi, установить его. По завершении увидите картинку

windows subsyste for linux update setup

Чтобы сделать WSL2 архитектурой по умолчанию для новых дистрибутивов, в PowerShell выполните команду:

wsl --set-default-version 2

Далее вам необходимо открыть Microsoft Store, в поиске ввести слово “Linux”. В появившемся списке выберите нужный дистрибутив. Доступные Ubuntu, Debian, Kali Linux, Linux Cheatsheet, SUSE Linux Enterprise Server15, openSUSE Leap 15-1, Pengwin Enterprise, Fedora Remix for WSL или другие. В нашем примере мы будем использовать Ubuntu 20.04 LTS, нажмите кнопку Получить.

образы linux для wsl в microsoft store

Если у вас отключен Windows Store или вы хотите установить дистрибутив WSL в Core редакции Windows Server, вы можете скачать дистрибутив Ubuntu с помощью PowerShell командлета Invoke-WebRequest:

Invoke-WebRequest https://aka.ms/wslubuntu2004 -OutFile ubuntu-2004.zip –UseBasicParsing

Распакуйте архив:

Expand-Archive -Path .ubuntu-2004.zip

Запустите установку образа Linux с помощью файла Ubuntu.exe.

Также вы можете скачать образ в виде appx файла и установить его с помощью командлета Add-AppxPackage.

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

wsl --list –-verbose

wsl --list –-verbose список доступных образов linux

Если у вашей среды Linux указана версия 1, нужно изменить ее на WSL2 командой:

wsl --set-version Ubuntu-20.04 2

Файл жёсткого диска с образом виртуальной машины ОС Linux Ubuntu 20.04 будет располагаться в профиле пользователя: C:Users234AppDataLocalPackagesCanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgscLocalState.

После установки дистрибутива в стартовом меню появляется ярлык на него. Для запуска Ubuntu зайдите в меню Пуск, нажмите на соответствующем ярлыке и получите в отдельном окне полноценную командную оболочку Bash. Запускать WSL можно и с помощью команды wsl. При первом запуске образа в командной строке Bash вам будет предложено создать пользователя и пароль (которые не должны совпадать с учётной записью Windows). Чтобы выполнять команды с правами root, необходимо использовать дополнительный ключ (префикс) sudo. В WSL есть общие команды для Bash и CMD, и тут нужно не забывать, что система Linux чувствительна к регистру.

Вы можете выполнить Linux-команды из CMD. Для этого необходимо вначале указать “WSL”. Например, для просмотра списка файлов и папок в каталоге Windows, выполните:

wsl
ls /mnt
ls/mnt/c

запуск команд linux в windows
dir | wsl grep Sa
wsl ls ‑la > 123.txt
wsl ls ‑la /proc/cpuinfo
wsl ls ‑la “/mnt/c/Program Files”

команды linux

Также вы можете открыть проводник командой explorer.exe, калькулятор – calc.exe, блокнот – notepad.exe, paint – mspaint.exe, календарь – cal, погоду – curl wttr.in

запуск команд linux в windows 10 subsystem for linux

Ещё один пример взаимосвязи 2х систем – вы можете открыть в Windows файл из WSL-дистрибутива по сетевому пути. Для этого в CMD наберите путь к файлу:

notepad \wsl$Ubuntu-20.04home1122.txt

Из окна консоли вы можете обновить список пакетов в Ubuntu с помощью команд:

sudo apt-get update
sudo apt-get upgrade

После обновления Ubuntu папка …/LocalState будет занимать 1.5 Гб.

Из командной строки Linux можно не только просмотреть Windows-файлы и каталоги, но и получить к ним доступ. Чтобы удобнее копировать файлы, просматривать директории и их содержимое, установите файловый менеджер Midnight Commander с помощью команды

sudo apt-get install mc

Вы можете запустить Midnight Commander как в командной оболочке Bash, так и внутри CMD. На скриншоте ниже показано, что в двух панелях MC показывается список файлов с обеих ОС.

Midnight Commander в windows 10 wsl2

Можно отобрахить сетевые настройки (IP адрес) IP-адрес Linux-системы:

ip addr | grep eth0

запуск команд linux из windows

В WSL не предусмотрена работа приложений с графическим интерфейсом. Тем не менее вы можете попробовать их установить и использовать. Чтобы запускать графические приложения в Linux, нужно скачать и установить в Windows программу VcXsrv Windows X Server (https://sourceforge.net/projects/vcxsrv/).

VcXsrv Windows X Server

С помощью пакетного менеджера apt-get установим несколько графических программ: например, браузер, текстовый редактор или что-то ещё:

sudo apt-get install gedit
sudo apt-get install firefox
sudo apt-get install x11-app

Затем создайте файл в директории root:

cd /~
vim .bash_login

впишите строку

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0

сохраните запись

Esc -> :wr -> :q

Теперь можете запустить графические программы Linux через WSL командами:

firefox

или

gedit

запуск браузера firefox через WSL 2 в Windows 10

запуск графического редактора gedit в WSL

Вы можете установить в Windows 10 несколько дистрибутивов Linux и запускать одновременно в разных окнах WSL. Вывести весь перечень установленных дистрибутивов можете с помощью команды:

wsl --list –all

чтобы завершить работу всех запущенных дистрибутивов и ядра WSL 2, выполните команду:

wsl --shutdown

Сайт KV.BY опубликовал статью о подсистеме Windows Subsystem for Linux (WSL), предназначенной для запуска Linux-программ в ОС Windows 10. Упор в статье сделан на последнюю версию этой подсистемы WSL2.

Windows – это Linux

Как говорили древние греки, всё меняется и ничто не остаётся на месте. Многие ещё помнят те времена, когда операционная система GNU/Linux была для «Майкрософт» чем-то вроде красной тряпки для быка. Бывший руководитель рэдмондского гиганта Стив Балмер называл всё, что связано с детищем Линуса Торвальдса, не иначе как «раковой опухолью». Однако прошло не так уж и много времени после таких заявлений, и вот уже как три года корпорация «Майкрософт» является платиновым участником консорциума Linux Foundation – организации, занимающейся развитием и стандартизацией ядра Linux.

Мало того, в операционной системе Windows 10 появилась специальная программная подсистема Windows Subsystem for Linux (WSL). Эта подсистема позволяет в Windows запускать программы GNU/Linux в двоичном исполняемом формате ELF-64. В результате пользователям десятых «Форточек» становятся доступно программное обеспечение Linux-дистрибутивов, начиная со скриптов Bash и заканчивая службами наподобие Docer.

Windows Subsystem for Linux
Windows Subsystem for Linux

Поводом для произошедших перемен в политике корпорации, без сомнения, стала популярность мобильной операционной системы Android, основанной на ядре Linux. Но причина, по которой в Рэдмонде произошёл поворот в сторону Linux-сообщества, лежит не только в области мобильных операционных систем.

«Developers, developers, developers!»

Существует два способа запускать Linux-приложения в Windows. Первый способ предполагает перекомпиляцию Linux-программ в исполняемый формат exe-файлов. Благо большая часть программ Open Source является кроссплатформенной и свободно собирается под разные операционные системы. Примером первого способа можно назвать проекты Cygwin или MinGW – коллекции специально скомпилированных для Windows приложений UNIX.

Второй способ предполагает использование эмуляции и виртуализации, что позволяет запускать полноценный Linux-дистрибутив в специальной виртуальной среде. WSL – это и есть второй способ. Здесь используются как эмуляция ядра Linux, так и технологии виртуализации.

Но, прежде чем мы рассмотрим особенности второго способа, отметим, что в Windows 10 присутствует и первый способ. С недавнего времени тихо и незаметно в штатный состав «Десятки» входят три классические консольные UNIX-утилиты curl.exe, tar.exe, openssh.exe.

Утилиты curl.exe, tar.exe, openssh.exe в Windows 10
Утилиты curl.exe, tar.exe, openssh.exe в Windows 10

Выбор этих консольные утилит явно указывает на тот класс пользователей, ради которых «Майкрософт» и затеяла всю эту эпопею с запуском в «Форточках» программ Linux. Программы Curl, tar и openssh – популярные инструменты у веб-разработчиков. Именно для них и для веб-разработки создают в Рэдмонде подсистему Windows Subsystem for Linux.

Как правило, веб-разработчики используют для своей работы Windows. Однако их клиенты и заказчики в основном пользуются хостингом на Linux. И для веб-разработчики в среде Windows приходится использовать что-то вроде Denver и XAMP, или же запускать программы виртуализации VMware и VirtualBox, или же использовать на компьютере двойную загрузку с системами Linux. Или уже наметилась устойчивая тенденция для веб-разработки переходить на Mac OS, в которой имеется полноценное POSIX-ядро, позволяющее без лишних телодвижений запустить все консольные скрипты и программы, необходимых для современных веб-кодеров.

Поэтому основная цель WSL – удержать веб-разработчиков на Windows, предоставив им удобную и комфортную среду запуска всех консольных скриптов, программ и примеров с GitHub и StackOwerflow. (Кстати GitHub с недавних пор тоже под контролем Microsoft).

Главная особенность WSL

Технологиями виртуализации давно никого не удивишь. Если подсистема WSL основана на технологиях виртуализации, то возникает основной вопрос: чем Windows Subsystem for Linux лучше того же VirtualBox?

Преимущество WSL не только в том, что пользователю Windows 10 теперь не требуется устанавливать и настраивать отдельные программы для создания виртуальных машин, довольствуясь штатными средствами виртуализации. Основным достоинством WSL является очень тесная и бесшовная интеграция работы приложений Linux в системе Windows. WSL настолько глубоко интегрирует виртуальную среду выполнения Linux-программ в операционную систему Windows 10, что эти программы становятся мало отличимы от приложений Windows на уровне пользовательского интерфейса. Хотя эта бесшовность даётся не легко.

Ниже рассмотрим эту бесшовность и прозрачность более детально. Все инструкции в этой статье для работы с WSL актуальны для сборки Windows 10 18917 и более поздних версий. Проверить номер своей сборки Windows 10 можно командой «ver» в приложении «Командная строка».

Настройка WSL

Настраивать подсистему WSL практически не нужно. Виртуальная среда WSL в процессе работы настроится автоматически и незаметно для пользователя.

Единственное, нужно проверить включение компонентов «Подсистема Windows для Linux» и «Платформа виртуальной машины» через «Панель управления -> Программы и компоненты -> Включение или отключение компонента Windows».

Включение WSL
Включение WSL

WSL работает только в 64-разрядных версии Windows 10, начиная с редакции «Домашняя» для процессоров x64 и ARM. Подсистема не работает в безопасном S-режиме Windows 10.

Загрузка дистрибутива

Как известно программы для Linux распространяются в составе дистрибутивов, наиболее популярными из которых можно назвать Fedora, Debian, Ubuntu, OpenSUSE. Поэтому чтобы начать работу с WSL следует загрузить и установить базовый набор приложений какого-либо дистрибутива и затем штатным менеджером пакетов установить нужные программы.

Дистрибутивы Linux для WSL устанавливаются прямо из магазина приложений Windows Store так же, как и программы Windows. По поисковому запросу «linux» в магазине появится список дистрибутивов для выбора. На текущий момент в магазине представлено уже около дюжины дистрибутивов. Выбираем нужный дистрибутив, – например Ubuntu-18.04, – и нажимаем кнопку «Получить».

Ubuntu-18.04 в Windows Store
Ubuntu-18.04 в Windows Store

Загрузится около 200 мегабайт файлов для базовой системы. В главном меню «Пуск», в «плитках» и на рабочем столе наравне с иконками Windows-программ появится иконка Linux-дистрибутива.

Иконки дистрибутива Linux в Windows 10
Иконки дистрибутива Linux в Windows 10

Удаление дистрибутива происходит также как и удаление Windows-программ – через контекстное меню «плитки» дистрибутива в меню «Пуск».

Отметим, что в редакциях Windows 10 для предприятий, в которых нет Windows Store, дистрибутивы Linux для WSL можно скачать и установить посредством специальных команд Power Shell. В этой статье для краткости мы данный метод рассматривать не станем.

Первый запуск WSL

Подсистема WSL предназначена для запуска консольных программ Linux с интерфейсом командной строки. Для программ с графическим интерфейсом необходимо устанавливать дополнительное ПО, о чём будет сказано ниже.

При первом запуске установленного дистрибутив откроется приложение «Командная строка», в котором запустится командный интерпретатор установленного дистрибутива – обычно это bash. Будет предложено подождать одну или две минуты для завершения установки. На последнем этапе после завершения установки необходимо создать новую учетную запись пользователя Linux-системы, который будет использоваться по умолчанию подсистемой WSL, и задать пароль. После чего с установленной системой Linux можно работать.

Начальная инициализация WSL-дистрибутива
Начальная инициализация WSL-дистрибутива

Запустить установленную систему Linux можно в приложении «Командная строка» с помощью команд «bash.exe», «wsl.exe» или «<имя дистрибутива>.exe» (не во всех дистрибутивах работает). Самой продвинутой является команда «wsl.exe», так как с её помощью доступны все возможные операции с подсистемой WSL.

Список установленных дистрибутивов задаётся командой «wsl» с помощью опции «-l» или «—list»:

wsl -l
Пример вывода команды “wsl -l”
Пример вывода команды “wsl -l”

Установка дистрибутива по умолчанию, который будет запускаться командами «bash.exe», «wsl.exe» без параметров, происходит с помощью опций «-s» («—setdefault»):

wsl -s <название дистрибутива>

Если для дистрибутива задано несколько учётных записей, то для запуска от имени определенного пользователя имеются опции «-u» («—user»):

wsl -u <имя пользователя>

Запуск определенного дистрибутива по названию с помощью опций «-d» («—distribution»):

wsl -d <название дистрибутива>

WSL1 и WSL2

После установки и первого запуска любой системы обычно всегда делается обновление ПО. Например, для Ubuntu обновление делается командами:

sudo apt-get update & apt-get upgrade

В первых версиях WSL пользователи столкнулись с неприятным фактом, что это обновление происходило очень медленно. Операция замены пары сотен мегабайт могла затянуться на долгое время. Резкое снижение производительности было характерно также и для других приложений, требующих большого числа файловых операций – Git, Node.js и других.

Такая низкая скорость файловых операций объяснялась тем, что первая версия WSL использовала эмуляцию ядра Linux на уровне API Windows. Также подсистема WSL эмулировала метаданные файловой системы дистрибутива Linux.

На практике оказалось, что такая эмуляция не обеспечивает высокую скорость файловых операций для систем Linux. Поэтому, начиная со сборки Windows 10 18917, используется новая архитектура WSL2, которая основана на технологиях виртуализации Microsoft Hyper-V. Другими словами теперь для каждого установленного дистрибутива Linux подсистема WSL запускает отдельную легковесную виртуальную машину и отдельный виртуальный диск. При этом для этой виртуальной машины используется настоящее ядро Linux, а не эмуляция на уровне системных вызовов Windows. В результате для WSL2 удалось повысить производительность файловых операций по сравнению с WSL1 на порядок.

На текущий момент в Windows 10 присутствуют обе версии подсистемы – и WSL1, и WSL2. Рекомендуется использовать WSL2.

Чтобы проверить, какие версии WSL использует каждый дистрибутив, используйте для команды «wsl.exe» опции «-l -v» («—list —verbose»):

wsl -l -v
Пример вывода команды “wsl -l -v”
Пример вывода команды “wsl -l -v”

Установить WSL 2 для отдельного дистрибутива можно опцией «—set-version»:

wsl --set-version <название дистрибутива> 2

Чтобы задать WSL 2 по умолчанию для всех устанавливаемых в дальнейшем дистрибутивов Linux, используйте опцию «—set-default-version»:

wsl --set-default-version 2

Одиночное и смешанное выполнение программ

Самое важное и интересное в WSL – это одиночное и смешанное выполнение программ Linux из среды Windows и наоборот.

Чтобы выполнить какую-либо программу из установленного дистрибутива Linux, совсем не обязательно запускать терминальную сессию Linux. Можно просто передать имя Linux-программы в качестве аргумента для wsl.exe и она будет выполнена прямо в контексте командной строки Windows.

c:>wsl uname
Linux
c:>
Примеры одиночного выполнения Linux-программ
Примеры одиночного выполнения Linux-программ

При этом программа для Linux выполнится в том же каталоге, в котором находится интерпретатор «Командная строка», от имени пользователя WSL по умолчанию с правами вызывавшего её интерпретатора. То есть если «Командная строка» запущена с правами Администратора Windows, то и запущенная здесь программа для Linux будет иметь права Администратора.

Возможно и обратное – вызов двоичных файлов Windows из консоли Linux. Поэтому из командного интерпретатора Linux, например, набрав команду «notepad.exe» можно запустить «Блокнот», который будет запущен с правами активного пользователя Windows.

$ notepad.exe "C:WSLWSL.txt"
Запуск “Блокнота” из консоли Linux
Запуск “Блокнота” из консоли Linux

Мало того, можно объединять программы Linux и программы Windows через механизм конвейера pipe. То есть можно соединять выход Linux-программы с входом Windows-программы и наоборот.

Пример 1, cmd. Выход Windows-программы «dir» направляем на вход Linux-утилиты «grep»:

C:>dir | wsl grep "Windows"
28.10.2019  03:36    
          Windows
28.10.2019  03:41              Windows.old

Пример 2, bash. Выход Linux-программы «cat» направляем на вход Windows-утилиты «findstr»:

$ cat /etc/lsb-release | findstr.exe "DESCRIPTION"
 DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"

Такая тесная интеграция программ Windows и Linux с помощью WSL позволяет, например, писать смешанные скрипты BASH и Power Shell. Или интегрировать инструменты Linux в средства разработки Windows.

Доступ к файлам

WSL предоставляет доступ из оболочки bash Linux ко всем дискам и всей файловой системе Windows. Локальные диски автоматически монтируются в каталог «/mnt». Например, диск «C:» монтируется как «/mnt/c».

USB-флэшки не монтируются автоматически в каталог «/mnt». Их нужно монтировать с помощью плагина drvfs. Например, монтирование флэш-диска H:

$ sudo mkdir /mnt/h
$ sudo mount -t drvfs h: /mnt/h

Файлы WSL-дистрибутивов Linux можно найти в папке «C:Usersимя_пользователяAppDataLocalPackages». Они будут находиться в папках с названиями вида «CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc». Если используется версия WSL1, то файлы Linux-системы там будут находиться как есть в прямом доступе из Windows. Но категорически не рекомендуется их трогать в обход WSL, так как Windows не обработает специфические метаданные этих файлов.

В случае версии WSL2 в папке дистрибутива будет расположен файл образа виртуального жёсткого диска. Если в командном интерпретаторе запустить команду «explorer.exe .» с точкой в качестве аргумента, то откроется «Обозреватель» Windows, в котором отобразится файловая система текущего дистрибутива Linux как сетевой ресурс вида «wsl$<название дистрибутива>».

WSL-диск как сетевой ресурс Windows
WSL-диск как сетевой ресурс Windows

Другими словами, передать приложению Windows какой-либо файл из WSL-дистрибутива можно по сетевому пути к этому файлу.

C:>notepad wsl$Ubuntu-18.04homemikWSL.txt

Сеть и сетевые приложения

Версия WSL1 использует IP-адрес Windows. Сетевой стек у подсистемы WSL1 общий с Windows. Сервер, поднятый в Linux, будет доступен на localhost в Windows и наоборот.

Если дистрибутив использует версию WSL2, то уже потребуется найти IP-адрес виртуальной машины, чтобы подключить дистрибутив по этому IP-адресу. Это можно сделать, выполнив в Linux-системе команду «ip addr» и через поиск строки «eth0» найти адрес по значению «inet».

$ ip addr | grep eth0
 5: eth0:  mtu 1500 qdisc mq state UP group default qlen 1000
     inet 172.18.14.6/20 brd 172.18.15.255 scope global eth0

Дальше можно в Linux запустить, для примера, http-сервер Python командой «python3 -m http.server» и обратиться к нему из браузера Windows по полученному IP.

Доступ к веб-серверу Python для WSL из Windows
Доступ к веб-серверу Python для WSL из Windows

WSL и программы с графическим интерфейсом

WSL — это средство, предназначенное для пользователей, которым требуется запускать программы командной строки Bash и Core Linux в Windows. WSL не имеет штатных средств для запуска приложений Linux с графическим интерфейсом GNOME, KDE и т. д.

Тем не менее, энтузиасты вполне успешно запускают графические программы в WSL, устанавливая и запуская сторонние порты X-сервера для Linux – например VcXsrv.

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

В сети Интернет немало инструкций по запуску в WSL графических Linux-программ. Большая часть этих инструкций написана для WSL1, но с появлением второй версии подсистемы они устарели. Ниже последовательность действий для настройки X-сервера VcXsrv для подсистемы WSL2.

  1. Находим в Сети, скачиваем и устанавливаем X-сервер VcXsrv.
  2. В WSL-дистрибутиве через пакетный менеджер устанавливаем какую-нибудь программу с графическим интерфейсом – например, Nautilus GNOME.
  3. В настройках брандмауэра Защитника Windows «Пуск > Параметры > Обновление и безопасность > Безопасность Windows > Брандмауэр и защита сети» отключаем брандмауэр для опции «Общедоступная сеть».
  4. В Linux находим IP-адрес сервера имен nameserver, прописанный в «/etc/reslv.conf».
$ cat /etc/resolv.conf
 This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
 [network]
 generateResolvConf = false
 nameserver 172.20.240.1
  1. Экспортируем переменную DISPLAY со значением nameserver из reslv.conf и номером экрана «0».
export DISPLAY=172.20.240.1:0
  1. Запускаем в Windows VcXsrv. Устанавливаем «0» для «Display number» и галочку для «Disable access control».
  2. В Linux из командной строки запускаем графическую программу.
WSL и программы Linux с графическим интерфейсом
WSL и программы Linux с графическим интерфейсом

Само собой, приведенный способ в запуска программ Linux с графическим интерфейсом в скором времени тоже устареет. Хотя бы потому, что подобный способ не соответствует главной задумке Windows Subsystem for Linux: использовать только штатные компоненты Windows и не требовать их сложной настройки.

В конце 2016 года Microsoft неожиданным образом объявила о партнерство с Linux Foundation, Сотрудничество нового века заключалось в том, чтобы сделать часть Linux для Windows 10 более удобной для разработчиков. Перенесемся в 2020 году, и, похоже, партнерство в значительной степени окупилось, поскольку проект претерпел некоторые значительные улучшения и вышел за пределы команд Linux Terminal. Теперь вы можете запускать программы Linux на основе GUI в Windows 10 без многих обходных путей. Мы попробовали несколько популярных приложений для Linux, и они безупречно работали на нашем ноутбуке с Windows. Итак, если вы хотите узнать, как устанавливать и использовать приложения Linux в Windows 10 в графическом пользовательском интерфейсе, следуйте нашему руководству шаг за шагом.

Здесь мы собираемся показать вам, как установить программы Linux на Windows 10 с помощью функции WSL (Windows Subsystem for Linux). Если вы не в курсе, WSL — это настоящее ядро ​​Linux, которое поставляется с Windows 10. Это не уровень совместимости или виртуальная машина в Windows 10, поэтому производительность остается на высшем уровне. Сказав все это, давайте без промедления перейдем к ступеням.

1. Прежде всего, включите Linux Bash Shell в Windows 10, если вы этого еще не сделали.

Замечания: Не обновляйте до WSL 2, так как в нем есть некоторые ошибки, которые блокируют программы Linux на основе GUI в Windows 10.

1. Установите программы Linux на Windows 10 с WSL

2. Теперь, когда вы настроили WSL 1, давайте установить приложение VcXsrv на вашем компьютере. Это приложение Windows Desktop Server, которое позволяет программам Linux работать в графическом интерфейсе пользователя. Во время установки оставьте все по умолчанию и завершите настройку, Наконец, VcXsrv начнет работать в фоновом режиме и будет сидеть в системном трее.

Установить программы Linux на Windows 10 с WSL

3. Затем вам может быть предложено диалоговое окно брандмауэра Windows. Установите флажок для частных сетей и нажмите на кнопку «Разрешить доступ»,

установить программы Linux

4. Теперь давайте установим программы Linux на наш ПК. Вы можете выбрать любую нужную программу прямо из Vim в Gedit и установить их в традиционном стиле Linux с использованием apt-get install команда, Для вашего прочтения пользователь GitHub создал список программ для Linux, которые хорошо работают на Windows 10 так проверьте это для получения дополнительной информации. Вот, например, я устанавливаю Gedit через терминал Linux.

sudo apt-get install gedit

2

5. После установки приложения выполните следующую команду, чтобы подключить VcXsrv Windows Server с Linux,

export DISPLAY=:0

2 установить программы Linux на Windows 10

6. Сделав это, теперь запустите программу Linux так же, как в дистрибутивах Linux. Введите имя приложения и нажмите Enter, Программа для Linux мгновенно откроется в графическом интерфейсе Windows 10. Это потрясающе, верно?

gedit

7. Если вы хотите запустить несколько программ Linux одновременно, откройте оболочку Linux Bash в терминале Windows. Здесь вы можете использовать Linux Bash Shell на нескольких вкладках и выполнять команды одновременно. Все, что вам нужно сделать, это выполнить экспорт DISPLAY =: 0 команда в каждой вкладке и затем запустите программу Linux, как обычно. Здесь я использую VLC (на базе Linux) и Gedit рядом с Windows 10.

4 установить программы Linux на Windows 10

Программа Linux не открывается в GUI на Windows 10? Вот исправление

1. Как я уже говорил выше, проблема связана с последней сборкой WSL 2. Если вы уже на последнем обновлении, вам нужно перейти на WSL 1 вручную, Выполните приведенную ниже команду в Windows PowerShell, чтобы найти версию WSL.

wsl -l -v

2. Если отображается «версия 2», то выполните команду ниже, чтобы вернуться к WSL 1 что гораздо стабильнее и без ошибок. Процесс займет около 20-30 минут. После этого просмотрите вышеприведенное руководство, и приложения Linux начнут открываться в графическом интерфейсе без каких-либо проблем.

wsl --set-version Ubuntu 1

изменить WSL 2 на WSL 1

Запустите любую программу Linux на Windows 10 через WSL

Вот как вы можете устанавливать и использовать программы для Linux в Windows 10, используя потрясающую функцию WSL. Как видно, приложения Linux работают отлично и без сбоев. Однако, если вы хотите запускать мультимедийные приложения, вы можете столкнуться с некоторыми проблемами из-за проблем со звуком и микрофоном. Помимо этого, подсистема Windows для Linux является легальным способом, по крайней мере, для разработчиков, чтобы насладиться лучшим из обоих миров. Во всяком случае, это все от нас. Если вы хотите узнать больше таких советов и рекомендаций по Windows 10, следите за обновлениями у нас. И если у вас возникнут какие-либо проблемы, оставьте комментарий ниже и дайте нам знать.

Понравилась статья? Поделить с друзьями:
  • Запуск графических приложений через ssh windows
  • Запуск графических приложений linux в windows
  • Запуск гранд смета 7 на windows 10
  • Запуск готика 2 ночь ворона на windows 10
  • Запуск второй системы на windows 10