[Перевод] Windows 10 Creators Update: что нового в Bash/WSL и Windows Console

Когда вышел Windows 10 Anniversary Update (AU), подсистема Windows Subsystem for Linux (WSL) была ещё далека от завершения и страдала от многих несовместимостей, особенно с популярными средствами разработки вроде node.js, Java и др.

Однако было важно передать эту восхитительную новую функцию в руки реальных пользователей, чтобы мы могли узнать у них — у ВАС — что именно необходимо WSL, что работает, что не работает и т.д.

И сообщество ответило! :)

Таким образом, этот новый релиз подсистемы Windows для Linux и консоли Bash создан вами и для вас!

От имени групп разработки WSL и Console хочу высказать искреннюю благодарность всем, кто попробовал Bash/WSL за последние 12+ месяцев, и особенно тем из вас, кто задокументировал проблемы в нашем репозитории GitHub, связался со мной по твиттеру, проголосовал за предложения в нашем UserVoice, задал вопросы на StackOverflow, AskUbuntu, Reddit, в нашем блоге Command-Line, блоге WSL Team и повсюду.

Значительные улучшения в Bash/WSL и Windows Console, которые вышли с Windows 10 Creators Update, произошли в значительной степени благодаря вам!

Что нового в WSL?
В процессе разработки Windows 10 Creators Update (CU) группа разработки WSL внедрила сотни исправлений и улучшений, большинство из которых перечислены в WSL release notes. Мы выделили некоторые из самых заметных функций Console и WSL в нашем блоге Command-Line. Мы подумали, что будет полезен сводный список самых важных функций и улучшений.

Итак, вот что нового реализовано в Bash/WSL и Console в обновлении Windows 10 Creators Update:

Больше совместимости


Главной целью Win10 CU было кардинально улучшить глубину и полноту совместимости WSL с интерфейсами ядра Linux System Call Interface (SCI). Расширив и улучшив наши реализации системных вызовов, мы увеличили количество инструментов, платформ, средств выполнение и прочего, что требуется запускать нашим пользователям.

Результат? В Win10 CU большинство популярных средств разработки работает как положено, в том числе:

  • Ключевые инструменты: apt, sed, grep, awk, top, tmux, ssh, scp и др.
  • Оболочки: Bash, zsh, fish и др.
  • Инструменты разработки: vim, emacs, nano, git, gdb и др.
  • Языки и платформы: Node.js и npm, Ruby и Gems, Java и Maven, Python и Pip, C/C++, C# и .NET Core и Nuget, Go, Rust, Haskell, Elixir/Erlang и др.
  • Системы и сервисы: sshd, Apache, lighttpd, nginx, MySQL, PostgreSQL
  • И многое другое.

Примечание: Кто-то из вас может пойти дальше и бесстрашно запустить приложения и рабочие столы X/GUI на WSL. Хотя мы не поддерживаем явно приложения/рабочие столы X/GUI на WSL, мы никак не блокируем и не мешаем их запуску. Так что если вы умудритесь запустить свой любимый редактор, рабочий стол, браузер и т. д., то отлично. Но имейте в виду, что мы по-прежнему концентрируем все усилия на обеспечении действительно качественной работы командной строки, чтобы вы могли запустить в консоли все инструменты разработки, какие нужно.

Поддержка Ubuntu 16.04


В то время как Win10 Anniversary Update поставлялся с поддержкой Ubuntu 14.04, в новом обновлении Win10 CU теперь WSL поддерживает Ubuntu 16.04. Все новые экземпляры Bash, установленные на Win10 CU, теперь будут инсталлировать Ubuntu 16.04.

Если вы хотите узнать, какая версия Ubuntu работает у вас, введите следующую команду в консоли Bash на Ubuntu в Windows Console:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.2 LTS
Release:        16.04
Codename:       xenial

Важное примечание: Существующие инстансы Ubuntu 14.04 НЕ обновляются автоматически на 16.04. Вам следует вручную обновить свой инстанс на Ubuntu 16.04 одним из двух способов:
  1. Удаление и замена (рекомендуется)
  2. Обновление на месте

Удаление и замена


Если у вас сейчас работает инстанс Ubuntu 14.04, то рекомендуем удалить его и заменить на свежий новый инстанс Ubuntu 16.04.

ПРЕДУПРЕЖДЕНИЕ: Следующие инструкции уничтожат ваш существующий дистрибутив и все файлы, которые вы хранили в файловой системе Linux. Поэтому обязательно скопируйте/перенесите любые файлы Linux, которые хотите сохранить, например, в папку Windows (/mnt/c/temp/wslbackup/…) ПЕРЕД удалением и заменой своего инстанса!

Чтобы удалить и переустановить свой инстанс Ubuntu, запустите следующие команды из консоли Cmd/PowerShell:

C:\> lxrun /uninstall /full /y
...
C:\> lxrun /install

Команда lxrun /install затем скачает и установит свежую новую копию Ubuntu 16.04 на вашу машину.

Обновление на месте


Если у вашего инстанса Ubuntu особенно сложная конфигурация, вы можете обновление его на месте, хотя результат может оказаться неоптимальным.

Если желаете обновить ваш инстанс на месте, используйте инструкции Ubuntu для обновления существующего инстанса:

$ sudo do-release-upgrade

Ifconfig и поддержка перечня сетевых соединений


Одним из самых больших недостатков Win10 AU было отсутствие списка сетевых соединений, что не давало корректно работать инструментам вроде ifconfig, gulp, npm и другим.

Это исправили в версии Win10 CU, так что можете использовать ifconfig для составления перечня соединений и изучения конфигурации доступных сетевых адаптеров:

cc0b5887f804b823adb8c79af219225a.png

Сетевая поддержка Ping и ICMP


Ещё одной проблемой, с которой часто сталкивались пользователи Win10 AU, была невозможность сетевым администраторам пинговать оконечное сетевое оборудование. Это тоже теперь исправлено в Win10 CU:

3c5b7b78c282e18d3ffb2c3027cd69bb.png

Поддержка уведомлений об изменениях файлов (INOTIFY)


Ещё одним востребованным улучшением стала возможность инструментам регистрироваться на уведомления об изменениях файла. Это существенная функциональность, которая часто используется разработчиками для веба, Node.js, Ruby и Python, и многими другими.

Например, если вы работаете над веб-сайтом node.js, то после редактирования исходников vim, Emacs, Sublime Text, VS Code и др. вы можете захотеть, чтобы каждый раз при сохранении сервер загружал обновленные исходники, так что при обновлении браузера все изменения мгновенно отобразились.

Теперь вы можете это сделать! WSL поддерживает inotify, с помощью которого приложения могут регистрироваться на уведомления об изменениях в файловой системе, которые затем станут триггерами для действий, таких как пересборка проекта и перезапуск локального веб-сервера. Это работает как для DrvFS, так и для файловой системы LxFs.

Важно, что эти уведомления об изменениях файлов теперь поддерживаются и на файловой системе Windows. Так что если вы редактируете исходный код проекта, который хранится в файловой системе Windows, с помощью редактора с графическим интерфейсом Windows GUI, таким как VSCode, Visual Studio, SublimeText, Notepad++ и др., а в то же время node.js работает в окружении Bash/WSL для локальной выдачи сайта, то все изменения нормально отобразятся в нём сразу после изменения в файле с исходниками.

1ea894e2e55329a57484e9b8cf80084e.png

Совместимость Windows <-> Linux


Главой целью создания WSL было уменьшить «разрыв» по ощущениям, когда запускаешь инструменты Windows рядом с инструментами командной строки и окружениями Linux. Когда мы выпустили WSL в Windows 10 AU, то поместили Linux и Windows рядом друг с другом, но всё ещё был большой «разрыв» между ними — хотя обе системы могли иметь совместный доступ к некоторым файлам, каждое из окружений было довольно сильно изолировано от другого.

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

В Windows 10 Creators Update вы можете запускать приложения и инструменты Windows из консоли Bash.

57f3d1da7c141e7bcc618386462909fc.png

…и можете запускать бинарники/команды/скрипты Linux из Windows:

0b4433769dc8f43230e6ce56ad819f97.png

Более подробно эта функция описана отдельном посте в блоге.

Улучшения сокетов UNIX и Netlink


Некоторые аспекты сокетов UNIX и сокетов Netlink не поддерживались в Anniversary Update.

В Creators Update в WSL добавлены датаграммные сокеты UNIX и сокеты Netlink, опции и свойства, так что многие современные инструменты получат разнообразные формы межпроцессного взаимодействия под WSL.

Более подробно см. WSL Release Notes.

Улучшения IPv6 и сокета TCP


При подготовке Creators Update группы WSL и Windows Core Networking работали совместно, чтобы реализовать поддержку в WSL нескольких дополнительных опций и свойств сокета TCP и IPv6. Это даёт расширенную поддержку IPv6 и др. широкому набору инструментов и технологий, которые полагаются на различные функции сетевых сокетов.

Более подробно см. WSL Release Notes.

Разнообразные улучшения WSL


Перечисленные выше улучшения WSL — это лишь небольшая выборка самых заметных и важных изменений, но в Creators Update включены сотни других улучшений WSL. Упомянем ещё некоторые из них, и не забудьте изучить release notes для дополнительных подробностей.
  • Процессы Linux выставляются для инфраструктуры составления перечня (энумерации) в Windows Process, так что они отображаются в TaskManager и т.д.
  • Добавлены функции, чтобы антивирусы и файрволы понимали процессы Linux.
  • Поддержка совместного доступа к памяти, как требовалось для PostgreSQL и других инструментов.

Windows Console и улучшения командной строки
Windows Console — одна из самых фундаментальных частей всей операционной системы и она несколько десятилетий являлась частью Windows. Около двух лет назад была сформирована новая группа разработчиков Windows Console, и она совершила самую значительную перестройку консоли Windows за более чем 30 лет!

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

Итак, что же нового появилось в консоли в Win10 CU?

Много улучшений управляющих последовательностей VT


Поскольку консоль изначально создавалась без поддержки *NIX, она не могла обрабатывать различные поведения и коды форматирования выдачи (управляющие последовательности ANSI и VT), генерируемые инструментами и приложениями командной строки *NIX.

Теперь проблема снята.

В Windows 10 Anniversary Update консоль доработали, и она смогла обрабатывать самые распространённые последовательности VT, позволяя корректно отображать большую часть текста с простым форматированием. Однако, некоторые продвинутые сценарии не поддерживались.

В новой версии Windows Console поддержка последовательностей VT была ещё больше расширена, чтобы корректно обрабатывать более сложные последовательности VT, так что консоль теперь поддерживает многие продвинутые функции сложного текстового интерфейса vim, emacs, Midnight Commander, tmux, htop и других программ.

d4485cc7ae89cd4cfe25e6a09b100149.png

Поддержка 24-битного цвета


Ещё одной частой просьбой сообщества была поддержка в консоли больше чем 16 цветов. Поддержка 256 цветов и более очень важна при работе с современными всё более сложными и насыщенными инструментами командной строки, шеллами и т. д.

В Win10 Creators Update консоль обновилась и поддерживает полный, прекрасный 24-битный цвет!

2be6b978c284e19d0df499f74b6b82ce.png

Подробнее см. соответствующий пост в блоге с анонсом поддержки 24-битного цвета.

Поддержка мыши


Количество насыщенных текстовых UI постоянно растёт, и пользователи хотят получить поддержку мыши для таких инструментов как Midnight Commander, Htop и других, так что мы добавили поддержку мыши в Win10 CU.

867ada32d659d7f2f129ad386d618a1e.png
Художественный рендеринг автора для целей иллюстрации

Символьные ссылки в Windows без прав администратора


Символьные ссыолки (симлинки) — важный инструмент, который всесторонне используется под Linux, но не так активно под Windows, потому что здесь для создания символьных ссылок требовались права администратора. Консоль, в которой создаются символьные ссылки, нужно было повысить в правах до администратора — что пользователи редко делают.

В версии Windows 10 Creators Update ограничение на создание символьных ссылок под любыми правами снято для пользователей, которые активировали режим разработчика, так что символьные ссылки создаются из любой консоли.

См. объявление для более подробной информации о символьных ссылках, с примерами.

Что дальше?
Итак, мы закончили? Не-е-ет! Даже близко не закончили!

И для WSL, и для Windows Console собрана целая очередь будущих улучшений, новых функций и возможностей, над которыми мы очень хотим поработать.

Вдобавок, хотя Console и WSL значительно улучшены в Creators Update, важно отметить, что WSL здесь сохраняет статус бета-версии, хотя мы и срезали некоторые шероховатости и острые углы, а также улучшили часть ключевой функциональности и возможностей.

Мы продолжаем двигаться вперёд со многими запланированными улучшениями и замечательными новыми функциями. Ожидайте много интересного в будущих релизах Windows 10. Если хотите быть среди первых, кто получит доступ и увидит улучшения, запланированные на следующий релиз Windows 10, то участвуйте в программе Windows Insider и устанавливайте настройку обновлений Windows Insider Update Ring на быстрый режим.

Как всегда, пожалуйста, оставляйте свои отзывы. Дайте знать, если обнаружите проблемы при использовании WSL, в репозитории WSL на GitHub, не стесняйтесь задавать вопросы в твиттере, предлагать новые функции через UserVoice, вести отличные дискуссии на Reddit, StackOverflow, SuperUser и других сайтах, и оставляйте комментарии в блогах Command-Line и WSL Team.

Вперёд!

Комментарии (1)

  • 13 апреля 2017 в 15:14

    0

    Пользовался WSL для баловства маленькими проектами, понравилось. Большие изменения с переходом на Ubuntu 16.04 очень радуют. Ну и конечно модернизация консоли напрашивалась очень давно.

© Habrahabr.ru