Install a complete Ubuntu terminal environment in minutes on Windows with Windows Subsystem for Linux (WSL).
Access the Linux terminal on Windows, develop cross-platform applications, and manage IT infrastructure without leaving Windows.
Download from the Microsoft Store
Install Ubuntu on WSL ›
Deploying WSL at your company?
We help companies achieve a seamless integration with their WSL deployments. Contact us to learn more about how we support enterprises on the Windows Subsystem for Linux.
Contact us
What you never thought was possible on Windows
-
Editors
Run your choice of Linux text editors, including vim, emacs, and nano
-
Servers
Spin up Node.js, install your dependencies with npm, and start testing your web app
-
Development
Install compilers and libraries from the Ubuntu repository, maintained by Canonical
-
Systemd
Develop and run service applications and use snap packages to run popular workflow tools
-
Containers
Work with LXD and Docker containers on Windows
-
Scripting
Automate Linux and Windows tasks with advanced bash scripting
-
Network hardening
Leverage Linux security tools to test and harden your network
-
Data
Crunch big numbers with tools for R and Python
-
Kubernetes
Build, test, and deploy Kubernetes clusters on Windows
Why Ubuntu WSL?
Develop Graphical Applications
Develop and preview web and graphical applications on Linux using WSLg. Create multiplatform graphical applications using popular open source development frameworks like Flutter or React Native.
Learn how to run graphical apps with Ubuntu on WSL ›
Enterprise support
Ubuntu is certified on WSL through close collaboration with Microsoft. Enterprise support is provided for Ubuntu from Azure to Windows workstations creating a seamless operating environment.
Get in touch
Video Guides
An introduction to numerical computation applications using Ubuntu WSL
Tips for working with web services on Ubuntu WSL
Ubuntu on WSL: An FAQ for data scientists and developers
WSL: Partnering with Canonical to support systemd
Ubuntu Summit 2022 | The Windows Subsystem for Linux WSL Latest updates and future improvements
Latest Ubuntu WSL news from
our blog ›
У пользователей Windows 10 есть необычная возможность установить операционную систему Ubuntu на свой компьютер. Механизм, обеспечивающий такую возможность, называется WSL — Windows Subsystem for Linux. Далее я расскажу, как с помощью WSL установить полноценную Ubuntu на Win 10 штатными средствами системы.
Для начала кратко поясню, что такое WSL на практике. Это некий слой абстракции, который позволяет запускать linux приложения в среде windows. И это не виртуальная машина. И Linux, и Windows приложения работают в рамках одной операционной системы с совместным доступом к данным на дисках. Вы прозрачно можете запустить приложение на ubuntu и открыть им файл в директории windows.
Для примера, расскажу, где ubuntu под wsl версии 1 хранит свои файлы — C:Usersuser1AppDataLocallxss.
Тут и корень системы, и директории пользователей. Посмотреть содержимое можно из-под windows. Только не рекомендуется их редактировать. Работа linux системы может быть нарушена. На примере доступа к файлам видно, что это не виртуальная машина. Важно понимать это отличие.
А вот то же самое можно сделать из-под ubuntu, открыв файлы из директории windows.
С помощью данной технологии, вы условно сможете запустить полноценный Ubuntu Server на своем компьютере. Читайте мой обзор на Ubuntu, чтобы иметь представление о том, чем он отличается от остальных linux дистрибутивов.
Зачем нужна Ubuntu WSL на Windows
Поговорим немного о том, зачем может понадобиться установка Ubuntu WSL в Windows 10. Можно в небольшой список это вынести и перечислить по пунктам:
- Первое и самое очевидное — для использования линуксовых утилит — git, ansible, cron, rsync и т.д. Речь в первую очередь идет о том софте, которого нет в windows, либо которое затруднительно или неудобно запускать.
- Настройка привычного web окружения в виде lamp (linux, apache, mysql, php) или lemp (то же самое, только с nginx). Особенно это актуально для разработчиков.
- Для обычного знакомства и изучения linux. Нет нужды разбираться с виртуализацией или рядом с windows устанавливать отдельно linux. Тут все в комплекте, можно без проблем переключаться между системами в режиме реального времени. В общем, это удобно.
Это то, что первое приходит в голову. Думаю, есть и другие причины, для чего может быть полезно установить ubuntu wsl. Делитесь своим мнением в комментариях. Может я что-то важное упускаю.
Установка Ubuntu WSL под Win 10
Установка подсистемы Windows для Linux в Windows 10 неплохо описана в официальном руководстве от Microsoft. Чтобы установить Ubuntu WSL на Windows, надо для начала включить компонент системы Windows под названием Windows-Subsystem-Linux. Для этого запускаем cmd с правами администратора (это важно!) и переходим в powershell. Там выполняем:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
После этого активируем компонент Платформа виртуальных машин.
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Далее обязательно перезагрузить систему, иначе дальше будут ошибки. После перезагрузки продолжаем ставить ubuntu под wsl.
Cкачиваем и устанавливаем Пакет обновления ядра Linux в WSL 2 для 64-разрядных компьютеров — https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
Дальше устанавливаем версию WSL 2 по умолчанию. Она более продвинутая и быстрая, по сравнению с первой.
wsl --set-default-version 2
Теперь идем в Windows Store и ищем там необходимую вам версию Ubuntu WSL. Я просто в строку поиска ввел название дистрибутива и получил все доступные версии.
После установки в меню Пуск можно запустить Ubuntu WSL. При первом запуске вам предложат задать имя пользователя для Linux системы.
Вот и все. Заходим в свежеустановленную Ubuntu 20 LTS на Win 10.
У вас под рукой практически полноценная linux система, работающая нативно под windows.
Настройка Ubuntu WSL
Выполним первоначальную настройку Ubuntu WSL, чтобы с ней удобнее было далее работать. Начнем с подключения по SSH.
Настройка ssh
Терминал Windows не очень удобен и привычен. Так что если вы привыкли подключаться по ssh через какой-нибудь другой менеджер подключений, вам нужно будет на wsl системе настроить ssh. Это не совсем очевидная процедура. Чтобы заставить нормально работать openssh server, его надо переустановить. Делаем это:
# sudo apt reinstall openssh-server
Теперь сразу разрешим подключаться с использованием паролей. Для этого открываем конфиг /etc/ssh/sshd_config и разкомментируем настройку:
PasswordAuthentication yes
После этого перезапустите службу sshd
sudo service ssh restart
Мы закончили настройку ssh в ubuntu. Теперь к ней можно подключиться, например, через putty. Используем адрес 127.0.0.1 и порт 22.
Вот и все. Можете использовать любой другой ssh клиент.
Обновление
Для того, чтобы обновить Ubuntu WSL на Windows 10 достаточно внутри linux системы запустить стандатрное средство обновления пакетов — apt.
sudo apt update sudo apt full-upgrade
В общем случае этого достаточно для обновления системы. Если же вы хотите выполнить обновление до следующего релиза, то лучше это сделать через Windows Store, установив нужную версию ubuntu.
Установка MC
Для того, чтобы установить популярный в linux среде файловый менеджер Midhight Commander или коротко MC, необходимо опять же воспользоваться пакетным менеджером apt.
sudo apt install mc
При этом вы сможете без проблем перемещаться не только внутри ubuntu, но и открывать файлы windows. Традиционные диски C:, D: и т.д. смонтированы в /mnt.
Войти под root
Для того, чтобы в Ubuntu WSL зайти под ученой записью root, необходимо под пользователем выполнить в консоли:
sudo su
Теперь вы полноценный root пользователь и можете запускать команды с повышенными привилегиями без sudo.
Автозапуск служб
В Ubuntu WSL не работает systemd и возникает закономерный вопрос, а как же тогда настроить автозапуск нужных служб. Тут есть два принципиально разных подхода по автозапуску служб:
- Служба в wsl запускается автоматически после запуска компьютера.
- Служба wsl запускается автоматически после первого входа в bash установленного linux.
Для первого случая проще всего воспользоваться готовым скриптом wsl-autostart — https://github.com/troytse/wsl-autostart. С его помощью вы можете выбрать любые программы из ubuntu, которые захотите запустить при старте компьютера.
Если вы хотите выполнить какую-то команду при первом входе в wsl, то просто добавьте ее в файл .bashrc домашнего каталога пользователя. Например, добавим туда вывод фразы Hello World! Для этого добавляем в самый конец:
echo "Hello World"
Теперь при запуске терминала wsl, вы увидите свое сообщение.
Вместо команды echo можете написать любую другую. Например, запуск MC:
/usr/bin/mc
Теперь при запуске терминала ubuntu wsl у вас автоматически будет запускаться файловый менеджер MC.
Обновление WSL до WSL2
Во время установки любой WSL системы у вас есть возможность выбора ее версии. Вторая версия более современная и быстрая, так что в общем случае рекомендуется использовать ее. Но возможно вам по какой-то причине понадобится первая. Например, в WSL 1 файловая система linux в открытом виде в виде файлов в директории C:Usersuser1AppDataLocallxss, а во второй версии в виде единого виртуального диска. Разница принципиальна.
Для того, чтобы обновить WSL1 до WSL2 необходимо через powershell активировать компонент VirtualMachinePlatform:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Далее скачать и установить обновленный пакет ярда Linux (msi установщик) — https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi.
Указать версию WLS2 как дефолтную:
wsl --set-default-version 2
В завершении проапгрейдить установленный дистрибутив до WSL2 или поставить новый.
wsl --set-version <distribution name> <versionNumber>
Версии WSL можно переключать в любое время. Узнать distribution name можно с помощью команды:
wsl --list --verbose
Reboot Ubuntu WSL
Работа в Windows 10 с Ubuntu несколько необычна, поэтому сходу не понятные даже такие простые вещи, как перезагрузка linux системы. Как сделать reboot в Ubuntu WSL? Для того, чтобы перезагрузить систему, достаточно выполнить в консоли powershell команду:
wsl.exe --shutdown
Все экземпляры wsl будут завершены. После запуска терминала ubuntu wsl она запустится заново, что будет равнозначно обычной перезагрузки системы.
Если вы используете первую версию WSL, то перезапуск linux систем выполняется перезапуском службы, которая их обслуживает. Выполняется так же в консоли windows^
net stop LxssManager net start LxssManager
Как удалить Ubuntu WSL
Если вам нужно удалить Ubuntu WSL из Windows 10, то сделать это можно точно так же, как любое другое приложение, установленное из Магазина. Выбираете Ubuntu WSL через пуск и нажимаете Удалить.
То же самое можно сделать и через консоль powershell
wsl --unregister <distribution name>
Список установленных систем смотрим командой:
wsl --list --verbose
Ничего сложного, система удаляется фактически в одну команду. Для повторной установки достаточно еще раз установить ubuntu через Магазин.
Под GNU/Linux-дистрибутивы создано огромное количество полезных и удобных инструментов и приложений для обычных пользователей и разработчиков. Далеко не всё из этого доступно на Windows, но, к счастью, для ОС от Microsoft есть решения, исправляющие эту проблему.
WSL — официальная подсистема Linux внутри Windows
В Windows 10 существует крайне полезная вещь под названием Windows Subsystem for Linux (WSL). Она позволяет использовать GNU/Linux-среду прямо в Windows и запускать не только команды, но и, например, Bash-скрипты. Для использования WSL необходимо следовать инструкции ниже.
Шаг 1. Проверьте, подходит ли текущая версия Windows требованиям. Для этого нажмите сочетание клавиш Win+R, затем введите winver. Найдите строку «Сборка ОС» — она должна быть свежее версии 14316.
Шаг 2. Запустите стандартную утилиту PowerShell от имени администратора и введите в ней команду для включения WSL:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
Шаг 3. Если версия Windows, определённая в первом пункте, свежее 18362, вы можете установить WSL 2, который в разы быстрее первой версии и обладает доработанным ядром. Введите команду ниже, если нужно установить WSL 2:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
После этого скачайте и установите пакет обновления с официального сайта.
Шаг 4. Перезагрузите компьютер. Если была произведена установка WSL 2, введите в PowerShell от имени администратора следующую команду:
wsl —set-default-version 2
Шаг 5. После перезагрузки откройте фирменный магазин приложений Microsoft Store и найдите подходящий GNU/Linux-дистрибутив. Самым популярным является Ubuntu — вы можете установить любую версию из представленных в Microsoft Store.
Шаг 6. Как только установка завершится, найдите дистрибутив в меню «Пуск» и запустите его.
Шаг 7. Пройдите этап первоначальной настройки, введя имя нового пользователя и придумав пароль.
Шаг 8. Теперь различные GNU/Linux-команды можно выполнять, запустив дистрибутив, либо введя в командной строке wsl <команда>. Например, для просмотра всех файлов в текущей директории достаточно в командной строке выполнить wsl ls -a.
Обращу внимание на то, что путь к дискам в WSL отличается от такового в Windows. Вместо привычного C:/ используйте /mnt/c/. Также не забывайте про экранирование пробелов с помощью символа — это также пригодится при вводе путей к файлам.
Помимо выполнения базовых команд, с помощью WSL можно даже запускать приложения с графическим интерфейсом. Правда, рассчитывать на большое количество поддерживаемых подобных программ не стоит.
Шаг 1. Загрузите X-сервер и установите его.
Шаг 2. Запустите его с помощью ярлыка на рабочем столе. В открывшемся окне выберите вариант Multiple windows, затем Start no client. Завершите настройку кнопкой Finish.
Шаг 3. Откройте дистрибутив через меню Пуск и выполните команду export DISPLAY=:0
Шаг 4. Запустив приложение с графическим интерфейсом в WSL, вы увидите новое окно прямо в Windows.
CoreUtils — лёгкий инструмент для запуска базовых команд
Плюс данной утилиты — возможность запуска не только на Windows 10, но и на более старых версиях ОС. Кроме того, она легка и не занимает много места. Не обошлось без недостатков — программа скудна на функционал и не обновлялась очень давно. Она не только не умеет запускать скрипты и приложения с GUI, но и поддерживает лишь самые базовые GNU/Linux-команды. Установка CoreUtils весьма проста.
Шаг 1. Скачайте утилиту с официального сайта.
Шаг 2. Следуйте инструкциям установщика.
Шаг 3. Откройте «Панель управления», в разделе «Система и безопасность» выберите пункт «Система». На панели слева откройте «Дополнительные параметры системы». Нажмите кнопку «Переменные среды» и в открывшемся окне найдите область с заголовком «Системные переменные». В случае, когда там есть переменная Path, выберите её, нажмите «Изменить» и далее создайте новую строку. Содержимым этой строки должен быть путь к папке, который был указан при установке. Если вы ничего не меняли, то введите следующее:
C:Program Files (x86)GnuWin32bin
Переменной Path нет? Тогда для начала создайте её кнопкой «Создать», затем в поле имени введите Path, а в поле значения — строку выше.
Шаг 4. Запустите командную строку и выполняйте команды прямо там.
Cygwin — запуск команд и Bash-скриптов
Ещё одна утилита, схожая с CoreUtils, но обладающая более широким функционалом — в том числе и возможностью запуска скриптов. Из минусов — немалый вес и более сложная установка. Разумеется, не идёт ни в какое сравнение с максимально удобным WSL, но для базовых команд вполне подойдёт.
Шаг 1. Загрузите Cygwin и запустите установку.
Шаг 2. Выберите Install from Internet, укажите директории для установки и загрузки пакетов, а также любой подходящий сайт из списка для скачивания файлов.
Шаг 3. В процессе установки можете выбрать необходимые пакеты, либо сразу нажать «Далее», оставив базовый набор.
Шаг 4. Откройте «Панель управления», в разделе «Система и безопасность» выберите пункт «Система». На панели слева откройте «Дополнительные параметры системы». Нажмите кнопку «Переменные среды» и в открывшемся окне найдите область с заголовком «Системные переменные». В случае, когда там есть переменная Path, выберите её, нажмите «Изменить» и далее создайте новую строку. Содержимым этой строки должен быть путь к папке, который был указан при установке. Если вы ничего не меняли, то введите следующее:
C:cygwin64bin
Переменной Path нет? Тогда для начала создайте её кнопкой «Создать», затем в поле имени введите Path, а в поле значения — строку выше.
Шаг 5. Команды можно выполнять как через командную строку, так и через специальный терминал.
Шаг 6. Для удаления Cygwin достаточно удалить папку, в которую программа была установлена, а также (по желанию) значение из переменной Path по методу, обратному тому, что был описан в 4 шаге (не удаляйте саму переменную).
Если вы хотите опробовать улучшенную WSL 2 (так же известную как Windows Subsystem for Linux, так же известную как слой совместимости для запуска Linux-приложений в операционной системе виндоуз) — мы обо всем расскажем. Мы собрали всю необходиму информацию. Давайте разбираться.
WSL 2 — это серьезное обновление по сравнению с исходной версией WSL, которую Microsoft представила в далеком 2017 году. WSL 2 — быстрее, универсальнее и использует настоящее ядро Linux. Будущие обновления ядра Linux будут выпускаться в том числе в виде обновлений программного обеспечения Windows 10 — что вызывает некоторый когнитивный диссонанс, если вдуматься!
Цель Microsoft при создании WSL 2 — повысить производительность. И как лучше всего это сделать? Конечно же добавить полную совместимость с системными вызовами, т. е. поставить во главу угла настоящее ядро Linux.
«Новая архитектура даст команде WSL прекрасную возможность предоставить пользователям те самый функции, которые и делают WSL прекраснейшим способом запуска среды Linux в Windows», — говорит технический специалист Microsoft.
Это безумие пока не ослабевает, поскольку Microsoft планирует разрешить пользователям запускать настольные приложения Linux в Windows 10 и запускать задачи с интенсивным использованием графического процессора. Это также позволит установить WSL с помощью всего одной команды.
На данный момент, если только вы не опытный юзер инсайдерских сборок, WSL 2 – это тот инструмент, который не требует каких-то особых усилий для своей настройки и предоставляет в ваше полное распоряжение самую полную версию Linux непосредственно внутри Windows. По-моему, оно того стоит!
Требования
Для установки WSL 2 в Windows 10 вам понадобятся следующие вещи:
- Windows 10 мая 2020 г. (20.04), Windows 10 мая 2019 г. (19.03) или Windows 10 ноября 2019 г. (19.09)
- Компьютер с поддержкой виртуализации Hyper-V
Обновление Windows 10 за май 2020 года было выпущено в мае 2020 года (почувствуй себя капитаном очевидность), но не все устройства могут обновиться сразу. Чтобы узнать, доступно ли обновление Windows 10 May 2020 на вашем компьютере, перейдите в Настройки > Обновление и безопасность > Центр обновления Windows.
В августе Microsoft перенесла WSL 2 на старые версии Windows 10. Любой пользователь сборок 19.03 или 19.09 также может установить WSL 2, но сначала придется обновиться по вот этой ссылке Windows KB4566116.
Технически вы можете установить WSL 2 на «инсайдерскую» сборку Windows 10 build 18917 или новее. Я не слишком знаком с тем, как работает «инсайдерская» система сборки, поэтому просто имейте в виду, что остальная часть этого сообщения основана на использовании стабильной версии Windows.
Ваш компьютер также должен поддерживать виртуализацию Hyper-V для запуска WSL 2. Чтобы убедиться, вы можете проверить поддержку Hyper-V.
Для этого вам понадобиться нажмите Win + R и набрать в открывшемся диалоговом окошке команду msinfo32. Открывшийся список прокрутите до конца и найдите четыре пункта про Hiper V:
- расширения режима мониторинга виртуальной машины;
- расширения для преобразования адресов второго уровня;
- виртуализация включена во встроенном ПО;
- предотвращение выполнения данных;
Если все они имеют значение «Да», поздравляю, у вас все хорошо и ваша ось поддерживает технологию Hiper V.
Если же ваша машинка не соответствует обоим требованиям, штош, вы не сможете установить или включить WSL 2, но вы можете использовать WSL 1.
Процесс установки WSL 2 в Windows 10 таков:
- Включить WSL 2
- Включите «Платформу виртуальных машин»
- Установите WSL 2 по умолчанию
- Установите дистрибутив Linux
Я шаг за шагом пройду по каждому из этих пунктов с помощью приложения PowerShell, которое вам нужно запустить от имени администратора. PowerShell легко найти в меню «Пуск» Windows.
Примечание: WSL 1 можно установить и с помощью графического интерфейса, но гораздо быстрее использовать командную строку, но, поскольку WSL — это инструмент командной строки, имеет смысл и устанавливать его с помощью нее!
Шаг 1. Включите WSL
Независимо от того, какую версию WSL вы хотите использовать, вам сначала нужно включить ее. Для этого откройте инструмент PowerShell от имени администратора и выполните команду ниже. Будьте осторожны, чтобы не набрать и не пропустить какой-либо символ в команде:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
Если по каким-то причинам вы хотите использовать т WSL 1 – переходите к пункту 4.
Шаг 2. Включите «Платформу виртуальных машин»
WSL 2 требует, чтобы была включена функция «Платформа виртуальных машин» в Windows 10. Она отделена от Hyper-V и предоставляет некоторые из наиболее интересных интеграций платформ, доступных в новой версии подсистемы Windows для Linux.
Чтобы включить платформу виртуальных машин в Windows 10 (20.04), откройте PowerShell от имени администратора и выполните команду:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Чтобы включить платформу виртуальных машин в Windows 10 (19.03, 19.09), откройте PowerShell от имени администратора и выполните:
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -NoRestart
На этом этапе вам стоит перезагрузить систему, чтобы убедиться, что все компоненты встали как надо и все работает так как задумано.
Шаг 3. Установите WSL 2 по умолчанию
Откройте PowerShell от имени администратора и выполните эту команду, чтобы установить WSL 2 в качестве версии WSL по умолчанию:
wsl --set-default-version 2
Вы можете (в любое время) настроить дистрибутив для работы в режиме WSL 1, если вам нужно.
Шаг 4. Установите дистрибутив
С WSL и необходимой технологией виртуализации все, что вам остается сделать, это выбрать и установить дистрибутив Linux из Microsoft Store.
Доступно несколько различных дистрибутивов, включая OpenSUSE, Pengwin, Fedora Remix и Alpine Linux. Но моя личная рекомендация (естественно) — Ubuntu 20.04 LTS (хотя также доступны 18.04 LTS и 16.04 LTS).
Чтобы установить Ubuntu в Windows 10, откройте приложение Microsoft Store, найдите «Ubuntu 20.04» и нажмите кнопку «Получить»:
Ubuntu 20.04 LTS в магазине Microsoft Store
Пока вы находитесь в Microsoft Store, я настоятельно рекомендую вам также установить приложение Windows Terminal с открытым исходным кодом. Этот инструмент разработан, чтобы предоставить вам наилучшие возможности WSL:
Терминал Windows в Магазине Microsoft
5. Используйте WSL 2
Когда вы устанавливали Ubuntu (или другой дистрибутив Linux), в меню «Пуск» был добавлен ярлык. Используйте его, чтобы «открыть» Ubuntu (или любой другой дистрибутив, который вы выбрали). В первый раз, когда вы запустите дистрибутив, все будет казаться ужасно медленным. Все в порядке, это норма; дистрибутив должен распаковаться и распаковать все свое содержимое – заварите чайку, подождите, только не прерывайте процесс.
Вам также будет предложено установить имя пользователя и пароль для использования в дистрибутиве. По возможности выбирайте то, что вы не забудете.
Преобразование Ubuntu на WSL 1 в WSL 2
Если вы используете WSL 1, вы можете обновить существующую версию до WSL 2. Чтобы преобразовать существующий дистрибутив WSL 1 в WSL 2, выполните в PowerShell следующее команду:
wsl.exe --set-version Ubuntu 2
Только замените «Ubuntu» в вышеприведённой команде названием того дистрибутива, который вы запускаете при запуске WSL 1.
Расскажите в камментах не возникло ли у вас трудностей при установке и использовании WSL2 по инструкции из этого гайда.
Статья о настройке функциональности и внешнего вида bash-терминала Windows Subsystem for Linux (WSL) в Windows 10.
Введение
Я постоянно использую терминал для работы с git и автоматизации сборки проектов (вёрстка/фронтенд: компиляция pug и scss, обработка изображений, транспиляция js…). На моём рабочем компьютере стоит Windows 10, а на ноутбуке — OSX и мне хочется использовать одни и те же консольные команды на обеих системах, поэтому я использовал GitBash (терминал, устанавливающийся вместе с Git) внутри эмулятора (Cmder). Такая связка работала заметно медленнее терминала на OSX, поэтому я был воодушевлён новостью «В Windows 10 встроили подсистему Linux» (март 2016 г.), но тогда, в 2016 году, её использование разочаровало: нельзя было запускать из bash-терминала программы Windows, подсистема не определяла изменение файла, если изменение было сделано из Windows. Сейчас эти проблемы решены.
Спойлер
Главный выигрыш для меня — скорость. В моём стартовом репозитории есть трудоёмкая задача полной сборки проекта (компиляция, транспиляция, спрайты, шрифты, картинки…), с Gitbash она занимает 17 секунд, с bash-терминалом WSL — 10 секунд.
Упоминаемые в статье файлы
- .bashrc
- .dircolors
- .bash_aliases
- .inputrc
- .vimrc
Установка Windows Subsystem for Linux (WSL)
В сети полно статей с инструкциями (по большей части, устаревших). Пользуйтесь официальной инструкцией с docs.microsoft.com и всё получится. Я установил Ubuntu, т.к. имею небольшой опыт ее использования.
После успешной установки можно запустить терминал подсистемы Linux командой bash
в cmd.exe (или PowerShell) или кликом по иконке в меню «Пуск».
Основы использования терминала Ubuntu в Windows 10
Это подсистема внутри Windows, чтобы использовать nodeJS и git, нужно поставить их в подсистему (даже если они уже установлены в Windows). Я выбрал вариант с Ubuntu, поэтому при установке nodejs пользовался этой инструкцией, а git установил командой sudo apt-get install git
(не забудьте указать git-у своё имя пользователя и email).
Можно запускать приложения Windows. Попробуйте notepad.exe
— запустится Windows-блокнот.
Диски Windows расположены в /mnt/
. Попробуйте cd /mnt/c/ && ls
для перехода к диску С:/
и вывода его корневых директорий (по умолчанию вывод выглядит уныло, но это настраивается).
Директория пользователя расположена в ~
(cd ~
для переходя в неё). Просто напоминаю.
В Linux-системах заглавные и строчные символы — разные символы. При использовании автодополнения (Tab
) важно вводить символы в правильном регистре.
Директория пользователя подсистемы Linux физически у меня расположилась по довольно длинному пути (см. ниже). Сегмент nicothin
— имя пользователя системы (как в начале пути (Windows), так и в конце (Ubuntu)).
c:UsersnicothinAppDataLocalPackagesCanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgscLocalStaterootfshomenicothin
Если редактировать файлы Linux-подсистемы из Windows, то Linux в некоторых случаях не сможет получить к ним доступ (не хватит прав). После такого редактирования нужно в bash-терминале подсистемы выполнить что-то вроде chmod 777 ~/.bashrc
(где ~/.bashrc
— редактированный из Windows файл) и перезапустить терминал. Или можно использовать команду source ~/.bashrc
(укажите редактированный файл) для применения внесённых изменений.
Как запускать Sublime Text из консоли Ubuntu
Если используете Sublime Text, добавьте путь к subl.exe в PATH в Windows, чтобы по команде в терминале subl.exe
запускался Sublime Text:
- В проводнике сделайте правый клик на Этот компьютер, выберите Свойства, потом Дополнительные параметры системы.
- На вкладке Дополнительно нажмите кнопку Переменные среды.
- Сделайте двойной клик по Path для перехода к её редактированию.
- Нажмите кнопку Создать и добавьте путь к subl.exe.
В моем случае этоc:Program FilesSublime Text 3
. - Перезапустите терминал.
Вконтакте ВКонтакте вконтакте вконтактов
Настройка консоли Ubuntu
Цвета
Увы, сразу после установки консоль (особенно вывод команды ls
) выглядит «бородато» и «носит свитер».
Можно добавить файл с настройками цветового оформления (touch ~/.dircolors
для создания файла) с этим содержимым.
Содержимое удобно добавлять из Windows, но тогда после сохранения файла в bash-терминале выполните chmod 777 ~/.dircolors
и перезапустите терминал.
Переход к нужной директории при старте
Если при запуске терминала хочется попадать в директорию проектов, можно вписать в самом верху ~/.bashrc
команду cd /mnt/d/projects/
(укажите путь к нужной директории).
Алиасы
Добавим файл (touch ~/.bash_aliases
) c этим содержимым и перезапустим bash-терминал.
Теперь по команде subl .
откроется Sublime Text (текущая папка будет показана как проект), а по команде наподобие subl filename.txt
можно быстро открывать файлы.
Странная проблема с алиасами
Я настраивал bash-терминал на двух домашних компьютерах с Windows 10 и на одном из них после добавления файла терминал при рестарте выводил 4 сообщения : command not found
. Из-за чего — я так и не понял (права доступа были и владелец файла — я), но нашел строки в ~/.bashrc
, которые к этому приводили. Это было подключение файла с алиасами:
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
Решил проблему, закомментировав эти строки и вписав алиасы прямо в ~/.bashrc
(в самом низу).
Показ git-ветки в командной строке
Шаг 1: добавим в начале ~/.bashrc
функцию для показа ветки:
git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* (.*)/ (1)/'
}
Шаг 2: определим переменную, отвечающую за приглашение командной строки, добавим в неё показ результата работы этой функции (см. .bashrc
). Получится что-то вроде:
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}[33[01;32m]u@h[33[00m]: [33[01;34m]w[33[00m]e[32m$(git_branch)e[0m $ '
else
PS1='${debian_chroot:+($debian_chroot)}u@h:w$ '
fi
Мелкие улучшения
Есть довольно много действий в bash-терминале, на которые Windows 10 отреагирует звуковым сигналом (нажатие Backspace
, когда уже нечего стирать, например). Чтобы это отключить, создайте ~/.inputrc
со строкой set bell-style none
.
Vim по умолчанию показывает довольно тёмный текст, что на тёмном фоне смотрится плохо. Можно создать ~/.vimrc
со строкой set background=dark
, чтобы текст стал более читаемым.
Замеченные баги
Работать с буфером обмена по умолчанию не комфортно (Ctrl + V
, Shift + Insert
не работают, приходится кликать (!!!) ПКМ по заголовку окна и выбирать Изменить → Вставить). Решается использованием терминала не самостоятельно, а внутри Cmder.
Несколько раз видел странный глюк отображения многострочной команды: как будто символы второй строки не перенеслись, а печатаются в первой строке. Редко, не критично.
На одном из домашних компьютеров работает сохранение истории команд между сеансами, на другом не работает (хотя права доступа и владелец файла ~/.bash_history
— активный пользователь и сохранение истории включено). Не критично.
Не работают инструменты копирования в буфер. К примеру, при настройке SSH для github.com, есть инструкция для Linux:
sudo apt-get install xclip
# Downloads and installs xclip. If you don't have `apt-get`, you might need to use another installer (like `yum`)
xclip -sel clip < ~/.ssh/id_rsa.pub
# Copies the contents of the id_rsa.pub file to your clipboard
Но её невозможно выполнить, т.к. xclip работать не будет. Решается использованием виндовской утилиты: clip.exe < ~/.ssh/id_rsa.pub
После загрузки Windows иногда (было всего дважды) отказывается работать. Помогает перезагрузка (это же Windows).
Брандмауэр Windows по умолчанию не даёт зайти на запущенный внутри WSL сервер при запросе с другого устройства (запускаем сервер разработки на рабочем компе, открываем его страницы с телефона, находящегося в той же локальной сети). Как это лечить — не разобрался, приходится временно отключать брандмауэр.
Как заходить на сервер, запущенный в WSL, со сторонних устройств в одной локальной сети
Я пишу много html-страниц. В процессе работы у меня запущен локальный сервер, собирающий разметку, стили, javascript, спрайты и т.п. Бывает удобно запустить на основном компьютере сервер и зайти на него с помощью ноутбука, телефона, планшета (сервер доступен по IP, наподобие http://192.168.1.207:8080). Однако, встроенный в Windows 10 фаервол по умолчанию блокирует такие соединения.
Чтобы попасть на такой сервер, нужно добавить правило для брандмауэра:
- Найти с помощью поиска «Брандмауэр защитника Windows», открыть, нажать слева «Дополнительные параметры».
- В открывшемся окне Монитора брандмауэра выбрать (слева) «Правила для входящих…», нажать «Создать правило» (справа).
- Выбрать «Для порта», нажать «Далее».
- Выбрать «Определенные локальные порты», ввести номер порта (мой локальный сервер работает на порту 8080, его я и ввёл), нажать «Далее».
- Выбрать «Разрешить подключение», нажать «Далее», выбрать профили (я выбрал все), «Далее».
- Ввести какое-либо имя, нажать «Готово».
После этого получится зайти с любого устройства (в одной локальной сети) на запущенный в WSL на рабочем компьютере сервер.
Комфортное использование с Cmder
Для более тонкой настройки внешнего вида и комфортной работы с буфером обмена (привычное сочетание Ctrl + V
для вставки) удобно использовать bash-терминал подсистемы Linux внутри cmder (эмулятор терминала, внутри которого можно запустить один из установленных в Windows терминалов). Для этого нужно добавить возможность старта WSL-консоли в настройках Cmder:
- Правый клик по иконке бургера в нижнем правом углу для перехода к настройкам.
- В разделе Startup выбрать радиокнопку Auto save/restore opened tabs, чтобы при рестарте не создавать вкладки заново.
- В разделе Startup, подразделе Tasks проверить наличие задачи WSL::bash. Если её нет, нажать кнопку Add/refresh default tasks… и согласиться на добавление задач.
- В списке задач появится пункт WSL::bash, при создании новой вкладки терминала нужно выбрать его.
Если в списке задач есть пункт WSL::bash, но WSL не запускается при его выборе (в момент создания новой вкладки Cmder), то в настройках можно попробовать нажать Add/refresh default tasks… и согласиться на обновление списка задач (см. п. 3). Если и после этого не получается запустить терминал подсистемы (Cmder сообщает о проблеме и пишет, что по нажатию Enter закроет вкладку), то можно добавить свою собственную задачу, которая будет запускать cmd.exe и сразу вызывать в ней команду bash
. Команда запуска терминала будет выглядеть так:
*cmd /k ""%ConEmuDir%..init.bat" " && bash
Вместо заключения
Я скачал и установил в систему шрифт Ubuntu Mono для большей аутентичности внешнего вида терминала.
Mintty as a terminal for WSL (Windows Subsystem for Linux).
Overview
WSLtty components
- wsltty package components (see below) in the user’s local application folder
%LOCALAPPDATA%
- a wsltty configuration directory in the user’s application folder
%APPDATA%
(“home”-located configuration files from a previously installed version
will be migrated to the new default location) - Start Menu shortcuts to start WSL terminals
*.bat
scripts to invoke WSL terminals from the command line- optional context menu entries for Windows Explorer to start WSL terminals in the respective folder
- install/uninstall context menu items from Start Menu subfolder
WSLtty
Requirement
Since release 3.0.5, WSLtty requires Windows version 1809 (the November 2018 release).
Installation from this repository
WSLtty installer (Download standalone installation)
Run the installer to install
the components listed above.
If Windows complains with a “Windows protected your PC” popup,
you may need to click “Run anyway” to proceed with the installation.
You may need to open the Properties of the installer first, tab “General”
section “Security” (if available) and select “Unblock”,
to enable the “Run anyway” button.
WSLtty Portable installer
For a portable installation, e.g. on a USB stick, choose the
“-install-portable.exe” file for download. Installation will prompt
for a portable installation folder interactively.
For example, choosing U:opt
will create and use folder
U:optwsltty
both as installation directory and configuration directory.
Portable installation does not install any start menu or desktop shortcuts
and no context menu entries. It creates a shortcut in the selected
portable installation folder to start the default WSL distribution.
Installation from archive
In case a local anti-virus guard barfs about the wsltty installer, the
release also contains a .cab
file. Download it, open it, extract its files
to some temporary deployment directory, and invoke install.bat
from there,
or install-portable.bat
for a portable installation.
Installation from source repository
Checkout the wsltty repository, or download the source archive, unpack and rename the directory to wsltty
.
Install Alpine WSL from the Microsoft Store.
Invoke make build
, then make install
.
Note this has to be done within a Cygwin environment. A minimal Cygwin
environment for this purpose would be installed with the
Cygwin installer
from cygwin.com,
with additional packages make
, gcc-g++
, unzip
, zoo
, patch
, (lcab
).
Installation to non-default locations
(For experts)
Within the installation process, provide parameters to the script install.bat
.
The optional first parameter designates the installation target,
the optional second parameter designates the configuration directory.
Installation with other package management environments
Note: These are 3rd-party packages, not managed by this repository.
Windows Package Manager
To install wsltty from the
Windows Package Manager Community Repository,
invoke one of
winget install wsltty
winget upgrade wsltty
Chocolatey
If you use the Chocolatey package manager,
invoke one of
choco install wsltty
choco upgrade wsltty
Scoop
If you use the Scoop package manager,
scoop bucket add extras
then, invoke one of
scoop install wsltty
scoop update wsltty
Uninstallation
To uninstall wsltty desktop, start menu, and context menu integration:
Open a Windows cmd
, go into the wsltty installation folder:
cd %LOCALAPPDATA%wsltty
and run the uninstall
script.
To uninstall wsltty software completely, remove the installation folder manually.
Invocation
WSLtty can be invoked with
- installed Start Menu shortcuts (or Desktop shortcuts if copied there)
- *.bat scripts (optionally with WSL command as parameters)
- Explorer context menu (if installed from the Start Menu
WSLtty
subfolder)
Starting the mintty terminal directly from the WSLtty installation location
is discouraged because that would bypass essential options.
WSL V2
Terminal communication with WSL via its modes V1 or V2 is handled
automatically by wsltty (mintty and the wslbridge2 gateway).
Starting issues
If wsltty fails with an
Error: Could not fork child process: Resource temporarily unavailable
…,
its runtime may be affected by some over-ambitious virus defense strategy.
For example, with Windows Defender, option “Force randomization for images”
should be disabled.
If wsltty fails with an error message that mentions a disk mount path (e.g. /mnt/c
),
workarounds may be the shutdown of the WSL V2 virtual machine (wsl --shutdown
on the distro)
or turning off “fast startup” in the Windows power settings (#246, #248).
WSL shell starting issues
With WSL V2, an additional background shell is run which may cause trouble
for example when setting up automatic interaction between Windows side and
WSL side
(see #197 (comment)).
As a workaround, the following may be added to (the beginning of) the
WSL shell initialization script .bashrc
(adapt for other shells):
# work around https://github.com/mintty/wsltty/issues/197
if [[ -n "$WSL_DISTRO_NAME" ]]; then
command -v cmd.exe > /dev/null || exit
fi
Configuration
Start Menu and Desktop shortcuts
In the Start Menu, the following shortcuts are installed:
In the Start Menu subfolder WSLtty, the following additional shortcuts are installed:
One Desktop shortcut is installed:
- Shortcut
WSL Terminal
to start the default WSL distribution (as configured with the Windows toolwslconfig
orwsl -s
)
Other, distribution-specific shortcuts can be copied to the desktop
from the Start Menu if desired.
The Start menu folder WSLtty contains the link
configure WSL shortcuts
.
This function is initially run when wsltty is installed.
If should be rerun after adding or removing WSL distributions,
in order to create the respective set of shortcuts in the Start menu.
Command line scripts wsl*.bat
WSLtty installs the following scripts into %LOCALAPPDATA%MicrosoftWindowsApps
(and a copy in its application folder %LOCALAPPDATA%wsltty
):
- For each installed WSL distribution, e.g. Ubuntu, a command script like
Ubuntu.bat
to start in the current folder/directory - For each installed WSL distribution, e.g. Ubuntu, a command script like
Ubuntu~.bat
to start in the WSL user home WSL.bat
andWSL~.bat
to start the default WSL distribution
Given that %LOCALAPPDATA%MicrosoftWindowsApps
is in your PATH,
the scripts can be invoked from cmd.exe, PowerShell, or via WIN+R.
Context menu entries
WSLtty provides context menu entries for all installed WSL distributions
and one for the configured default distribution,
to start a respective WSL terminal in a specific folder from an Explorer window.
They are not installed by default.
To add launch entries for the default or all WSL distributions to the
Explorer context menu, or remove them, run the respective script from the
Start Menu subfolder WSLtty
:
Icon
Wsltty installation and the mintty terminal try to use the icon of the
respective WSL distribution. If it cannot be determined, a penguin icon
is used as a default. You can replace it with your preferred fallback icon
by replacing the icon file %LOCALAPPDATA%wslttywsl.ico
.
Mintty settings
Mintty can maintain its configuration file in various locations,
with the following precedence:
- file given with mintty option
-c
(not used by wsltty default installation) - file
config
in directory given with mintty option--configdir
%APPDATA%wslttyconfig
in the default wsltty installation
%HOME%.minttyrc
(usage deprecated with wsltty)%HOME%.configminttyconfig
(usage deprecated with wsltty)- common config file for all mintty installation instances
%APPDATA%minttyconfig
%LOCALAPPDATA%wslttyetcminttyrc
(usage deprecated with wsltty)
Note:
%APPDATA%wslttyconfig
is the user configuration file location.
Further subdirectories of%APPDATA%wsltty
are used for language,
themes, and sounds resource configuration.
Note the distinction from%LOCALAPPDATA%wsltty
which is the default
wsltty software installation location.- The
%APPDATA%minttyconfig
option provides the possibility to
maintain common mintty settings for various installations (like
wsltty, Cygwin, MinGW/msys, Git for Windows, MinEd for Windows). - (About deprecated options) By default,
%HOME%
would refer to the
root directory of the cygwin standalone installation hosting wsltty.
So%HOME%
would mean%LOCALAPPDATA%wslttyhome%USERNAME%
.
If you defineHOME
at Windows level, this changes accordingly.
Note, however, that the WSL$HOME
is a completely different setting.
Shell selection and Login shell
The WSLtty deployment does not impose a shell preference;
it invokes the user’s default shell in login mode by the final -
parameter:
%LOCALAPPDATA%wslttybinmintty.exe --WSL= --configdir="%APPDATA%wsltty" -
You may tweak shortcuts, scripts, or context menu entries as follows:
To launch a default shell in non-login mode, remove the final dash.
To invoke your preferred shell, replace the final dash with
a shell pathname and an optional -l
parameter
%LOCALAPPDATA%wslttybinmintty.exe --WSL= --configdir="%APPDATA%wsltty" /bin/bash -l
WSL locale setup and character encoding
Character encoding setup by locale setting is propagated from the terminal
towards WSL. So you can select your favourite locale with configuration
options or with command-line options, for example in a copied dedicated
desktop shortcut.
If for example you wish to run WSL in GB18030 encoding, you may set options
Locale=zh_CN
and Charset=GB18030
and the WSL shell will adopt that
setting, provided that the selected locale is configured to be available
in the locale database of the WSL distribution.
This can be achieved in Ubuntu with the following commands:
sudo mkdir -p /var/lib/locales/supported.d
sudo echo zh_CN.GB18030 GB18030 >> /var/lib/locales/supported.d/local
sudo locale-gen
Components and Credits
For mintty, see the Mintty homepage
(with further screenshots),
the Mintty manual page,
and the Mintty Wiki,
including a Hints and Tips page.
It is based on Cygwin
and includes its runtime library (sources).
For interacting with WSL, wslbridge
used to be the gateway prototype.
Many thanks for this enabling gateway go to Ryan Prichard.
For recent changes in WSL, particularly WSL mode V2, the new gateway
wslbridge2 is used instead.
Many thanks for this further development and maintenance go to Biswapriyo Nath.
Table of Contents
Зачем нужен Windows Subsystem for Linux 2 (WSL2)? Самый частый ответ — простое использованое Linux программ в среде Windows. Docker самая распространенная причина для установки WSL2.
Что надо для WSL2
- убедиться что в BIOS включена виртуализация, ищите пункт меню:
- процессор Intel: VT-x, Intel Virtualization Technology, VTx
- процессор AMD: SVM Mode, AMD-V, Virtualization Technology
- версия Windows 11 или 10 не ниже версии 2004 (сборка 19041 ~декабрь 2019)
- права администратора
Всего несколько команд
Установим само ядро wsl и запустим дистрибутив Ubuntu для работы в консоли.
Открывайте PowerShell с правами Администратора. Самый простой вариант по мне -> WIN+X и выбрать Терминал Windows (Администратор).
Выполняйте команду:
По-умолчанию, установится WSL2 с GUI и Ubuntu . Установка займет определенное время, подождите.
Если ошибка 0x80072eff
В процессе, можете увидеть ошибку Во время установки произошла ошибка, но установка может быть продолжена. Компонент: 'Ядро WSL' код ошибки: 0x80072eff
.
А значит, все автоматически не сработало, не беда. Перезагружайтесь и снова запустите PowerShell от Администратора.
- Запустите обновление wsl
- Завершите работу wsl
- Запустите заново wsl
- Запустите установку Ubuntu (если надо более специфический дистр, посмотрите все варианты
wsl -l -o
)
Успешная установка Ubuntu
После установки, введите имя пользователя и пароль для Ubuntu, и вам будет доступна среда Linux.
Рекомендуется сделать одну команду, обновить список пакетов:
и наслаждаться
Как зайти в WSL консоль
- запускайте команду
wsl
. (например, в настройках среды разработки указать wsl это для терминала по-умолчанию) - можете вынести из Пуска, ярлык Ubuntu на панель задач.
- или поставить обновленный Microsoft Terminal, и в нем настроить при запуске сразу открывать консоль wsl, рекомендую.