Windows 10 уже как несколько лет умеет использовать GNU/Linux-среду и запускать терминальные программы благодаря Windows Subsystem for Linux (WSL). В свежей инсайдерской сборке Windows 10 WSL расширила свои возможности — теперь пользователи могут запускать Linux-приложения с графическим интерфейсом (GUI). Раньше это можно было делать только при помощи сторонних инструментов. Смотрим, насколько хорошо работает новая фича и как её попробовать уже сейчас.
- В тему: Как выполнять Linux-команды внутри Windows — официальный и сторонние способы
Как работают Linux-программы внутри Windows
По словам разработчиков, X-сервер теперь не приходится запускать вручную. Вместо этого автоматически стартует дистрибутив-компаньон WSLGd, содержащий Wayland, X-сервер и PulseAudio-сервер. С его помощью происходит коммуникация приложений с Windows. Примечательно, что за основу взят дистрибутив CBL-Mariner, разработанный изначально для облачной инфраструктуры Microsoft. После закрытия сессии этот компаньон закрывается.
Возможность расширить Windows Subsystem for Linux таким образом появилась за счёт полного внедрения ядра Linux в ОС от Microsoft. Приложения полноценно интегрированы: они отображаются на панели задач и в «Пуске», между ними можно переключаться сочетанием Alt+Tab, буфер обмена общий.
Одно из преимуществ нативной поддержки GUI-приложений — полноценная работа со звуком. Программы, запущенные в WSL, могут принимать данные с микрофона и выводить аудио. Более того, есть поддержка 3D-графики с ускорением за счёт GPU. Это будет полезно в программах для работы с трёхмерной графикой.
Как запустить Linux-программы в Windows 10
Чтобы запускать GUI-приложения для Linux в Windows 10, надо установить инсайдерскую сборку из Dev-ветки под номером 21364 или выше. После этого потребуется активировать WSL 2 и скачать из Microsoft Store нужный дистрибутив.
Шаг 1. Запустите PowerShell от имени администратора и включите компонент WSL:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
Шаг 2. Включите компонент для WSL 2:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
После этого скачайте и установите пакет обновления с официального сайта.
Шаг 3. Перезагрузите компьютер и введите следующую команду:
wsl —set-default-version 2
Шаг 4. После перезагрузки откройте фирменный магазин приложений Microsoft Store и найдите GNU/Linux-дистрибутив, например, Ubuntu.
Шаг 5. Как только установка завершится, найдите дистрибутив в меню «Пуск» и запустите его.
Шаг 6. Пройдите этап первоначальной настройки, введя имя нового пользователя и придумав пароль.
Шаг 7. Теперь можно устанавливать и запускать Linux-приложения. Для запуска GNU/Linux-окружения открывайте дистрибутив из меню «Пуск» или пишите wsl в PowerShell или командной строке.
Какие приложения я протестировал и как они работают
Я запустил несколько программ: клиент Spotify, браузер Firefox, редактор текста gedit и даже Steam. Все, за исключением последнего, работают отлично. Если ранее с использованием неофициального метода я встречал регулярные вылеты и ошибки, то сейчас могу спокойно пользоваться программами так, как будто они запущены нативно.
Spotify воспроизводит звук так, как и задумано, мне не пришлось дополнительно настраивать что-либо. Firefox работает быстро и плавно, правда, есть проблема в виде медленного скролла — она встречается и под нативным Линуксом. gedit не только правильно работает с файлами, но и отображает всю файловую систему подсистемы при нажатии кнопки Open.
Steam обрадовал и разочаровал одновременно. Мне удалось открыть свою библиотеку игр и даже скачать одну из них. Но остальные вкладки остались недоступны: магазин, страница и настройки просто не открывались. Игра art of rally, которую я скачал для проверки, запустилась, но её фреймрейт ограничивался парой FPS. Впрочем, в реальной жизни такой юзкейс не встретится — это было по большей части испытание возможностей WSL.
Бенчмарк Geekbench 5.4.0 выдал приблизительные результаты как на Windows и нативной Ubuntu, так и на Ubuntu через WSL 2.
А вот в тесте Compute, использующем GPU, WSL 2 выдал ошибку, несмотря на установленный специальный драйвер.
Вывод
Возможность запускать GUI-приложения прямо в Windows — огромный шаг для системы. Пользователям теперь будет куда проще работать с различными программами, часть из которых эксклюзивна для той или иной системы. А бесшовная интеграция Linux-программ в ОС от Microsoft снижает порог входа и позволяет использовать новую фичу даже не самым опытным юзерам.
- 10 приложений, которые нужно сразу установить на новый компьютер
- 5 альтернатив «Проводника» в Windows: они лучше и по функциям, и по дизайну
- 15 тем для Windows 10, меняющих систему до неузнаваемости. Долго искал четвёртую!
- 3 программы, которые прокачают Пуск в Windows 10. Он станет удобнее и функциональнее
- Как выполнять Linux-команды внутри Windows: официальный и сторонние способы
Время прочтения
9 мин
Просмотры 223K
К написанию данной статьи меня побудил вопрос на Тостере, связанный с 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 файла для запуска:
- 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" />
-
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) - 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, поэтому буду пробовать ставить.
Использование Linux- или UNIX-приложений в Windows может быть продиктовано массой причин — от банальной привычки к некоторым программам до невозможности запуска отдельной машины с Linux. Кто-то хочет использовать нативные версии ПО для отладки, а кто-то надеется, что таким способом можно заставить пользователей плавно смигрировать на полноценный дистрибутив.
Прежде чем городить огород с эмуляторами, лучше поищите портированные версии или аналоги ваших любимых программ. Те же GIMP, Audacity, Pidgin и множество других утилит имеют родные сборки не только для Windows, но и для Mac OS X. Для получения какой-то конкретной функциональности зачастую не требуется полноценный аналог софта из Linux. Например, к автодополнению по Tab в оболочке bash привыкаешь очень быстро, а в командной строке Windows этого нет и в помине. Исправить это и другие досадные упущения поможет утилита clink.
Стандартные консольные утилиты, например из пакета GNU Coreutils, давно спортированы на Windows. Есть как довольно старые наборы GNUWin II и UnxUtils, так и постоянно обновляющиеся UWIN (не рекомендуется к использованию) и Gnuwin32. Для последнего по завершении установки базового инсталлятора надо последовательно запустить файлы download.bat и install.bat, а затем скопировать по желанию папку gnuwin32 в любое удобное место и запустить из неё файл update-links.bat. После отработки последнего скрипта в подкаталоге StartMenu будут ссылки на запуск командной строки с окружением GNU и документацию к утилитам.
Обладатели Windows Vista/7 в максимальной и корпоративной версиях, а также серверных версий ОС Microsoft могут вообще не заморачиваться. Для них доступна подсистема для приложений на базе UNIX (Subsystem for UNIX-based Applications, SUA) или сервисы Microsoft Windows для UNIX (Microsoft Windows Services for UNIX, SFU). Этот набор базовых утилит наличествует прямо в компонентах системы. Дополнительные наборы программ можно скачать здесь. Наконец, последнее в списке и первое по популярности решение для запуска UNIX-программ — это Cygwin. Этот пакет прост в установке и содержит далеко не маленький набор приложений, портированных под Windows. Рекомендуется использовать именно его.
Теперь можно поговорить о странном — запуске неродной для Windows системы KDE. Вообще-то проект KDE on Windows существует не первый год, и поначалу пользоваться им было просто невозможно из-за регулярных падений, которые разве что не загоняли несчастную систему в BSOD. Однако разработчики не сидели сложа руки, и в нынешней реинкарнации проекта его можно смело инсталлировать — ошибки довольно редки, да и те — некритичные. Всё сразу ставить смысла, наверное, нет, а вот некоторые приложения могут приглянуться.
К сожалению, портированные приложения далеко не всегда ведут себя так, как в родном окружении, или могут конфликтовать с другими программами. Поэтому единственным выходом, помимо установки «пингвиньей» ОС на голое железо, является эмулирование Linux. Для разового использования можно применить оболочку для QEMU под названием MobaLiveCD, которая без лишних телодвижений поможет запустить LiveCD/USB с различными дистрибутивами. Для постоянного использования лучше инсталлировать Linux в виртуальную машину: в VirtualBox или VMWare Player. Только не забудьте установить гостевые дополнения для более комфортной работы. Альтернативный вариант — применение VDI-решений с возможностью бесшовной интеграции в Windows Linux-приложений, запущенных на отдельном хосте, который также может быть виртуализирован.
Оптимальным вариантом для запуска Linux-приложений является использование среды coLinux. Она, условно говоря, запускает ядро Linux на уровне ядра Windows и имеет доступ ко всем аппаратным ресурсам машины, за счёт чего потерь производительности практически нет. При этом она сохраняет полную совместимость с Linux-приложениями, позволяя напрямую запускать их. На базе coLinux имеются готовые системы для быстрого запуска Portable Ubuntu Remix, Topologilinux (Slackware), SpeedLinux (различные дистрибутивы) и andLinux (Ubuntu). Единственным неприятным ограничением coLinux и всех пакетов на его основе является необходимость использования 32-битной версии Windows 2k/XP/2k3/Vista/7. В качестве примера разберём минимальную настройку Debian Squeeze. Первым делом установим свежую версию coLinux, отказавшись от загрузки готовых образов и попутно инсталлировав WinPcap.
Теперь необходимо скачать архив образа диска с Debian и распаковать его в ту папку, в которую был установлен coLinux. Размер диска rootfs_2gb.img при желании можно увеличить. Файл squeeze.conf придётся немного отредактировать. Изменений минимум — увеличить объём выделяемой RAM (mem), разрешить доступ к диску C: посредством COFS и добавить сетевой интерфейс TAP. Обратите внимание, что при использовании COFS лучше не обращаться одновременно к одним и тем же файлам с папками из Linux и Windows.
kernel=vmlinux cobd0="rootfs_2gb.img" cobd1="swap_128mb.img" root=/dev/cobd0 ro cofs0="C:" initrd=initrd.gz mem=512 eth0=slirp eth1=tuntap
После запуска squeeze.bat вы попадёте в консоль Debian. Логин по умолчанию root, а пароля нет. С помощью nano отредактируем параметры сетевых интерфейсов в файле /etc/network/interfaces. Добавим секцию для eth1. В качестве IP-адреса используем любой, лишь бы не было пересечения с другими локальными подсетями. В Windows в настройках IPv4 сетевого адаптера TAP-Win32 Adapter V8 (coLinux) надо указать адрес из той же подсети.
auto eth1 iface eth1 inet static address 192.168.100.2 netmask 255.255.255.0
Выходим из nano с сохранением изменений — F2, Y, Enter. Теперь создадим папку, куда будет монтироваться диск C:…
mkdir /mnt/windrvc
…добавим одну строчку в конец файла /etc/fstab и сохраним его:
/dev/cofs0 /mnt/windrvc cofs defaults 0 0
Сейчас мы займёмся установкой X-сервера, а пока для простоты пропишем экспорт переменной DISPLAY в файл ~/.profile (это надо будет сделать и для любых других пользователей). В качестве IP-адреса используйте тот, что указан для TAP-адаптера в Windows. После этого можно перезагрузиться командой reboot.
export DISPLAY=192.168.100.1:0
Нелишней будет установка набора шрифтов, в том числе и кириллических. Опционально можно пройтись по каталогам со шрифтами, включая C:WindowsFonts, утилитами mkfontdir и mkfontscale из состава Cygwin. Теперь всё готово для установки X-сервера Xming. Сразу же после этой процедуры добавляем в файл X0.hosts IP-адрес TAP-интерфейса в Debian (в нашем примере это 192.168.100.2).
«Поблагодарим» Windows за бдительность и в стандартном брандмауэре поменяем все правила, касающиеся Xming, с запрещающих на разрешающие, а иначе программы просто не достучатся до X-сервера. Теперь запускаем утилиту XLaunch, в которой можно выбрать режим отображения X-окон и задать дополнительные параметры. Для нас важно настроить поддержку русской и английской раскладок с переключением по Alt+Shift и опционально задать DPI. В конце файл настроек надо сохранить как имя.xlaunch. В дальнейшем по двойному клику по этому файлу X-сервер будет запускаться с заданными нами параметрами.
-xkblayout us,ru -xkbvariant basic,winkeys -xkboptions grp:alt_shift_toggle –dpi 96
Чтобы не было так скучно, установим графический менеджер пакетов synaptic для более удобной инсталляции софта и какую-нибудь легковесную панель с меню приложений, например lxpanel. Последнюю для простоты пропишем в автозапуск при входе, добавив в конец ~/.profile команду lxpanel&.
apt-get update apt-get upgrade apt-get install synaptic lxpanel
Для полноты картины добавим поддержку звука. Скачиваем отсюда архив с Pulseadio и распаковываем его в какой-нибудь каталог, в котором создаём текстовый файл default.pa. Наполняем этот файл нижеследующими строками. Здесь 192.168.100.0/24 — это наша TAP-подсеть.
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.100.0/24 load-module module-esound-protocol-tcp auth-ip-acl=127.0.0.1;192.168.100.0/24 load-module module-detect add-autoload-sink output module-waveout sink_name=output set-default-sink output
Запускаем pulseaudio.exe и в очередной раз идём править разрешения в брандмауэре Windows. В консоли Debian устанавливаем необходимые утилиты и библиотеки.
apt-get install libpulse0 libasound2-plugins alsa-utils
В файле /etc/pulse/client.conf добавляем IP-адрес хост-машины с запущенным сервером Pulseaudio — default-server = 192.168.100.1, а в /etc/asound.conf следующие параметры:
pcm.!default {type pulse} ctl.!default {type pulse} pcm.pulse {type pulse} ctl.pulse {type pulse}
Для проверки работоспособности можно попробовать проиграть один из тестовых файлов.
aplay /usr/share/sounds/alsa/Front_Center.wav
Автоматический запуск Pulseaudio при старте Debian осуществляется добавлением в конец файла конфигурации squeeze.conf такой команды.
exec0="X:путьдопапкиpulseaudiopulseaudio.exe"
Для X-сервера такой трюк не подходит. В принципе, того, что уже сделано, достаточно для работы. Однако неплохо было бы добавить в Linux нового не-root пользователя, настроить для него автологин с mingetty, установить coLinux в качестве службы Windows и прописать Xming в автозапуск. Для удобства можно поставить утилиту Desktops, которая создаёт несколько виртуальных рабочих столов в Windows, и запускать X-сервер в полноэкранном режиме на втором рабочем столе.
В итоге мы получили быструю среду для почти что нативного запуска Linux-приложений в Windows. Её можно использовать для написания и отладки веб-приложений, кросскомпиляции драйверов и прочих задач. Вот только вменяемого ускорения графики для работы тяжёлых приложений пока ещё нет, да 64-битная версия начала разрабатываться всего несколько месяцев назад. Тем не менее coLinux вполне пригоден для повседневного использования. Для дальнейшего изучения возможностей и настроек этой системы обратитесь к вики проекта. Ну а мы на этом пока что закроем тему симбиотических отношений Windows с Linux через разные места. Удачи!
Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.
Как настроить полноценное окружение разработчика, привыкшего к Linux и Mac OS X.
Традиционно считается, что разработчики (в особенности связанные с бэкенд-разработкой) предпочитают использовать unix-like-системы. Причиной тому было немало. Ситуация начала несколько меняться в 2017 году — именно тогда вышел первый стабильный релиз Windows Subsystem for Linux (также известен под более ранним названием BashOnWindows), который дал разработчикам то, чего они так давно ждали, — полноценный Linux в качестве приложения в Windows!
Но не всё оказалось так просто — лишь к концу 2018 года WSL стало возможно использовать полноценно, при этом способ отнюдь не очевиден. О нём и пойдёт речь.
Конечная цель
Для начала пара слов о том, что такое вообще Windows Subsystem for Linux, он же WSL в сокращённом варианте. Это прослойка между ядром Windows и приложениями для Linux, которая позволяет преобразовывать системные вызовы к ядру Linux в вызовы к ядру Windows. Благодаря тому, что виртуализация практически отсутствует, такое решение работает быстрее традиционной виртуализации, где эмулируется целый компьютер, как это происходит в Oracle VirtualBox и VMWare Player.
Кроме того, WSL включает в себя целый ряд утилит для интеграции с Windows — пути в файловой системе автоматически преобразовываются в нужный формат, из-под Linux можно запускать приложения в Windows (но не наоборот!), Linux в WSL имеет доступ ко всем портам и сервисам в Windows.
Для разработчика основное применение WSL сразу же видится в развёртывании среды разработки именно там. Всё же установка многих языков, компиляторов и интерпретаторов, утилит происходит в Linux куда проще — часто одной командой из репозитория. Да и привычная консоль под рукой.
В статье будет рассматриваться именно настройка среды разработки в WSL — для примера возьмём небольшой проект, написанный на Python/Angular/Go (а почему бы и нет?), разрабатываемый в Visual Studio Code. Однако описанные рекомендации в целом подойдут для любого другого редактора или IDE.
Установка для Windows 10 x64
Важный момент: WSL официально поддерживается только в Windows 10 x64, начиная с Anniversary Update. Если у вас иная версия — альтернативное решение представлено в следующем разделе.
- Включить поддержку Windows Subsystem for Unix, открыв PowerShell от администратора и выполнив команду:
PS C:Windowssystem32> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
- Если у вас установлена десктопная редакция Windows 10: зайти в Microsoft Store и установить необходимый вам дистрибутив. Для нашего эксперимента будет использована Ubuntu 18.04 LTS. Затем вы сможете запустить ваш дистрибутив через меню «Пуск».
- Если у вас установлена иная редакция Windows, без Microsoft Store (например, Windows 10 LTSC либо Windows Server): в PowerShell выполнить следующие команды:
PS C:Windowssystem32> cd ~
PS C:Userssomebody> Rename-Item .Ubuntu.appx .Ubuntu.zip
PS C:Userssomebody> Expand-Archive .Ubuntu.zip .Ubuntu
PS C:Userssomebody> cd .Ubuntu
PS C:Userssomebody> .ubuntu1804.exe
При первом запуске необходимо задать ваши логин и пароль.
Далее уже вам откроется консоль с Ubuntu.
Установка для 32-битных редакций Windows 10 и Windows 7, 8 и 8.1
К сожалению, на этих редакциях WSL не поддерживается. Но мы можем без особого труда заменить его Vagrant — мощной утилитой для конфигурирования виртуальных машин. Vagrant работает поверх других сред виртуализации: VirtualBox, VMWare Player или Microsoft Hyper-V. Поэтому стоит понимать, что такой вариант будет по умолчанию медленнее, нежели WSL. А в случае с VirtualBox значительно медленнее из-за файловой системы vboxsf.
Установить Vagrant можно с официального сайта. Также вам потребуется VirtualBox и Git. После этого создайте папку для вашей виртуальной машины, в ней создайте файл Vagrantfile со следующим содержимым:
Vagrant.configure(«2») do |config|
config.vm.box = «bento/ubuntu-18.04»
config.vm.synced_folder «c:/», «/windows»
# Необходимо указать для каждого порта, который вы хотите расшарить из ВМ или в ВМ
config.vm.network :forwarded_port, host: 5432, guest: 5432
config.vm.provider «virtualbox» do |vb|
vb.memory = 2048
end
end
После чего в том же PowerShell или cmd выполните команду:
vagrant up
После загрузки, настройки и запуска виртуальной машины вы попадёте в консоль Linux. Ура!
Устанавливаем всякие скучные вещи
Разворачиваем наше окружение под Python/JS/Go.
:~$ sudo apt update
:~$ sudo apt install build-essential
:~$ sudo apt install -y git nodejs golang python-dev libreadline-dev libbz2-dev libssl-dev libsqlite3-dev libxslt1-dev libxml2-dev libffi-dev
:~$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
:~$ # Инсталлятор попросит вас добавить загрузку pyenv в ~/.bashrc
:~$ source ~/.bashrc
:~$ pyenv install 3.7.2
:~$ pyenv global 3.7.2
Быстро проверяем работоспособность версий и, собственно, версии:
:~$ nodejs -v
v8.10.0
:~$ go version
go version go1.10.4 linux/amd64
:~$ python -V
Python 3.7.2
:~$
Неужели всё уже работает?
Конечно нет.
Сразу стоит отметить важный факт: ни Visual Studio Code, ни Sublime Text, ни даже ваша любимая IDE ничего не знают о существовании WSL. Из коробки более-менее с ним умеют работать только продукты от JetBrains. Лично мне Visual Studio Code по настройке, скорости работы нравится куда больше (но это текстовый редактор, о чём не стоит забывать).
И единственное, что вы можете сделать в Visual Studio Code, установленной на Windows, — подключить себе WSL вместо стандартного PowerShell в терминале. Это делается в User Settings:
{
«terminal.integrated.shell.windows»: «C:\Windows\System32\wsl.exe»,
# Добавьте сюда иные настройки по вашему усмотрению
}
На этом всё. Про линтер, автодополнение кода из библиотек, подсветку ошибок можете забыть, по крайней мере для Python. Способа решения сообщество ждёт вот уже три года. Сейчас самый простой и действенный способ заставить его работать — установить в WSL.
- Установите MobaXterm и Cmder. Конечно, вы можете по своему выбору заменить их на альтернативные приложения. MobaXterm — мощный SSH-терминал со встроенным X-сервером, что позволяет ему рендерить приложения, которые запускаются на удалённом X-сервере (в данном случае — внутри WSL). Cmder — локальный эмулятор терминала с поддержкой PowerShell, cmd, bash, WSL и не только, с нормальным копипастом.
- Запустите Cmder. По умолчанию он запустит cmd, но при двойном клике на нижнюю панель покажет окно, где есть возможные варианты.
- Нам нужен тот вариант, что отмечен как {WSL::bash}. Он запустит в новой вкладке консоль внутри WSL.
- Запустите MobaXterm. Он сразу же увидит WSL, установленную в системе. Для запуска X-сервера нажмите выделенную на скриншоте кнопку.
- Настроим WSL для запуска GUI-приложений. Для этого откройте файл ~/.bashrc и допишите в него:
export DISPLAY=:0
- После этого выполните команду source ~/.bashrc для применения изменений.
- Не обязательно, но желательно установить XFCE (или другой DE на ваш вкус), а также поставить шрифты, иначе от внешнего вида VS Code у вас, возможно, вытекут глаза. По крайней мере, люди жалуются.
:~$ sudo apt install -y xfce4
:~$ sudo apt install -y fonts-noto fonts-noto-hinted fonts-noto-mono fonts-noto-unhinted
- Скачайте установщик Visual Studio Code с официального сайта.
- Установите зависимости и сам VS Code:
:~$ sudo apt install libgtk2.0-0 libxss1 libasound2
:~$ sudo dpkg -i <code deb file>
:~$ sudo apt install -f
- Запустите VS Code при помощи команды code.
Вот теперь работает Ещё более кратко и по сути расписано вот тут.
Однако до совершенства есть ещё один штрих.
{
…
«window.titleBarStyle»: «native»,
…
}
Добавьте приведённую выше настройку в User Settings. В противном случае окно VS Code не будет ресайзиться.
А ты ещё докажи, что работает
Разворачивается оно стандартно для подобного рода проектов.
# You are on a project root
:~$ python -m venv env/
:~$ source env/bin/activate
:~$ pip install -r requirements.txt
:~$ cd frontend
:~$ npm install
:~$ ng build outDir=../backend/microblog/static
:~$ cd ../backend
:~$ python manage.py runserver
Отличия в настройке между Vagrant и WSL
Единственное существенное различие в контексте статьи — необходимость пробрасывать порты в хостовую файловую систему. По умолчанию Vagrant поднимает SSH-туннель на порту 2222 — именно туда вам будет необходимо логиниться из Cmder и добавить соответствующее соединение в MobaXterm.
Более подробно об использовании Vagrant с MobaXterm можно прочитать по ссылке.
Итоги
Но стоит заметить, что даже подобные извращения могут помочь многим людям, вынужденно сталкивающимися с… не всегда очевидным поведением новой технологии от Microsoft.
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), нажать кнопку ОК, и перезагрузить компьютер.
Вы можете включить компоненты 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, установить его. По завершении увидите картинку
Чтобы сделать 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, нажмите кнопку Получить.
Если у вас отключен 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
Если у вашей среды 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
dir | wsl grep Sa
wsl ls ‑la > 123.txt
wsl ls ‑la /proc/cpuinfo
wsl ls ‑la “/mnt/c/Program Files”
Также вы можете открыть проводник командой explorer.exe, калькулятор – calc.exe, блокнот – notepad.exe, paint – mspaint.exe, календарь – cal, погоду – curl wttr.in
Ещё один пример взаимосвязи 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 показывается список файлов с обеих ОС.
Можно отобрахить сетевые настройки (IP адрес) IP-адрес Linux-системы:
ip addr | grep eth0
В WSL не предусмотрена работа приложений с графическим интерфейсом. Тем не менее вы можете попробовать их установить и использовать. Чтобы запускать графические приложения в Linux, нужно скачать и установить в Windows программу VcXsrv Windows X Server (https://sourceforge.net/projects/vcxsrv/).
С помощью пакетного менеджера 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
Вы можете установить в Windows 10 несколько дистрибутивов Linux и запускать одновременно в разных окнах WSL. Вывести весь перечень установленных дистрибутивов можете с помощью команды:
wsl --list –all
чтобы завершить работу всех запущенных дистрибутивов и ядра WSL 2, выполните команду:
wsl --shutdown
Упоминаются ли Linux и Windows вместе?
Если да, то что это за объединение?
Может ли это быть чем-то, что позволит преодолеть разрыв между двумя мирами?
В прошлом люди, использующие технологический стек Microsoft, применяли Windows в качестве среды разработки, в то время как другие, более заинтересованные в сообществе разработчиков с открытым исходным кодом, предпочитали Linux.
До появления подсистемы Windows для Linux (WSL) между ними существовала четкая пропасть, и они никогда ничем не делились.
Но с появлением WSL разработчики теперь могут работать в Linux на своем настольном компьютере версии Windows 10 с помощью подсистемы Windows Subsystem for Linux или Windows WSL.
Запуск системы Linux рядом с системой Windows значительно упрощается и становится более гибким благодаря WSL.
Kali Linux в подсистеме Windows для Linux
Содержание
- Что такое подсистема Windows для Linux?
- Сравнение WSL1 и WSL2
- Для чего нужна подсистема Windows для Linux?
- Зачем использовать WSL вместо Linux на виртуальной машине?
- Как настроить среду разработки WSL?
- Установите дистрибутив Linux
- Создание логина и пароля Linux
- Обновление и модернизация пакетов
- Можно включить больше дистрибутивов
- Настройка терминала Windows
- Хранение файлов
- Выберите редактор кода
- Использование Visual Studio Code
- Использование Visual Studio
- Использование Git для управления версиями
- Настройка Docker для удаленной разработки
- Создание базы данных
- Настройка GPU
- Используйте основные команды WSL
- Монтирование внешнего диска или USB
- Запуск приложений с графическим интерфейсом Linux
- Плюсы и минусы использования подсистемы Windows для Linux
- Плюсы
- Минусы
- Заключение
Что такое подсистема Windows для Linux?
Подсистема Windows Subsystem for Linux (WSL) позволяет исполняемым файлам Linux 64-разрядного формата (ELF64) работать на ядре Windows в операционной системе (ОС) Windows 10.
WSL – это компонент, который позволяет использовать средства разработки Linux на компьютерах Windows, но не рабочие нагрузки.
Изначально он был разработан как вариант установки клиентской системы Windows.
Для администрирования экземпляра Linux в состав WSL входит служба управления сеансами в пользовательском режиме, уменьшенные процессы Pico для обработки системных вызовов Linux и драйверы Pico для имитации ядра Linux.
Такая архитектура позволяет ядру Windows принимать и обрабатывать системные вызовы Linux.
На прошлой неделе компания Microsoft объявила, что Windows Subsystem for Linux версии 2 (WSL2) теперь совместима с Windows Server 2022.
Основными причинами для перехода с WSL 1 на WSL 2 являются:
- Ускорение работы файловой системы
- Поддержка совместимости системных вызовов.
WSL 2 запускает ядро Linux внутри легковесной виртуальной машины с использованием новейшей технологии виртуализации (VM).
Однако WSL 2 не является типичной виртуальной машиной.
Сравнение WSL1 и WSL2
За исключением производительности в файловых системах разных ОС, которую можно решить, храня файлы проекта в той же операционной системе, что и инструменты, используемые для работы над проектом, архитектура WSL 2 по многим параметрам превосходит WSL 1.
Только Windows 11 или 10, версия 1903, Build 18362 или более поздняя поддерживают WSL 2.
Другими ключевыми различиями между обеими версиями являются:
- Архитектурное различие
- Производительность ввода-вывода файлов
- WSL 2 обеспечивает полную совместимость с системными вызовами
На Linux системные вызовы используются для доступа к файлам, запроса памяти и запуска процессов.
В отличие от WSL 1, которая была основана на слое трансляции, созданном командой WSL, WSL 2 имеет встроенное ядро Linux, которое работает со всеми системными вызовами.
Для чего нужна подсистема Windows для Linux?
С помощью подсистемы Windows для Linux вы можете:
- Выбрать дистрибутивы GNU/Linux, которые вы предпочитаете, из магазина Microsoft.
- Запустить бинарники ELF-64 или стандартные инструменты командной строки, такие как grep, sed или awk.
- Запускать программы командной строки GNU/Linux и скрипты оболочки Bash, включая: Инструменты: tmux, emacs и vi, Языки: Go, Rust, NodeJS, Javascript, Python, Ruby, C/C++, C# и F#, Сервисы: PostgreSQL, MongoDB, Apache, MySQL, SSHD и lighttpd.
- Установить дополнительное программное обеспечение с помощью менеджера пакетов в вашем собственном дистрибутиве GNU/Linux.
- Использовать оболочку командной строки, аналогичную Unix, для запуска приложений Windows.
- Запускать программы GNU/Linux на компьютере с Windows.
- Запускать Linux в оболочке Bash (Ubuntu, Debian, OpenSUSE, Kali, Alpine и т.д.). Вы можете использовать Bash для запуска утилит и программ командной строки Linux.
Зачем использовать WSL вместо Linux на виртуальной машине?
WSL использует меньше ресурсов (процессор, память и хранилище), чем целая виртуальная машина.
Наряду с запуском инструментов и приложений командной строки Linux наряду с приложениями командной строки, рабочего стола и магазина Windows, WSL также позволяет вам получать доступ к файлам Windows из Linux и запускать инструменты и приложения командной строки Linux.
Это позволяет использовать как приложения Windows, так и инструменты командной строки Linux на одном и том же наборе файлов.
Как настроить среду разработки WSL?
В составе операционной системы Windows есть подсистема для Linux, которая называется Windows Subsystem for Linux.
Вот краткое руководство по настройке среды разработки WSL:
Установите дистрибутив Linux
Перед включением WSL установите дистрибутив Linux.
Чтобы воспользоваться преимуществами команды упрощенной установки, вы должны использовать последнюю версию Windows (Build 20262+).
Чтобы узнать, какая у вас версия и номер сборки, нажмите клавишу с логотипом Windows + R, введите winver и нажмите OK.
Обновления можно выполнить через меню Настройки или помощник обновления Windows.
Создание логина и пароля Linux
После завершения процесса установки WSL откройте дистрибутив Linux (по умолчанию Ubuntu).
Для вашего дистрибутива Linux должны быть созданы имена пользователей и пароли.
Обновление и модернизация пакетов
Используйте менеджер пакетов вашего дистрибутива для частого обновления пакетов.
Windows не выполняет автоматических обновлений и модернизаций.
Большинство пользователей Linux предпочитают справляться с этой задачей самостоятельно.
Можно включить больше дистрибутивов
Если вы хотите установить больше дистрибутивов Linux через Microsoft Store, вы можете загрузить свой собственный дистрибутив, использовать команду -import или загрузить свой собственный дистрибутив из Интернета.
Кроме того, вы можете создать уникальные образы WSL и распространить их по всей компании.
Настройка терминала Windows
Любое приложение, имеющее интерфейс командной строки, может быть запущено через терминал Windows.
Механизм рендеринга текста с ускорением GPU, множество вкладок и панелей, совместимость с символами Unicode и UTF-8, возможность создания собственных тем, а также возможность изменения текста, цвета фона и ярлыков – вот лишь некоторые из его ключевых особенностей.
При установке нового дистрибутива WSL Linux внутри терминала Windows будет создан его свежий экземпляр, который можно настроить по своему вкусу.
Хранение файлов
Храните файлы проекта на том же компьютере, что и оборудование, которое вы собираетесь использовать.
Наибольшая скорость работы достигается при сохранении файлов в файловой системе WSL (Ubuntu, OpenSUSE и т.д.).
Для сохранения файлов в файловой системе Windows можно использовать командную строку Windows (PowerShell, Command Prompt) и инструменты Windows.
Хотя файлы можно просматривать из любой операционной системы, производительность может заметно снизиться.
Выберите редактор кода
Поскольку они изначально позволяют осуществлять удаленную разработку и отладку WSL, мы советуем использовать Visual Studio Code или Visual Studio.
С помощью Visual Studio Code вы можете использовать WSL как полнофункциональную среду программирования.
Visual Studio обеспечивает встроенную поддержку WSL для кроссплатформенной разработки на C++.
Использование Visual Studio Code
Вы можете использовать WSL в качестве основной среды разработки из VS Code с помощью расширения Remote – WSL и Visual Studio Code.
После установки и настройки VS Code вы можете использовать удаленный сервер VS Code для запуска вашего WSL-проекта.
Использование Visual Studio
Используя один и тот же экземпляр Visual Studio 2022, вы можете собирать и отлаживать проекты CMake на Windows, WSL-дистрибутивах и SSH-соединениях.
Использование Git для управления версиями
Наиболее распространенная программа управления версиями называется Git.
С помощью Git вы можете отслеживать изменения, которые вы вносите в файлы, чтобы иметь запись о том, что было сделано, и при необходимости вернуться к более старым версиям.
Git также облегчает сотрудничество, позволяя объединять правки нескольких авторов в одном хранилище.
Настройка Docker для удаленной разработки
Docker Desktop предлагает среду разработки для создания, распространения и запуска докеризованных приложений для Windows.
Вы можете запускать контейнеры Linux и Windows в Docker Desktop на одной машине, включив механизм на базе WSL 2.
Создание базы данных
Начните с подключения вашего проекта в WSL к базе данных. С MySQL, PostgreSQL, MongoDB, Redis, Microsoft SQL Server или SQLite вы сможете быстро приступить к работе.
Настройка GPU
Подсистема Windows для Linux (WSL) предоставляет отличную среду для запуска наиболее распространенных и популярных приложений машинного обучения с GPU-ускорением, независимо от того, являетесь ли вы специалистом по исследованию данных, инженером по ML или только начинаете работать с ML. Итак, вашим следующим шагом должна стать установка и запуск GPU.
Используйте основные команды WSL
Лучший способ администрирования дистрибутивов Linux, установленных через WSL, – это PowerShell или Windows Command Prompt (CMD).
Монтирование внешнего диска или USB
Используйте WSL 2 для монтирования диска и чтения его содержимого, если вам нужен доступ к диску формата Linux, который Windows не поддерживает.
Процедуры поиска диска и раздела для подключения к WSL2, их монтирования и получения доступа к ним рассматриваются в этом уроке.
Запуск приложений с графическим интерфейсом Linux
Чтобы запускать программы Linux GUI (X11 и Wayland) на Windows в полностью интегрированной среде рабочего стола, теперь вы можете изучить совместимость с Windows Subsystem for Linux (WSL).
Благодаря WSL 2 приложения с графическим интерфейсом Linux на Windows теперь могут ощущаться как родные и интуитивно понятные.
Плюсы и минусы использования подсистемы Windows для Linux
Вот некоторые плюсы и минусы использования Windows Subsystem для Linux.
Плюсы
Идеально подходит для разработчиков, использующих инструменты с открытым исходным кодом
Если вы разработчик, уже использующий инструменты с открытым исходным кодом, ничто не сравнится с подсистемой Windows для Linux.
Она идеально подходит для тех, кто хочет использовать существующий язык разработки и инструменты сборки, или для тех, кто хочет воспользоваться преимуществами своих любимых языков программирования, которые могут работать как в Windows, так и в Linux.
В последние годы поддержка Linux со стороны Microsoft постоянно улучшается, но она все еще не настолько совершенна, как при использовании виртуальной машины или контейнера.
Но если вам нужно запустить свой код на нескольких платформах, это один из единственных вариантов, который позволит вам сделать это без необходимости устанавливать что-либо на свой компьютер.
Совместимость Windows-Linux
Совместимость Windows и Linux обеспечивается с помощью WSL.
Файловая система как Windows, так и Linux доступна для просмотра.
Кроме того, они могут запускать программы из командных интерпретаторов друг друга.
Это может привести к появлению некоторых интригующих приложений и, возможно, к переходу от рассмотрения этих двух систем как конкурентов к рассмотрению их как взаимодополняющих параметров.
Проще, чем двойная загрузка или виртуальные машины
Вам не нужно перезагружаться или запускать виртуальную машину, поскольку WSL уже работает в Windows.
При установке системы с двойной загрузкой необходимо оставить место на жестком диске и убедиться, что у вас есть резервный носитель для загрузки в случае, если что-то пойдет не так.
Вы должны перезагрузить систему, если хотите использовать Windows для выполнения программ Linux или наоборот.
Хотя виртуальная машина (VM) является более простой и быстрой в настройке, Windows и Linux сталкиваются с трудностями при обмене данными, поскольку VM все еще является принципиально другой машиной.
На виртуальной системе часто требуется настройка файлового сервера. Кроме того, виртуальные машины имеют стоимость производительности.
Простое введение в Linux для пользователей Windows
Для тех, кто не знаком с Linux, WSL может стать лучшей отправной точкой.
Они могут познакомиться с командами Linux, не устанавливая полностью новую операционную систему. WSL можно установить всего несколькими щелчками мыши из магазина Microsoft Store.
Кроме того, это облегчит людям переход на Linux.
Минусы
Вы продолжаете использовать Windows
Поскольку использование WSL все равно подразумевает участие в этой экосистеме, ее использование вызывает возражения у тех, кто идеологически не приемлет Microsoft и проприетарное ПО.
WSL будет поддерживать участие в этой системе.
Для ярых сторонников свободного программного обеспечения не подойдет ничто иное, как ПК под управлением свободной версии GNU/Linux.
WSL создавалась не для серверов
Дистрибутивы не предназначены для работы в качестве серверов, хотя WSL может быть установлена на Windows Server.
Запустить такие серверы, как Apache или MariaDB на Ubuntu сложнее, поскольку система не поддерживается.
Большинство пользователей, которым требуются серверы, устанавливают обычные Linux-серверы, поэтому этот недостаток может быть не столь существенным.
WSL может препятствовать внедрению Linux на настольных компьютерах
Меньшему числу пользователей может понадобиться установка настольной версии Linux, поскольку WSL совместима с Windows.
Учитывая, что у них уже есть настольная система Windows и они могут запускать приложения Linux GUI на Windows, они могут не видеть необходимости в установке совершенно новой настольной ОС.
Предположим, что только крошечный процент пользователей Linux работает с полным рабочим столом.
В этом случае, возможно, не будет прилагаться столько усилий для улучшения совместимости оборудования, что может только усугубить проблемы с рабочим столом Linux.
Заключение
В своем нынешнем виде WSL – это довольно крутой прогресс в Windows.
Разработчики, работающие в Windows, могут получить доступ к среде Linux благодаря Windows Subsystem for Linux.
WSL предлагает ядро Linux и позволяет установить несколько дистрибутивов внутри среды Windows, устраняя необходимость запускать виртуальную машину или полагаться на удаленный компьютер с Linux для разработки.
Конечная цель – предоставить простой способ запуска Linux в Windows.
Самое главное, WSL не занимает много памяти (например, около 256 МБ для Bash), что означает, что ваша машина может работать быстрее и плавнее.
В этом документе показано, как скомпилировать и запустить программу C в Ubuntu Linux с помощью компилятора gcc.
- Откройте терминал. Найдите приложение терминала в инструменте Dash (расположенном в самом верхнем углу панели запуска).
- Используйте текстовый редактор для создания исходного кода C. Введите команду.
- Скомпилируйте программу.
- Запустить программу.
Как я могу запускать игры для Linux в Windows?
Сначала загрузите Wine из репозиториев программного обеспечения вашего дистрибутива Linux. После его установки вы можете загрузить файлы .exe для приложений Windows и дважды щелкнуть их, чтобы запустить их с помощью Wine. Вы также можете попробовать PlayOnLinux, необычный интерфейс поверх Wine, который поможет вам установить популярные программы и игры для Windows.
Как запустить xwindows в Windows?
Запускайте X-сервер на своем ПК, то есть Xming, либо каждый раз, когда вы перезагружаете компьютер, либо всякий раз, когда вы хотите использовать X Windows: нажмите кнопку «Пуск».
Запуск сеанса X Windows с туннелированием SSH X11
- Нажмите кнопку «Пуск».
- Выберите Все программы >> PuTTY >> PUTTY.
- Выберите сеанс с поддержкой X11 и нажмите «Загрузить».
- Имя.
Как запускать команды Linux в Windows 10?
Чтобы установить оболочку Bash на ПК с Windows 10, сделайте следующее:
- Открыть настройки.
- Щелкните Обновление и безопасность.
- Щелкните Для разработчиков.
- В разделе «Использовать функции разработчика» выберите параметр «Режим разработчика», чтобы настроить среду для установки Bash.
- В окне сообщения нажмите Да, чтобы включить режим разработчика.
Как запустить программу с терминала?
Выполните следующие действия, чтобы запускать программы на терминале:
- Открыть терминал.
- Введите команду для установки компилятора gcc или g ++:
- Теперь перейдите в ту папку, в которой вы будете создавать программы на C / C ++.
- Откройте файл с помощью любого редактора.
- Добавьте этот код в файл:
- Сохраните файл и выйдите.
- Скомпилируйте программу, используя любую из следующих команд:
Как установить загруженное программное обеспечение в Linux?
Как вы компилируете программу из исходного кода
- откройте консоль.
- используйте команду cd, чтобы перейти к нужной папке. Если есть файл README с инструкциями по установке, используйте его.
- извлеките файлы с помощью одной из команд. Если это tar.gz, используйте tar xvzf PACKAGENAME.tar.gz.
- ./настроить.
- делать.
- судо сделать установить.
Что мне следует использовать для программирования: Linux или Windows?
Visual Basic поддерживает только Windows, но вы можете использовать Apple Swift. Как правило, если язык программирования не ограничен определенной операционной системой, он, скорее всего, работает в Linux.
Почему Linux лучше Windows?
Linux намного стабильнее Windows, он может работать в течение 10 лет без единой перезагрузки. Linux имеет открытый исходный код и полностью бесплатен. Linux намного безопаснее, чем ОС Windows, вредоносные программы Windows не влияют на Linux, а вирусы для Linux гораздо меньше по сравнению с Windows.
Как я могу запустить Linux в Windows 7?
1:06
1:43
Предлагаемый клип 32 секунды
Как установить Linux на Windows 7 — YouTube
YouTube
Начало предложенного клипа
Конец предложенного клипа
Как запустить файл VcXsrv?
Установить VcXsrv
- Загрузите и запустите последнюю версию установщика.
- Найдите ярлык VcXsrv в меню «Пуск». Щелкните по нему правой кнопкой мыши. Выберите Еще> Открыть расположение файла. Скопируйте файл ярлыка VcXsrv.
- Вставьте ярлык в% appdata% Microsoft Windows Start Menu Programs Startup.
- Запустите VcXsrv в первый раз.
Как включить переадресацию x11 в Windows?
Чтобы использовать SSH с перенаправлением X в PuTTY для Windows:
- Запустите приложение X-сервера (например, Xming).
- Убедитесь, что в настройках подключения к удаленной системе выбрано Включить пересылку X11; в окне «Конфигурация PuTTY» см. Подключение> SSH> X11.
- Откройте сеанс SSH с желаемой удаленной системой:
Как установить приложения Linux в Windows 10?
Прежде чем вы сможете установить любую версию Linux в Windows 10, вы должны установить WSL с помощью панели управления.
- Открыть настройки.
- Нажмите на приложения.
- Щелкните Приложения и функции.
- В разделе «Связанные настройки» справа щелкните ссылку «Программы и компоненты».
- Щелкните ссылку Включение или отключение компонентов Windows.
Могу ли я запустить bash в Windows?
Программное обеспечение, устанавливаемое в оболочке Bash, ограничено оболочкой Bash. Вы можете получить доступ к этим программам из командной строки, PowerShell или где-либо еще в Windows, но только если вы запустите команду bash -c.
Как запустить скрипт в Windows 10?
Как запустить файл сценария PowerShell
- Откройте «Старт».
- Найдите PowerShell, щелкните правой кнопкой мыши верхний результат и выберите параметр «Запуск от имени администратора».
- Введите следующую команду, чтобы разрешить запуск сценариев, и нажмите Enter:
- Введите A и нажмите Enter.
- Введите следующую команду, чтобы запустить сценарий, и нажмите Enter:
Могу ли я выполнить двойную загрузку Windows 10 и Linux?
В современном дистрибутиве Linux процесс установки с двойной загрузкой довольно прост. Загрузите его и создайте установочный USB-носитель или запишите его на DVD. Загрузите его на ПК, на котором уже установлена Windows — возможно, вам придется повозиться с настройками безопасной загрузки на компьютере с Windows 8 или Windows 10.
Как запустить программу с терминала в Windows?
Шаги
- Откройте меню «Пуск» вашего компьютера.
- Введите и выполните поиск cmd в меню «Пуск».
- Щелкните Командная строка в меню Пуск.
- Введите cd [путь к файлу] в командной строке.
- Найдите путь к папке, в которой находится ваша исполняемая программа.
- Замените [путь к файлу] в команде на путь к файлу вашей программы.
Как скомпилировать C в Windows?
Создайте исходный файл C и скомпилируйте его в командной строке
- В окне командной строки разработчика введите cd c: , чтобы изменить текущий рабочий каталог на корень вашего диска C :.
- Введите notepad simple.c в командной строке разработчика.
- В Блокноте введите следующие строки кода:
Как запустить программу в Ubuntu?
В Ubuntu Unity вы можете найти Ubuntu Software Center в Dash и щелкнуть по нему, чтобы открыть:
- Запустите программный центр Ubuntu.
- Проверьте подробности, а затем установите программное обеспечение.
- Предоставьте партнерам Canonical доступ к дополнительному программному обеспечению.
- Найдите установленное программное обеспечение и удалите его.
Где установлены программы для Linux?
Это связано с тем, что Linux перемещает установленный файл в каталоги отдельно в зависимости от их типа.
- Исполняемый файл находится в / usr / bin или / bin.
- Значок идет в / usr / share / icons или в ~ / .local / share / icons для локальных.
- Все приложение (портативное) на / опт.
- Ярлык обычно находится в / usr / share / applications или ~ / .local / share / applications.
Что такое apt get install?
Вы можете использовать его для поиска и установки новых пакетов, обновления пакетов, очистки пакетов и т. Д. В нем есть два основных инструмента: apt-get и apt-cache. apt-get предназначен для установки, обновления и очистки пакетов, в то время как apt-cache используется для поиска новых пакетов.
Как установить программу в терминал Linux?
Установка приложения с помощью пакета в Ubuntu вручную
- Шаг 1: Откройте терминал, нажмите Ctrl + Alt + T.
- Шаг 2: Перейдите в каталоги, в которых вы сохранили пакет .deb в своей системе.
- Шаг 3: Для установки любого программного обеспечения или внесения каких-либо изменений в Linux требуются права администратора, которые в Linux — это SuperUser.
Какая операционная система самая безопасная?
10 самых безопасных операционных систем
- OpenBSD. По умолчанию это самая безопасная операционная система общего назначения.
- Linux. Linux — превосходная операционная система.
- Mac OS X.
- Windows Server 2008.
- Windows Server 2000.
- ОС Windows 8.
- Windows Server 2003.
- Windows XP.
Какая ОС лучше всего Linux или Windows?
На самом деле Linux — это очень хорошо разработанная операционная система, и некоторые люди утверждают, что это лучшая ОС, даже лучше, чем Windows.
Какая операционная система лучше всего подходит для ПК?
- ChaletOS. © iStock. ChaletOS — это бесплатный дистрибутив Linux с открытым исходным кодом, основанный на Xubuntu.
- SteamOS. © iStock. SteamOS — это операционная система Linux на основе Debian, созданная Valve Corporation.
- Дебиан. © Айкок.
- Убунту. © Айкок.
- Федора. © Айкок.
- Солус. © iStock.
- Линукс Минт. © Айкок.
- РеактОС. © Айкок.
Могу ли я одновременно запускать Windows и Linux?
3 ответа. Короткий ответ: да, вы можете одновременно запускать и Windows, и Ubuntu. Затем вы установите программу в Windows, например Virtualbox или VMPlayer (назовите ее VM). Когда вы запустите эту программу, вы сможете установить другую ОС, например Ubuntu, внутри виртуальной машины в качестве гостя.
Как использовать команду Linux в Windows?
Самые распространенные варианты:
- Установите Git для Windows. Он также установит Git Bash, командную строку, поддерживающую большинство команд Linux.
- Установите Cygwin.
- Установите виртуальную машину (например, VirtualBox), а затем установите сверху дистрибутив Linux (например, Ubuntu).
Могу ли я запустить Windows 7 и Linux на одном компьютере?
Google и Microsoft отказались от планов Intel по двойной загрузке ПК с Windows и Android, но вы можете установить Windows 8.1 вместе с Windows 7, иметь как Linux, так и Windows на одном компьютере или установить Windows или Linux вместе с Mac OS X.
https://commons.wikimedia.org/wiki/File:WPCleaner_-_Installer.png