Опыт настройки и использования WSL (подсистемы Linux в Windows 10)

    К написанию данной статьи меня побудил вопрос на Тостере, связанный с 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)}\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] '
        else
            PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\w \$\[\033[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 \w\a\]$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%\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, поэтому буду пробовать ставить.

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 81

      –3
      Хорошая попытка, microsoft, но нет, обойдусь пока дуалбутом.
        +1

        Меня вполне устраивает вин10 в виртуалбоксе. Единственно, пока не понимаю как и через что (не виртуалбокс же) пробросить видеокарту в виртальное окно

          0
          А я вот даже и не знаю, зачем винда в виртуалке. В убунту я живу, в винде играю, это домашний кейс. Запустить ACAD или илюстратор какой-нить тоже лучше в нативной системе. А если таких задач не стоит, то зачем винда дома-хз.
          Если ток какая-нибудь вин-онли IDE прям сильно нравится, ну или вин-девелопер. Тут я не специалист.
          А вообще, каждый хочет, как он хочет, и если кому-то нравится -я далёк от священных войн. Пост был, скорее, юмористический.
            0
            Я лично держу винду только для рабочего Аутлука — к сожалению пока не нашел нормального аналога под Линукс. Сами почта и календарь — в GMail, но мне очень не нравится тамошний Веб-интерфейс, особенно в части длинных цепочек с ответами и комментариями разных людей.
              0
              Evolution, Zimbra Desktop, просто с аутлоком плохо знаком, по моим ощущениям-очень похоже.
                0
                Насколько беспроблемна работа с календарем?
                Просто после нескольких пропущенных и неподтвержденных митингов я перестал мучать календарем гром-птичку, плюнул и перешел на веб-версию…
                0
                Я просто перешел на веб-версию аутлука под линксом для всего кроме почты. Но у нас все это хозяйство живет в микрософтовском облаке.
                +1
                на работе — десктопный ms office. равноценной замены ему нет. Дома хочется такое же пространство, как и на работе. Но при этом и игры и привычное windows окружение. Небольшая потеря производительности — не минус
                  0
                  Для мс-офиса-правда нет, вот только самая мощная штука в офисе excel, но программистов экселя, чтоб раскрывали хотя-бы 5% его возможностей, я живьём не видел. Остальное-же, так исторически сложилось, кст, в нарушение закона РФ(не того, что о импортозамещении, тот дурость, а того, что ГОСТ)
                    0

                    Так я и не программист
                    Какой ГОСТ имеется ввиду?

                      0
                      Ну, я никогда не видел упоминания .doc или .docx в ГОСТах, а с ними так, что там не написано-то не стандартно. А вот ISO/IEC 26300:2006 принят как ГОСТ Р ИСО/МЭК 26300-2010
                      Насколько я знаю, ГОСТ в России имеет статус федерального закона. Из чего делаем вывод, что ODT формат стандартный(законный), а doc не стандартный(не законный).
                        0

                        Стандартный для чего?
                        Я вот считаю тушенку более стандартной чем какой-то там одт и ГОСТ на нее более стандартный что ли… В общем стандартизацию в каждый дом! И чтоб ни семьи без стандарта!

                          0
                          MS Office умеет сохранять в ODT, как минимум с 13-ой версии, а может и для более ранних есть официальные патчи — не проверял.
                            0
                            Конечно умеет.
                            Смотрите, говорят «полноценной замены ms office нет». И это правда, пакет очень мощный. Но пользуются этой мощью 2% пользователей. Для остальных, слова про «нет замены», означают «доковские файлы всегда правильно открываются». Был прикол, когда в конторе из года в год копировали на страницу рамку, а там, в угловом штампе, было написано, условно, «директор-чудак» и пробелами «загнанно» за край. Годами копировали эту надпись и не видели, пока в либре не открыли.
                            Так вот, как только гос. и околоГос. конторы начнут сохранять текстовые файлы в ODT, замена ms office, внезапно, появится. И будет полноценной, что характерно.
                              0
                              Массово начнут, когда появится система проф. переподготовки сотрудников.Причем, строго говоря, это нужно не только в области ИТ. Сейчас непросто найти курсы, которые бы подготавливали юзеров не на ms. Да и для администраторов предлагаемые учебные программы по открытому ПО в сравнении с вендорскими курсами смотрятся как-то бледно.
                                0
                                Вообще-то, менять расширение сохраняемого файла в ворде могут 90% сотрудников. Ещё в ходу 2003 офис, и на просьбу «прислать файл в doc, вместо docx» без вопросов откликаются даже работники налоговой. Это простят особо циничные бухгалтеры за 50.
                                Достаточно было-бы какого-то приказа или указа, «документами обмениваться в odt», что-бы начать менять ситуацию. И это был-бы самый вменяемый приказ, из тех, что я слышал по импортозамещению.
                                  0
                                  А зачем им это делать если большинство служащих даже не слышало про этот ГОСТ? Кто-то проверяет, чтобы было по ГОСТу, а не как привычно и в случае несоответствия кто-то накладывает штрафы? Нет! Поэтому я и говорю, что нужна массовая система переобучения, которая не будет ограничиваться «курсом вождения мышки по коврику», а еще и даст подготовку по стандартам и правильному форматированию документов.
                  +1
                  В виртуалбоксе (если за последнее время ничего не изменилось, конечно — я не следил) не получится, а в qemu всё довольно просто. У меня именно таким образом настроена виртуалка с виндой исключительно чтобы в овервотч погонять. На хосте используется интегрированный GPU, которого мне более чем достаточно, а в виртуалку пробрасывается дискретная карта.
                0
                А шрифт в браузере такой страшный — это наследие X? Или он у вас и был таким?
                  0
                  Скорее это последствие сжатия png скриншота. Мне не захотелось вставлять мегабайтную картинку в статью.
                    +1
                    У png сжатие без потери качества, вообще то. Да и на скрине разные шрифты — и в браузере покореженный страшно.
                      0
                      Возможно в Windows отключено сглаживание шрифтов
                  0
                  Не совсем понятна магия с рутом без пароля. Как минимум с имеджем 18.04, все работает и так. Я стартую Х — «ubuntu1804 run DISPLAY=:0 xfce4-session»
                    +1
                    тут скорее опыт личного использования, я запускаю некоторые процессы, такие как базы данных, из под пользователя отличного от своего основного
                    0
                    А USB устройства пробовали? Есть сканер, работающий в Linux, но без дров под новые винды…
                      +2
                      не пробовал, но скорее всего потребуется драйвер в самой винде. Как писал в статье, WSL не имеет прямого доступа к железу, так что со сканером думаю будет облом
                        0
                        А если его подключить через raspberry pi и раздать по сети через sane?
                          0
                          Ну, виртуалка таки проще в этом случае, USB пробрасывается…
                        0
                        А вы пробовали проксировать команды с Windows на Linux? что -то типа git, node, flow и ему подобные.
                        Я пробовал через *.bat, но Idea и VScode, на некоторых местах валится
                          0
                          привык пользоваться подобными вещами из терминала…
                          вечером попробую наладить запуск линуксовой ноды из виндового VSCode, после поделюсь результатами
                            0
                            полностью согласен, но окружение часто просит доступ именно к виндовым командам, к примеру eslint, или flow просит указать путь для запуска
                              0

                              У меня установленный клиент git в wls, работает в Idea. Пробрасывал через *.bat, но там много гемора было)

                          +1
                          1. Если в Windows несколько пользователей, и у некоторых есть желание использовать WSL, им придется все делать заново для себя, включая загрузку дистрибутивов из Windows Store и размещение Linux в своих профилях?
                          2. Если у кого-то из таких пользователей нет прав администратора в Windows, смогут ли они пользоваться WSL хоть как-то?
                          • UFO just landed and posted this here
                              +1
                              не совсем понял Ваш ответ. «Нет» это ответ на второй вопрос?
                              Зачем? Вот есть школьный компьютерный класс, где будет Windows 10 Edu. Хотелось бы не давать ученикам административных прав в Windows. Есть определенные задачи, которые учитель хочет дать ученикам решать под Linux, сейчас для этой цели используется cygwin.
                              +2
                              1. Да, придется. Вся файловая система WSL находится в профиле пользователя.
                              2. Ubuntu — это «обычное» приложение в Microsoft Store. Простой пользователь вполне может его установить и запустить.
                              0
                              Вы не пробовали LEMP в WSL поднять?
                                +2
                                Что пробовать? Работает почти с самого начала.
                                +2
                                Тоже опыт положительный. Единственная проблема была с тем что дефолтный терминал не фонтан. Есть сторонние, но они либо не умеют работать с WSL либо забагованы, хотя cmder неплох.

                                Для себя это решил поднятием ssh-server в wsl — скрипт на vbs в автозагрузку и далее можно подключаться любым клиентом — в моём случае xshell — и всё становится совсем хорошо
                                  0
                                  А в Xshell не сталкивались с косяками в работе с буфером обмена? Я про то что при копировании кусков исходников с табами и пробелами они из не печатаемых превращаются в отображаемые…
                                    0
                                    с таким сталкивался как раз у cmder, из за чего и пришлось переходить, а у xshell всё отлично.
                                      0
                                      Сам столкнулся с такой же проблемой при обновлении на последний релиз Win10. В итоге переехал на hyper (https://github.com/zeit/hyper). Устраивает более чем.
                                        +1
                                        Нашел причину. Это не Xshell виноват был, а mc (midnight commander) и его mcedit.
                                        Есть там вот такие настройки по (F9 когда файл открыт на редактирование):


                                        Из-за «Visible trailing spaces» и «Visible tabs» при копи пасте появляются вот такие вещи. (вместо пробела) <------> (вместо табов). Отключил их.
                                        А «лесенки» при копи пасте появляются из-за вот этой опции «Return does autoindent». И ее отключил.
                                        0
                                        Я грешил на Xshell, но проблема не в нем была
                                        habr.com/post/412633/#comment_18713599
                                      0
                                      Если дело в цветовой палитре, то можно сделать «как в Ubuntu»:

                                      1. Скачать шрифты с design.ubuntu.com/font
                                      2. Руками настроить цвета в свойствах окна консоли (Properties -> Colors) по следующей схеме:
                                      Slot 1: Red: 48, Green: 10, Blue: 36
                                      Slot 2: Red: 52, Green: 101, Blue: 164
                                      Slot 3: Red: 78, Green: 154, Blue: 6
                                      Slot 4: Red: 6, Green: 152, Blue: 154
                                      Slot 5: Red: 204, Green: 0, Blue: 0
                                      Slot 6: Red: 117, Green: 80, Blue: 123
                                      Slot 7: Red: 196, Green: 160, Blue: 0
                                      Slot 8: Red: 211, Green: 215, Blue: 207
                                      Slot 9: Red: 85, Green: 87, Blue: 83
                                      Slot 10: Red: 114, Green: 159, Blue: 207
                                      Slot 11: Red: 138, Green: 226, Blue: 52
                                      Slot 12: Red: 52, Green: 226, Blue: 226
                                      Slot 13: Red: 239, Green: 41, Blue: 41
                                      Slot 14: Red: 173, Green: 127, Blue: 168
                                      Slot 15: Red: 252, Green: 233, Blue: 79
                                      Slot 16: Red: 238, Green: 238, Blue: 238

                                      Взято отсюда: medium.com/@jgarijogarde/make-bash-on-ubuntu-on-windows-10-look-like-the-ubuntu-terminal-f7566008c5c2
                                        0
                                        Попробуйте ConEmu preview. Работает и для хостовой Вин10 и для WSL вполне себе прекрасно.
                                        bingo347, и Вам тоже советую попробовать ConEmu, вполне возможно, что понравится.
                                        –1
                                        Информация из Wiki: «Windows Subsystem for Linux (WSL) — слой совместимости для запуска Linux-приложений (двоичных исполняемых файлов в формате ELF) в ОС Windows 10.»
                                        askubuntu.com/a/755977
                                        А у Вас написано: «эмулятор ядра Linux и утилиту для запуска подсистемы».
                                          +1
                                          Это как Wine наоборот, не эмулятор, а имитатор.
                                          0
                                          Еще как вариант можно запускать xfce4-appfinder вместо панели. Я сделал скрипт на запуск в AutoHotKey:
                                          !F2::
                                          Run ubuntu1804 run DISPLAY=:0 xfce4-appfinder -c,, Hide
                                            +1

                                            Коллеги, объясните пожалуйста, как правильно работать с переносами строк с wsl? Скажем у меня есть git, а редактирую я в через консольный vim и idea.

                                              0
                                              В git есть настройки переносов строк: help.github.com/articles/dealing-with-line-endings
                                                0

                                                В Linux все просто. Там юниксовые переводы строк везде и ставишь в git autocrlf = input. А вот в wsl хз…

                                                0
                                                WSL этот вопрос никак явно не затрагивает. Зависит от настроек git и редакторов. У меня с этим никаких проблем нет — везде lf, хотя файлы лежат в виндовой фс и редактируются виндовыми редакторами.
                                                  0

                                                  Но ведь можно использовать crlf. Почему ты сделал выбор в пользу lf?

                                                    0
                                                    в гит проекте не только я, для удобства
                                                      0

                                                      Ну так можно поставить autocrlf=true и пушиться будут lf переносы.

                                                  0
                                                  Так же, как и в обычной винде без wsl:
                                                  git config --global core.autocrlf false

                                                  Не дело гита за ними следить, это проблема вашего IDE.
                                                  +2
                                                  Большая проблема WSL — дисковый I/O. Разница в скорости при обновлении пакетов заметна даже по сравнению с виртуалкой. А уж попытки собрать Андроид под WSL… это просто ужас.
                                                    0
                                                    а с docker-контейнерами не сравнивали?

                                                    В Win10 же есть он!
                                                      +1
                                                      Могу сказать свой опыт. Не смотрел WSL, зато смотрел docker.

                                                      Чтобы понять масштаб трагедии, достаточно загуглить docker container windows io slow. Может быть делать простые вещи можно без проблем, но что-то, что требует ssd, лучше сразу запускать нативно.
                                                    +1
                                                    Хорошая вещь, но железные порты в нём не работают. Пробовал перепрошить из-под неё 3D принтер. Скомпилировалась прошивка без проблем, а вот заливка встаёт. Телефоны тоже, наверное, не похакать. Будем ждать улучшений аппаратной совместимости.
                                                    Но вот будни обычного разработчика покрывает вполне. Я 15 лет дома Линукс держал, сейчас вот перешёл на Win10 чтобы не переключаться туда-сюда из-за пары программ.
                                                      +1

                                                      Информация о том, что дистрибутивы Linux можно ставить только из windows store не совсем верна.


                                                      Например: http://www.akitaonrails.com/2018/04/29/running-arch-linux-over-windows-10

                                                        0

                                                        А как сейчас дела с автозапуском линуксовых демонов? Раньше ее не было. Я до сих пор после перезагрузки делаю sudo service nginx start и т. д. Еще не решили проблему?


                                                        У меня в WSL крутится nginx и php-fpm. Проект средней величины не очень быстро работает, у коллеги на Ubuntu субъективно быстрее.

                                                          –6
                                                          Юзкейсы конечно у каждого свои, однако все кого я знаю сбежавших с Винды на Линукс, убежали не потому что нужны специфичные инструменты (реально, putty вполне хватает, а если нужны специфичные линуксячьи инструменты, то можно вообще поднять маленький дебиан на 500 Мб в виртуалке, и коннектиться туда нативным виндовым putty, а уже оттуда на серверы). Они убежали потому что откровенно бесят новые виндовые повадки.

                                                          Ололо мы обновились, перезагрузиться? Yes\Да?

                                                          Поздравляем, мы только что обновили базу Windows Defender, к сожалению это вас не спасло, поэтому ставьте-ка KAV, и приготовьтесь что из 8-ми ядер вашего новенького Core i7, как минимум четыре будут работать теперь на антивирус;

                                                          Ой, мы случайно запустили новенький скачанный mstiteli_full_hd.torrent.exe и теперь что-то зашифровало наш диск и требует 100500 BTC на кошелек 12345;
                                                          BTC мы не нашли, переустановили винду, полезли ставить торрент клиент, забыли снять галочку, и нам поставилась стопка ускоряйзеров и улучшайзеров от mail.ru, и комплектом яндекс-браузер со встроенной рекламой «а как поднять бабла? чтоб стали другими дела»;

                                                          Ладно, опаздываем на работу. Вы хотите выключить компьютер? А нихрена, мы применяем обновления, ждите.
                                                            +2
                                                            В общем, для тех, кто не осилил поставить Win7 и до сих пор запускает непроверенные экзешники…
                                                              0
                                                              Какой еще Win7?
                                                              Win7 на это устройство вам никто не разрешит поставить, пушо UEFI, USB3.0, тачскрин и отсутствие некоторых драйверов. Ну а вкорячивание 7-рки вопреки всему что я написал будет не легче вкорячивания Убунты.

                                                              И таки вы правы, домохозяйки обожают запускать непроверенные экзешники.
                                                                0
                                                                Ну, так это было прямое решение указанных вами проблем для большинства систем. В худшем случае — отрезаем 10ке автообновление, заодно вместе с телеметрией, гайдов много есть. Ну или LTSB ставим, если Enterprise.

                                                                А домохозяек можно и обучить. В случае Убунту ведь тоже придётся обучать, и побольше. И с софтом что-то решать, если не просто браузером пользоваться…
                                                                  0
                                                                  Ну, так это было прямое решение указанных вами проблем для большинства систем.

                                                                  Это было всего лишь придирание к моим примерам.
                                                                  Проблема не в автообновлении. Проблема не в вирусочувствительности. Проблема не в занимании больших объемов. Проблема не в дебрях меню для тривиальных настроек. Проблема — во всем и сразу.

                                                                  В принципе народ так и решает проблемы с десяткой, ставя другую операционную систему. Просто это оказывается больше не Windows.
                                                                    0
                                                                    Ну, если по религиозным соображениям, то можно и Макось поставить. Я всё к тому, что любая проблема решаема и без радикальной миграции на другую экосистему. К тому же, Убунту, как ни странно, тоже надо настраивать!
                                                                  0
                                                                  И таки вы правы, домохозяйки обожают запускать непроверенные экзешники.

                                                                  Это хоть и некропостинг, но для домохозяек есть GPO, один раз настроил и всё хорошо ;) У меня родителям так настроено и в XP и в 7 и в 10 теперь. Никогда проблем не было, вообще никогда. Антивирус запускается по расписанию, ничего не находит. Постоянная защита как и на Linux не нужна ибо тормозит. Всё прекрасно.
                                                                0
                                                                > Ой, мы случайно запустили новенький скачанный mstiteli_full_hd.torrent.exe

                                                                Не «мы», а «вы».
                                                                  0
                                                                  Не «мы», а «вы».

                                                                  Т.е. вы хотите сказать, что это я один жалуюсь на весь интернет на назойливые сервисы mail.ru, и это я стал инициатором опускания гуглем ранка сайтов с подобными загрузками? Окай :)
                                                                    0
                                                                    Ну я вот не жалуюсь, со своих компов ни разу mail.ru вычищать не приходилось. Наверное, потому, что .torrent.exe запускают всё-таки пользователи, а не система. А если у кого руки из ж.., тот сломает линукс ещё быстрее, чем винду.
                                                                    Тем более, что тот же шифровальщик в линуксе тоже вполне возможен.
                                                                +1
                                                                А они уже научились менять стандартную rootfs локацию ( %localappdata%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs ) на что-то другое?
                                                                У меня диск с windows — SSD и там банально не хватает уже места на еще одну ОС.
                                                                  0

                                                                  А не пробовали руками перенести на другой диск и сделать NTFS Junction point?


                                                                  Я с WSL так не делал, но делал со Steam'ом, чтобы некоторые игры при скачивании обновления использовали HDD

                                                                    0
                                                                    Я последний раз пробовал WSL около года назад и тогда он нормально с junction не работал. MS всё обещал сделать опцию указания rootfs, но видимо не донёс.
                                                                  +1
                                                                  Зависимость от терминала и Linux окружения в моей работе практически сразу привели меня к вопросу…

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

                                                                  Кроме того, данный эмулятор не умеет вкладки

                                                                  Это вы скорее не умеете headless linux: tmux, screens, вот это вот всё.
                                                                  • UFO just landed and posted this here
                                                                      0

                                                                      Сам столкнулся с такой проблемой. Как я понял, запускать Docker прямо из WSL нельзя – WSL Interoperability with Docker.

                                                                        0
                                                                        да, пока радости нет.
                                                                        docker на WSL — вот это была бы революция, пока что использовал WSL только для более удобного доступа к консольным утилитам к которым привык.
                                                                        0
                                                                        image
                                                                        напомнило слегка «Нечто»

                                                                        Only users with full accounts can post comments. Log in, please.