Включение подсистемы Linux в Windows 10 / ESET NOD32 corporate blog / Habr
Недавно мы опубликовали пост про новый билд Windows 10 Insider Preview Build 14316, в котором говорилось про подсистему Ubuntu Linux в этой ОС. Нам написали многие пользователи, которые столкнулись с тем, что не смогли сразу обнаружить эту подсистему и запустить командный интерпретатор bash. Действительно, эта подсистема выключена по умолчанию, а ее драйверы LXss.sys и LXCore.sys не располагаются в системной директории (см. WinSxS). Для тех пользователей, которые не смогли разобраться с данной проблемой, мы укажем шаги по включению подсистемы и проверке ее активности.Для включения подсистемы следует выполнить следующие шаги:
- Активировать режим разработчика (Developer Mode). Без него Windows 10 откажется устанавливать подсистему Ubuntu Linux.
- Включить компонент подсистемы в настройках Windows.
- Установить подсистему (выполняется автоматически.)
Рис. Настройка функций developer по умолчанию, нужно выбрать Developer mode (Start->Settings->Update and security).
Рис. Подтверждаем.
Рис. В том же окне, в поиске набираем «Windows features».
Рис. Ставим галочку напротив «Windows Subsystem for Linux (Beta)».
Рис. Запускаем командный интерпретатор Windows — cmd, набираем bash и дожидаемся установки Linux.
Рис. Появившиеся в системной директории драйверы Linux.
Рис. Активный сервис подсистемы Linux.
Опыт настройки и использования WSL (подсистемы Linux в Windows 10) / Habr
К написанию данной статьи меня побудил вопрос на Тостере, связанный с 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 файла для запуска:
- 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%\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, поэтому буду пробовать ставить.
12 причин, почему Linux лучше Windows
Windows — самая популярная операционная система, и это вполне заслуженно. Она прошла долгий путь, постоянно совершенствуясь и развиваясь. Однако, хотя Microsoft и утверждает, что «Десятка» — лучшее её творение, в некоторых вещах Linux значительно превосходит Windows.
1. Удобная реализация обновлений
Наверное, нам всем знакома такая ситуация. Включаешь поутру компьютер, чтобы заняться важной и срочной работой, и Windows 10 внезапно радует голубоватым экраном и надписью «Идёт работа с обновлениями». Видимо, Microsoft намекает, что ваши дела могут и подождать. А если у вас не самая мощная конфигурация, обновление может длиться неприлично долго.
Да, из операционной системы вырезали принудительную перезагрузку, и теперь вы можете назначить интервал, в течение которого компьютер должен от неё воздержаться. Но всё равно в Home-версии Windows 10 вам не позволят откладывать обновления дольше, чем на 12 часов. Некоторых пользователей эта необходимость раздражает настолько, что они прибегают ко всяческим хитростям, чтобы отключить функцию.
В Linux проблема с долгим обновлением, в течение которого вы не можете ничего делать, отсутствует. Все патчи устанавливаются фоном, пока вы работаете, сёрфите в интернете или слушаете музыку, и никак не мешают пользоваться компьютером. А перезагрузка после обновления в Linux происходит как обычно — никаких надписей «Осталось 28%», висящих по часу. И наконец, вы можете просто забить на обновления операционной системы и не устанавливать их — она не будет пытаться вам возражать.
2. Простая установка приложений
Вам никогда не казалось, что Windows Store, как бы это помягче сказать, немного бесполезен? Нет, конечно, и в нём при желании можно найти стоящие приложения.
Но по большей части, когда нам нужно установить какую-то программу, мы открываем браузер и отправляемся на сайт разработчика ПО, чтобы скачать оттуда установочный файл. А затем открыть его, разрешить исполнение, несколько раз понажимать кнопку «Далее»… Куча лишних действий.
Во всех популярных дистрибутивах Linux имеются удобные магазины приложений, которые скачивают и устанавливают программы из репозиториев (сетевых источников). И это очень удобно.
Вам нужно установить Firefox, Skype или Telegram? Не надо искать их в Google. Отметьте их в магазине или менеджере пакетов, нажмите одну кнопку «Установить», и спустя несколько секунд они появятся на вашем компьютере.
Ещё один плюс репозиториев Linux в том, что обновления для всех программ приходят из одного источника и устанавливаются одновременно. Вместе с патчами системы обновится ещё и браузер, и видеоплеер, и всё прочее.
В Linux отсутствует ситуация, когда вы запускаете программу, она предлагает обновиться, и вам приходится ждать, пока скачается и установится новая версия.
3. Отсутствие навязчивых программ
В Windows 10 встроено огромное количество так называемых универсальных приложений. Некоторые из них, вроде «Почты» и «Календаря», могут быть полезными.
Но зачем вам нужны «Портал смешанной реальности», если у вас нет VR-гарнитуры, «Средство 3D-просмотра», если вы не моделист, и Xbox, если вы не играете на приставке от Microsoft? Причём в Home-редакции Windows новые приложения, о которых вы не просили, вполне могут устанавливаться сами, если Microsoft решит, что они вам нужны.
Присутствие таких программ в меню «Пуск» только раздражает, а ещё они занимают лишнее место на диске. Конечно, их можно отключить или удалить, но для этого понадобятся время и лишние телодвижения.
В Linux такой проблемы нет. Система никогда не будет навязывать вам те или иные приложения, уговаривать использовать какой-то конкретный браузер по умолчанию и устанавливать что-либо без спросу. Если вам нужна готовая система со встроенными офисами, калькуляторами и проигрывателями — скачайте дистрибутив, где всё это включено по умолчанию, и пользуйтесь.
Хотите сами контролировать, что и как будет установлено на вашем компьютере? Начните устанавливать систему с помощью Net Installer и отметьте галочками, какие программы вам нужны, а какие нет. Ничего лишнего.
4. Небольшой вес системы
Windows 10 довольно тяжёлый вариант, который занимает много места на диске. В среднем после инсталляции и загрузки всех обновлений заполнится 25–35 ГБ в системном разделе. А ведь вам ещё предстоит установить браузер, офисный пакет, медиапроигрыватель и всё такое в этом духе.
Особенно это «обрадует» владельцев бюджетных ноутбуков с малым объёмом встроенной памяти. Один только установочный ISO-файл Windows 10 весит больше 4 ГБ — интересно, что же они туда такого впихнули?
Дистрибутив же Linux Mint, например, весит 1,8 ГБ, и в нём уже имеется и офисный пакет, и медиапроигрыватели, и средство для создания бэкапов, и ещё уйма всего. После установки он займёт где-то 4,8 ГБ. Причём это довольно тяжеловесный дистрибутив. А есть и совсем крошечные, которые съедят не больше 700 МБ.
5. Высокий уровень быстродействия
Обладатели не самых быстрых и новых компьютеров и ноутбуков, на которых была установлена ещё Windows 7, наверняка замечали, какой неспешной становится система после обновления до «Десятки». Особенно это видно на устройствах без SSD. Когда Windows 10 пытается устанавливать в фоне обновления или загружает программы из Microsoft Store, компьютер буквально начинает «выть» всеми вентиляторами.
Linux обладает куда меньшими требованиями к железу и способна летать даже на весьма скромных конфигурациях, что делает эту операционную систему идеальным кандидатом к установке на маломощных или старых компьютерах. Некоторые дистрибутивы способны вполне неплохо существовать на устройствах с объёмом оперативной памяти в 128 МБ!
6. Настраиваемый интерфейс
В интерфейсе Windows 10 мало что можно поменять. Вы можете экспериментировать с цветом окон или темой оформления, добавить или удалить плитки в меню «Пуск». Но это, в общем-то, и всё. Поменять форму окон и панели задач, переместить панель уведомлений с правого края либо изменить что-то ещё у вас не получится. Придётся пользоваться тем, что придумали дизайнеры Microsoft.
Linux предоставляет пользователям практически полную свободу настройки. В ней есть очень много оболочек рабочего стола, которые можно менять так, как пожелаете. Хотите суперсовременный интерфейс с кучей прозрачностей, всплывающих окон и прочих «плюшек»? Или, может, вам нужны крупные иконки и элементы меню под сенсорный дисплей? Либо предпочитаете консервативный и минималистский вариант для маломощного компьютера? Выбор велик.
7. Гибкое управление
Microsoft считает, что ей виднее, как вам следует пользоваться компьютером. Кнопки управления окнами расположены справа, и не вам с этим спорить. Выбранное окно нельзя закрепить поверх других (без использования сторонних инструментов) — значит, вам это и не нужно. Вывести кнопки выключения и перезагрузки из «Пуска» на таскбар — вы о чём вообще? А активный угол тут всего один — нижний правый, и он сворачивает все окна. Ничего больше делать он не должен.
В противоположность этому, Linux позволяет настраивать поведение интерфейса по своему желанию. Если вы предпочитаете использовать активные углы для запуска программ, вам достаточно включить их в настройках. Нужна глобальная строка меню, как в macOS? Практически в любой оболочке её можно добавить, просто установив нужное расширение. Да что уж там, даже порядок и расположение кнопок управления окном можно менять.
8. Высокий уровень безопасности
Хотя Microsoft проделала большую работу над повышением безопасности в «Десятке» и даже встроила туда собственный неплохой антивирус, Windows всё ещё остаётся уязвимой системой. Именно для неё создаётся больше всего вирусов и вредоносных программ.
Ещё одна проблема Windows — adware-программы. Вы скачиваете какую-нибудь полезную штуковину, запускаете установщик, опрометчиво не взглянув на галочки, и вам в довесок ставится чужая домашняя страничка в браузер, куча тулбаров и расширений, какой-нибудь «Яндекс.Браузер» и всякое подобное добро. Такими грязными приёмчиками грешат даже очень качественные и популярные программы. Тот же проигрыватель AIMP, к примеру.
В Linux же практически полностью отсутствуют вирусы. Adware в нём тоже нет. И не нужно переживать о том, что вы что-то не так сделаете и установите какую-нибудь гадость.
9. Бесплатные дистрибутивы
Прошло время, когда обновление до Windows 10 можно было получить бесплатно. Сейчас за лицензионную домашнюю версию «Десятки» придётся выложить 199 долларов, а за Pro-редакцию и того больше. Если вы не готовы отстёгивать из своего кармана эти деньги, а становиться пиратом вам не позволяет совесть, попробуйте Linux.
Эта система полностью бесплатна. Вы можете загрузить любой дистрибутив с официального сайта, установить его, и он никогда не попросит у вас денег и не заставит сомневаться в своей «подлинности».
Есть, конечно, несколько дистрибутивов Linux с платной коммерческой поддержкой, вроде Red Hat Enterprise Linux. Но они ориентированы на корпоративное использование и дома не нужны.
10. Бесплатные программы
Даже после покупки Windows 10 ваши траты ещё не закончились. На очереди — приобретение пакета Microsoft Office или какого-нибудь графического редактора типа Adobe Photoshop. Ещё один удар по карману.
В магазинах приложений Linux же просто куча бесплатных программ, устанавливаемых одним щелчком. Графические и офисные редакторы, варианты для обработки видео, архиваторы и прочее добро. Конечно, бесплатные аналоги несколько уступают коммерческим, но для домашнего использования их хватит.
11. Полная конфиденциальность и приватность
О телеметрию в Windows 10 сломано немало копий. Система старательно отсылает в Microsoft сведения о том, какие приложения вы устанавливаете, какие сайты посещаете и где находитесь. Конечно, данные эти обезличены, да и вообще всё ради вашего же блага.
Правда, покопавшись в настройках, эту особенность системы можно отключить, но нет гарантии, что со следующим обновлением она не активируется снова.
Linux лишена телеметрии. В крайнем случае в некоторых дистрибутивах вы можете вручную отправить разработчикам отчёт об ошибке, и перед этим система спросит вашего разрешения. Впрочем, это необязательно и легко отключается.
12. Большое разнообразие дистрибутивов
Windows 10 по большому счёту существует только в двух ипостасях — Home и Pro (есть ещё всякие Enterprise и Enterprise LTSB, но они не для простых смертных). Разница между ними невелика: в Pro-версии чуть больше функций и возможностей, но они все надёжно упрятаны в недрах операционной системы и не особо интересны рядовому пользователю.
Linux же очень разнообразна. Существует большое количество дистрибутивов, которые могут удовлетворить самые разные потребности. Для комфортной домашней работы есть Linux Mint и Ubuntu, для любителей красивостей — Kubuntu и Neon, для фанатов всего нового и экспериментального — Arch и Manjaro.
А ещё есть дистрибутивы для программистов, для параноиков, для обладателей старого железа, для создания медиацентров и домашних серверов… Есть из чего выбирать. Загляните, например, на сайт DistroWatch и посмотрите, что там есть из популярного.
Читайте также 🧐
Windows 10 Fall Creators Update и подсистема Windows для Linux / RUVDS.com corporate blog / Habr
Системные администраторы и разработчики! Похоже, на вашей улице настал праздник. WSL, начиная с последнего обновления, так называемого Fall Creators Update, стала полноправной частью Windows 10.Хотите пользоваться Linux на Windows с помощью подсистемы WIndows для Linux (Windows Subsystem for Linux, WSL), но вас тревожит то, что WSL пока имеет статус бета-версии и доступна только в режиме разработчика Windows 10? Теперь можно не беспокоиться. Дело в том, что в Windows 10 Fall Creators Update (WinFCU) WSL может быть запущена любым пользователем.
WSL, эта комбинация оболочки Bash и Windows, которую тестировали более года, в WinFCU приобретёт множество новых функций.
Кроме того, что WSL переросла статус бета-версии и больше не требует использовать режим разработчика, среди её новых возможностей стоит отметить следующие:
- Установка дистрибутивов Linux из Windows Store.
- WSL теперь поддерживает запуск нескольких дистрибутивов Linux.
- WSL доступна в Windows Server и в виртуальных машинах Microsoft Azure.
- WSL теперь поддерживает обмен данными по USB/serial.
- Различные исправления и улучшения.
Помимо Ubuntu, новая WSL теперь поддерживает openSUSE — дистрибутив сообщества SUSE, и его корпоративный вариант SUSE Linux Enterprise Server (SLES). Кроме того, ожидается, что скоро в Windows Store появятся Fedora и другие дистрибутивы.
Если вы уже пользовались WSL, существующая установка Ubuntu продолжит работать, но этот вариант считается устаревшим и не будет поддерживаться. Для того, чтобы пользоваться техподдержкой, надо заменить существующий экземпляр Ubuntu на новый, из Windows Store. Если этого не сделать, не получится получить поддержку ни от Canonical, ни от Microsoft.
Для того, чтобы сохранить старые файлы, их лучше всего заархивировать с помощью tar и скопировать в файловую систему Windows, например, в /mnt/c/temp/backups
, а потом скопировать в новый экземпляр Ubuntu.
Кроме того, теперь можно установить несколько дистрибутивов Linux из Windows Store на одной Windows 10-системе.
Для того, чтобы это сделать сначала надо активировать WSL в окне Включение или отключение компонентов Windows
, после чего — перезагрузить систему. Надо отметить, что WSL по умолчанию не активна, и то, что после её включения придётся перезагрузиться.
После перезагрузки нужно выполнить поиск по слову Linux
в Windows Store, выбрать подходящую систему и установить её.
Если в WSL уже есть установленный экземпляр Bash, вы можете начать всё сначала с помощью команды lxrun /uninstall/. Для этого можно воспользоваться командной строкой или PowerShell.
Помимо возможности устанавливать несколько дистрибутивов Linux, теперь несколько дистрибутивов можно и одновременно запускать. Каждый из них работает независимо от других. Здесь не применяются ни виртуальные машины, ни контейнеры. Это означает, что дистрибутивам понадобятся их обычные системные ресурсы. Я например, запускал бы несколько дистрибутивов на системе, в которой на каждый работающий экземпляр WSL имеется по 2 Гб дополнительной памяти.
Сама по себе WSL требует минимальных системных ресурсов. Рич Тёрнер, старший руководитель программы WSL и Windows Console в Microsoft, написал следующее: «Мы не приводим [требования к оперативной памяти], так как, честно говоря, об этом особо нечего сказать. Если вы не устанавливали WSL, дополнительная память не используется. Если вы включили WSL, на короткое время загружается маленький драйвер размером 850 Кб, а затем, до запуска дистрибутива Linux, он выгружается. При запуске загружается /init
, который запускает /bin/bash
. Это приводит к загрузке драйвера, занимающего 850 Кб и к созданию пико-процессов для init
и bash
. Поэтому, в целом, требования WSL к памяти соответствуют требованиям средств Linux, с добавлением примерно 1 Мб».
Дистрибутивы Linux могут, кроме того, работать с файловой системой хост-машины, управляемой Windows, с сетевым стеком, и так далее. Это означает, что к изменению данных в файловой системе Windows следует относиться с осторожностью.
Зачем может понадобиться одновременный запуск нескольких дистрибутивов Linux? Microsoft говорит об этом следующее: «Возможность запускать различные дистрибутивы Linux позволяет вам использовать одни и те же инструменты, пакетные менеджеры, или экосистемы и окружение, где будет выполняться ваш продакшн-код. Это ведёт к уменьшению потерь времени на поиск труднообнаружимых ошибок при развёртывании кода. Это позволяет, например, использовать браузеры Edge, Chrome и Firefox на Windows для просмотра веб-сайта, работающего на сервере Apache, установленном на Ubuntu, который взаимодействует с REST-службой, работающей на openSUSE… без необходимости задавать правила файрвола при локальном тестировании, так как все эти процессы работают по одну сторону файрвола, рядом друг с другом!».
Разработчикам Linux понравится поддержка передачи данных по USB/serial. Это позволит приложениям и сценариям командной строки взаимодействовать с последовательными портами.
Кроме того, WSL теперь поддерживает монтирование USB-накопителей и общих сетевых ресурсов. Это — хорошая новость. Плохая новость заключается в том, что она поддерживает только инфраструктуру ввода-вывода файловой системы NT. Другими словами, работать можно только с носителями, отформатированными в файловых системах FAT/FAT32/NTFS. Как насчёт файловых систем *nix? Можете голосовать, комментировать, или делать и то и другое в ветке этого запроса на UserVoice.
Если углубиться в детали улучшений, то обновлённая WSL в WinFCU включает в себя следующее:
- Улучшенные параметры TCP, в частности,
IP_OPTIONS
,IP_ADD_MEMBERSHIP
,IP_MULTICAST
, и другие. - Теперь
/etc/hosts
наследует записи из файлаhosts
Windows. - Поддержка системных вызовов, имеющих отношение к
xattr
. - Исправление некоторых функций, связанных с файловой системой.
- Улучшена поддержка
PTRACE
. - Улучшена поддержка
FUTEX
. - Теперь здесь работает
chsh
, что позволяет менять оболочки. В частности, теперь любимую оболочку можно использовать напрямую. При старте оболочки будут исполняться и файлы, отличные от.bashrc
.
В Fall Creators Update были добавлены следующие системные вызовы:
Prlimit64
getxattr
,setxattr
,listxattr
,removexattr
Как и ожидалось, WSL будет доступна на платформе Windows Server и на виртуальных машинах Windows в Microsoft Azure. Это рассчитано на системных администраторов.
Благодаря всем этим улучшениям разработчикам и системным администраторам будет проще пользоваться командами оболочки Linux в Windows. В то время, как обычному пользователю ПК подобное, возможно, не окажется особенно полезным, для IT-профессионалов это — шаг вперёд. Это расширяет возможности Windows в мире серверов и облачных служб, в котором сейчас всё более важное место занимает Linux. Даже в Azure больше трети виртуальных машин используют Linux.
WSL предоставляет большинство инструментов оболочки Linux . Среди них — apt
, ssh
, find
, grep
, awk
, sed
, gpg
, wget
, tar
, vim
, emacs
, diff
, и patch
. Кроме того, тут можно использовать популярные языки программирования с открытым кодом, такие, как python, perl, ruby, php, и gcc. Далее, WSL и Bash поддерживают серверные приложения, такие, как веб-сервер Apache и система управления базой данных Oracle MySQL. Другими словами, благодаря WSL на Windows можно создать нормальную среду разработки, основанную на Linux.
Используя WSL можно запускать графические интерфейсы и приложения Linux, но пока эту возможность нельзя воспринимать серьёзно. Конечно, если над этим поработают, ситуация изменится.
Как функционирует WSL? Дастин Киркланд, член группы Ubuntu Product and Strategy в Canonical, рассказал следующее: «Мы говорим о непосредственном выполнении кода Ubuntu ELF на Windows. [WSL], по сути, выполняет, в реальном времени, трансляцию системных вызовов Linux в системные вызовы Windows. Приверженцы Linux могут считать это чем-то вроде WINE наоборот, а именно, двоичные файлы Ubuntu совершенно естественным образом работают в Windows».
Итоги
Независимо от технических особенностей того, как WSL делает своё дело, самое главное то, что подсистема WIndows для Linux работает очень и очень хорошо. Надеемся, новая WSL вам понравится.
Уважаемые читатели! Если вы уже обновились до Windows 10 Fall Creators Update, просим поделиться впечатлениями о новой WSL.
ядро Linux в Windows 10 и движок IE внутри Chromium Edge / ITSumma corporate blog / Habr
На своей ежегодной конференции для разработчиков компания Microsoft сделала сразу несколько достаточно важных презентаций. Мы выбрали две из них.Первое: в летней сборке 19h3 Windows 10 будет поставляться полноценное Linux-ядро на базе версии 4.19 от 22 октября 2018 года для собственной подсистемы «Linux для Windows» (WSL — Windows Subsystem Linux).
Второе: в будущие энтерпрайз-сборки Chromium-реинкарнации умерщвленного компанией Microsoft Edge будет встроено ядро IE.
Первая новость — важна и полезна для разработчиков, вторая — похожа на плохой анекдот.
Мы встроили в твой Chromium-браузер движок IE, чтобы ты не забывал, что это браузер Edge
Linux Kernel в Windows 10
Добавление полноценного ядра Linux в Windows 10 — логичный шаг, который продолжает методичную работу Microsoft с сообществом. Ранее в Windows была доступна лишь эмуляция ядра Linux. Параллельно с ядром Linux внутри своей системы компания анонсировала выход Windows Terminal — новое приложение для Windows для централизованного доступа к подсистемам PowerShell, Cmd и, собственно, самого Linux-ядра в упаковке WSL.
Представители компании уверяют, что 4.19 — не последняя версия ядра для их подсистемы. В будущем WSL будет обновляться и идти в ногу со стабильными версиями ядра Linux, что также немаловажно. Кроме того, внедрение полноценного ядра в систему отметает необходимость эмуляции, что, непосредственно, увеличит производительность и комфорт разработчиков, работающих из-под Windows. Кроме этого WSL базируется на открытом исходном коде, то есть любой разработчик сможет вносить необходимые ему изменения в подсистему и делать форки ядра.
Это не первый крупный шаг навстречу сообществу разработчиков. Ранее компания интегрировала в свою систему Bash, что можно назвать крайне серьезным шагом для весьма консервативной Microsoft.
Действия Microsoft удивляют, но уже не шокируют: под управлением Сатьи Наделлы компания фактически ворвалась в open source-сообщество и все больше и больше ориентируется на работу непосредственно с девелоперами и enterprise-сегментом, о чем свидетельствуют действия Microsoft за последние 3-4 года.
Чудовище Microsoft’а или зачем в Chromium Edge ядро Internet Explorer
Каждый с содроганием вспоминает Internet Explorer, а старые верстальщики еще и плачут при этом. Когда Microsoft анонсировала Spartan и отказ от IE, по всему миру начали открывать шампанское, но реальность оказалась злее, чем мы надеялись. До сих пор существуют решения, порталы и сайты, созданные для работы исключительно под IE старых версий. В основной своей массе эти решения обитают в закрытых enterprise-решениях. Когда-то у Microsoft был выбор: вынудить компании по всему миру обновить свои внутренние продукты и решения из-за полного отказа компании от IE, или же начать воевать «не в ту сторону». Так как полный отказ от IE грозил миллиардными потерями для Microsoft и репутационным ущербом, гиганту пришлось из года в год тащить совместимость своего браузера со страницами, адаптированными для работы в Internet Explorer.
Даже после громкого отказа от движка EdgeHTML и перевода разработки «браузера по умолчанию» для Windows 10 на движок Chromium, Microsoft не удается убежать от своего страшного наследия в лице Internet Explorer.
Поэтому специально для Enterprise-сборок Windows 10 компания будет поставлять версию Chromium Edge с «сюрпризом» — встроенным движком IE в сам Edge. Такое странное решение позволит обеспечить совместимость нового браузера со старыми корпоративными решениями, которые когда-то опрометчиво прибили гвоздями к Internet Explorer.
При открытии в новом Chromium Edge любой страницы, адаптированной для Internet Explorer, браузер автоматически будет активировать «режим совместимости с IE» и подключать отображение, соответствующее такому в Internet Explorer 11. Узнать, что страница запущена в режиме совместимости можно будет по специальному значку IE рядом с адресной строкой на странице браузера.
Сами Microsoft настаивают на том, что компаниям, пользующимся устаревшими веб-порталами, стоит перейти на новый Chromium Edge и полностью отказаться от практики использования связки IE+любой другой браузер. Конечно, любой технический специалист скажет, что подобный шаг по встраиванию устаревшего движка в новый продукт избыточен, но, фактически, сейчас Microsoft пытается сохранить лицо и чуть-чуть занимается благотворительностью. Вопрос в том, сможет ли когда-нибудь гигант сказать бизнесу «нет» и окончательно «пристрелить осла». Пока не получается.
Конференция началась вчера, 6 мая, и продлится до 8 числа, так что у Microsoft есть как минимум один день для того, чтобы удивить нас еще сильнее.
Крутые лайфхаки для работы с WSL (Подсистема Windows для Linux ) / Microsoft corporate blog / Habr
Я глубоко погружен в WSL (Windows Subsystem для Linux), и теперь, когда WSL2 доступен в Windows Insiders, это отличное время, чтобы по-настоящему изучить доступные опции. Очень интересная фича, которую я нашел в WSL, — возможность «чисто» перемещать данные между мирами. Это не тот опыт, который вы легко можете получить с полноценными виртуальными машинами, и он говорит о тесной интеграции Linux и Windows.Под катом подробнее о некоторых интересных вещах, которые вы можете делать, смешивая арахисовое масло и шоколад!
Запустите Windows Explorer из Linux и получите доступ к файлам вашего дистрибутива
Когда вы находитесь в командной строке WSL / bash и хотите получить визуальный доступ к своим файлам, вы можете запустить «explorer.exe .», где находится текущий каталог, и вы получите окно проводника Windows, в котором ваши файлы Linux будут доставлены вам через сервер локальной сети plan9.
Используйте настоящие команды Linux (не CGYWIN) из Windows
Я уже писал об этом раньше, но теперь есть алиасы для функций PowerShell, которые позволяют вам использовать настоящие команды Linux изнутри Windows.
Вы можете вызвать любую команду Linux напрямую из DOS/Windows/чего угодно, просто поместив ее после WSL.exe, вот так.
C:\temp> wsl ls -la | findstr "foo"
-rwxrwxrwx 1 root root 14 Sep 27 14:26 foo.bat
C:\temp> dir | wsl grep foo
09/27/2016 02:26 PM 14 foo.bat
C:\temp> wsl ls -la > out.txt
C:\temp> wsl ls -la /proc/cpuinfo
-r--r--r-- 1 root root 0 Sep 28 11:28 /proc/cpuinfo
C:\temp> wsl ls -la "/mnt/c/Program Files"
...contents of C:\Program Files...
Исполняемые файлы Windows можно вызывать/запускать из WSL/Linux, поскольку путь к Windows находится в $PATH до Windows. Все, что вам нужно сделать, это явно вызвать его с .exe в конце. Вот как работает «Explorer.exe.». Вы также можете сделать notepad.exe или любой другой файл.
Запустите Visual Studio Code и получите доступ к вашим приложениям Linux нативно на Windows
Вы можете запустить «code.», находясь в папке в WSL, и вам будет предложено установить расширения VS Remote.. Это эффективно разделяет Visual Studio Code пополам и запускает «headless» VS Code Server в Linux с клиентом VS Code в мире Windows.
Вам также необходимо установить Visual Studio Code и расширение Remote — WSL. При желании, установите бета-версию Windows Terminal для лучшего опыта работы с терминалом в Windows.
Вот отличная подборка статей из блога Windows Command Line.
Вот преимущества WSL 2
- Виртуальные машины являются ресурсоемкими и создают очень независимый опыт.
- Исходный WSL был очень «подключенным», но имел довольно низкую производительность по сравнению с VM.
- WSL 2 предлагает гибридный подход с облегченными VM, полностью подключенным интерфейсом и высокой производительностью.
Запуск нескольких Linux в считанные секунды
Здесь я использую «wsl —list —all», и в моей системе уже есть три Linux.
C:\Users\scott>wsl --list --all
Windows Subsystem for Linux Distributions:
Ubuntu-18.04 (Default)
Ubuntu-16.04
Pengwin
Я могу легко запустить их, а также назначить профили, чтобы они появлялись в моем Windows Terminal.
Запустите X Windows Server под Windows с Pengwin
Pengwin — это специальный Linux-дистрибутив WSL, который очень крут. Вы можете получить его в Windows Store. Объедините Pengwin с X Server, например X410, и вы получите очень классную интегрированную систему.
Простое перемещение дистрибутивов WSL между системами Windows.
Ana Betts отмечает эту замечательную технику, с помощью которой вы можете легко перенести свой идеальный дистрибутив WSL2 с одной машины на n машин.
wsl --export MyDistro ./distro.tar
# разместите его где-нибудь, Dropbox, Onedrive, где-то еще
mkdir ~/AppData/Local/MyDistro
wsl --import MyDistro ~/AppData/Local/MyDistro ./distro.tar --version 2
Вот и все. Получите идеальную настройку Linux, синхронизированную на всех ваших системах.
Используйте провайдер учетных данных Windows Git внутри WSL
Все перечисленные фичи переткают в кульминацию в этом крутом посте от Ana Betts, где она интегрирует Windows Git Credential Provider в WSL, превращая /usr/bin/git-credential-manager в сценарий оболочки, который вызывает диспетчер git creds Windows. Гениально. Это было бы возможно только при условии чистой и тесной интеграции.
Пробуйте, устанавливайте WSL, Windows Terminal, и создавайте блестящую среду Linux на Windows..
Microsoft хочет, чтобы на ПК с Windows 10 не запускался Linux — «Хакер»
Многие помнят, что перед выходом Windows 8 большую озабоченность в Linux-сообществе вызвала система UEFI Secure Boot, которая проверяла криптографическую подпись загрузчика ОС. Если таковая отсутствовала, то компьютер отказывался загружаться. Сразу же появились подозрения, что таким способом Microsoft борется с конкурентами, а именно — с дистрибутивами Linux. Ведь получается, что на компьютере с логотипом «Designed for Windows 8» и включенным режимом UEFI Secure Boot нельзя будет запустить альтернативную операционную систему.
К счастью, опасения не оправдались. В итоге Microsoft реализовала функцию, которая позволяет отключать Secure Boot, причём такая опция была обязательной. Но вот на компьютерах с Windows 10 ситуация может оказаться иной.
На конференции WinHEC в Китае представитель компании Microsoft заявил, что опция отключения Secure Boot станет необязательной для сборщиков ПК под Windows 10. Вот соответствующий слайд из его презентации.
Это значит, что «кошмар линуксоидов» воплотится в жизнь: в продаже появятся компьютеры, на которых будет невозможно запустить никакую систему, кроме Windows.
Официальный выпуск Windows 10 состоится летом этого года. Остаётся надеяться, что до этого времени под давлением общественности Microsoft передумает и изменит условия соглашения с OEM-сборщиками. На данный момент они ещё не окончательные.
Что касается тезиса о «защите» пользователей от бэкдоров и троянов, который использует Microsoft, можно вспомнить первый закон Доктороу: «Если кто-то помещает под замок принадлежащие тебе вещи и не даёт ключ, то такая защита не в твоих интересах».