Wsl или виртуальная машина
Сравниваем подсистемы WSL 1 и WSL 2. Стоит ли переходить?
В этой заметке в стиле «мысли вслух» автор хотел бы сравнить WSL первой и второй версии, благо опыт общения имеется.
WSL 1 vs WSL 2, что порадовало
1. Использование настоящего ядра линукса
Включение реального ядра Linux повысило IO файловой системы и системные вызовы.
Специально оптимизированное ядро Linux делает WSL 2 вроде как быстрее, чем WSL 1.
В некоторых задачах, по замерам Microsoft, в таких, как распаковка архивов, WSL 2 был в 20 раз быстрее, чем WSL 1, и примерно в 5 раз быстрее при использовании Git clone и npm install.
Потратить своё время на просмотр бенчмарков можете тут и тут.
2. Нативная поддержка докера.
В принципе такая возможность появилась только с WSL 2
На этом радость закончилась.
WSL 1 vs WSL 2, что не порадовало
Начнем с самых новых костылей от Майкрософт и своего рода нововведений, которые лично меня расстроили.
WSL первой версии не использовалось реальное ядро Linux, как и виртуализация. WSL был чем-то наподобие Wine, но не совсем.
Там использовалась какая-то особая прослойка для транслирования вызовов от линуксовых программ в эту оболочку.
Это, ясное дело, замедляло все подряд, но имело и преимущества.
К примеру, все программы, которые работали на WSL 1 были видны в диспетчере задач, этим задачам могли раздаваться приоритеты и задаваться конкретные ядра для исполнения.
Так же все процессы первой версии WSL были видны для антивирусов, им можно было разрешать или запрещать доступ к папкам, как и обычным программам для Windows.
С приходом к WSL 2 конкретные процессы в этой виртуальной машине больше не видны, также, пропала возможность защищать от записи в папки. WSL 2 имеет доступ файловой системе в обход защитника Windows. Какие конкретно уязвимости принесет это в будущем — посмотрим. Но вектором атаки для шифрования всего диска вполне может стать WSL 2.
Работа с сетью тоже немного изменилась в WSL 2. В WSL первой версии был очень странно реализован сетевой стек, он висел на сети, которую использовал сам Windows, более того, прослушиваемые WSL порты можно было проверить в Netstat и закрыть обычным Брандмауэром Windows.
Теперь, в WSL 2 появился отдельный свитч конкретно для WSL, потому что теперь это отдельная виртуальная машина, сплошная скука.
Бенчмарки
WSL дал возможность использовать команды из WSL прямо в Windows. В том числе и в PowerShell.
Используя божественный Powershell, автор произвел замеры своих любимых программ на WSL, которыми сам чаще всего и пользуется.
Во всех бенчмарках использовался Ubuntu 18.04 LTS для WSL1 и WSL2.
Jekyll
Генерация сайта. По одному проходу:
Как видим, WSL2 при построении сайта с помощью Jekyll сильно уступает WSL1. 1,5 секунды против 9,6. Результат в пользу WSL1. Что интересно, WSL1 всегда требовал Sudo для доступа к записи и не хотел выполнять генерацию без прав рута.
Скорость вызова
Тут тестируем скорость вызова оболочки и выполнения одной простейшей команды.
WSl2 грузится чуть медленнее. Это совсем незаметно, так как взят результат выполнения 20 запусков.
Git init и Mkdir
Теперь побенчмаркаем Git init и Mkdir. С помощью Mkdir создаем папку и делаем Git init внутри этой папки с помощью WSL.
WSL vs. другие костыли
Так почему стоит выбрать WSL?
В WSL 2 все так же сохранилась возможность использовать линуксовые команды прямо из винды. Удобно бывает вызвать Bash прямо из строки проводника.
Ну и конечно, WSL использует дефолтное окружение ОС, что вы поставили, вам не придется использовать богомерзкий Vim из Mingw, если вы привыкли работать с человеческими редакторами.
Почему лучше обойти WSL стороной.
Libnotify, в WSL1, как и /proc/sys/fs целиком отсутствуют в WSL1, как было сказано выше, в первой версии не применяется то самое ядро линукса и WSL 2 должен был этот косяк исправить.
В WSL 2 появились все эти библиотеки, теперь все это работает на гипервизоре, но проблем меньше не стало. Автоматическая генерация при создании нового файла и иногда даже при изменении старого так и не работает.
Любители NPM и прочего вот этого вот всего пока что могут обходить WSL стороной, используйте решения, разработанные под Windows.
Крутой лайхак для WSL ( ͡° ͜ʖ ͡°)
Теперь поговорим о единственной причине поставить WSL – Vlmcsd.
Хотите активировать свою лицензионную копию Windows немного другим способом исключительно ради научного эксперимента, но не хотите использовать странные KMS активаторы, скачанные из интернета?
Спасибо Майкрософт, вы можете использовать WSL, вот краткий гайд.
Snap на Ubuntu
sudo apt update
sudo apt install snapd
sudo snap install vlmcsd
С помощью ip addr проверяем ip адрес, на котором висит WSL и используем его в качестве KMS сервера. Вот ссылка на страницу проекта в snapstore.
vlmcsd и Docket на WSL
Тоже самое можно провернуть и через сам Docker, или WSL и Docker. Вот ссылка на проект, лучше него я не объясню.
Со стороны Windows:
Вот как выглядит активация Windows 10 PRO через KMS.
Такой способ установки годится только для шуток, ведь инстанс WSL всегда будет выключен как только вы закроете его окно, как в прочем, пока что, весь WSL годится только для шуток и Git’a.
Автор надеется, вы не сильно заскучали.
Часто задаваемые вопросы о подсистеме Windows для Linux
Общие сведения
Что такое подсистема Windows для Linux (WSL)?
подсистема Windows для Linux (WSL) — это функция операционной системы Windows, которая позволяет запускать файловую систему linux, а также программы командной строки linux и приложения GUI с графическим пользовательским интерфейсом непосредственно на Windows, наряду с традиционными Windows настольными системами и приложениями.
Чтобы узнать больше, ознакомьтесь со страницей сведений.
Для кого предназначена WSL?
Что можно сделать с помощью WSL?
Опишите типичный рабочий процесс разработки с использованием WSL
Подсистема WSL нацелена на аудиторию разработчиков и предназначена для использования в рамках внутреннего цикла разработки. Предположим, что Сэм создает конвейер CI/CD (непрерывная доставка с постоянной интеграцией & ) и хочет сначала протестировать ее на локальном компьютере (переносной компьютер) перед развертыванием в облаке. Сэм может включить WSL ( & WSL 2 для повышения скорости и производительности), а затем использовать подлинный экземпляр Linux Ubuntu локально (на переносном компьютере) с использованием любых команд Bash и средств, которые они предпочитают. После проверки конвейера разработки в локальной среде Семен может отправить этот конвейер CI/CD в облако (т. е. в Azure), сделав его контейнером Docker и отправив в облачный экземпляр, где он будет выполняться на рабочей виртуальной машине Ubuntu.
Что такое Bash?
Bash — это популярная текстовая оболочка и язык команд. Это оболочка по умолчанию, входящая в состав Ubuntu и других дистрибутивов Linux, а также в macOS. Пользователи могут вводить команды в оболочке для выполнения сценариев и (или) команд и инструментов, чтобы выполнять множество задач.
Как это работает?
Зачем использовать WSL вместо Linux в виртуальной машине?
WSL требует меньше ресурсов (ЦП, памяти и хранилища), чем полноценная виртуальная машина. WSL также позволяет запускать программы командной строки и приложения Linux вместе с приложениями командной строки, классическими приложениями и приложениями Store для Windows, а также позволяет обращаться к файлам Windows в Linux. Это позволяет использовать приложения для Windows и программы командной строки Linux для одного и того же набора файлов, если требуется.
Зачем использовать, например, Ruby в Linux, а не Ruby в Windows?
Некоторые кроссплатформенные инструменты были созданы, исходя из предположения, что среда, в которой они выполняются, работает как Linux. Например, некоторые инструменты предполагают, что имеют доступ к очень длинным путям к файлам или что существуют определенные файлы и папки. Это часто вызывает проблемы в среде Windows, которая нередко ведет себя иначе, чем в Linux.
Многие языки, такие как Ruby и Node.js, часто переносятся на Windows и работают отлично. Тем не менее, не все владельцы библиотек Ruby Gem или node/NPM переносят свои библиотеки для поддержки Windows, и многие из них имеют зависимости, относящиеся к Linux. Это часто может привести к тому, что системы, созданные с помощью таких инструментов и библиотек, становятся подвержены ошибкам во время сборки, а иногда — во время выполнения, либо не работают в Windows требуемым образом.
Это лишь часть проблем, из-за которых многие пользователи просят корпорацию Майкрософт улучшить программы командной строки Windows, а мы стали партнерами с Canonical, чтобы обеспечить выполнение собственных программ командной строки Linux и Bash в Windows.
Что это означает для PowerShell?
При работе с проектами OSS существует множество сценариев, в которых чрезвычайно полезно перейти в Bash из командной строки PowerShell. Поддержка Bash дополняет и расширяет возможности командной строки в Windows, позволяя использовать PowerShell, а сообществу PowerShell — применять другие популярные технологии.
Дополнительные сведения см. в блоге группы разработчиков PowerShell: Bash for Windows: Why it’s awesome and what it means for PowerShell (Bash для Windows: почему это здорово и что это значит для PowerShell)
Какие процессоры поддерживает WSL?
WSL поддерживает процессоры x64 и ARM.
Как получить доступ к моему диску C?
точки подключения для жестких дисков на локальном компьютере создаются автоматически и обеспечивают простой доступ к Windows файловой системе.
/МНТ/ буква диска > /
Пример использования — команда cd /mnt/c для доступа к диску C:\
Как настроить диспетчер учетных данных Git? (Как использовать разрешения Windows Git в WSL?)
см. руководство приступая к работе с git на подсистема Windows для Linux, в котором описывается настройка диспетчера учетных данных Git и сохранение маркеров проверки подлинности в Windows диспетчере учетных данных.
Как использовать файл Windows в приложении Linux?
Одним из преимуществ WSL является возможность доступа к файлам с помощью приложений или инструментов Windows и Linux.
Отличаются ли файлы на диске Linux от файлов на подключенном диске Windows?
Файлы в корне Linux (т. е. / ) контролируются WSL, который соответствует поведению Linux, включая, помимо прочего, следующие:
Файлы на подключенных дисках контролируются Windows и имеют следующие характеристики:
Как удалить дистрибутив WSL?
Кроме того, вы можете удалить приложение дистрибутив Linux на компьютере так же, как и любое другое приложение Магазина.
Дополнительные сведения о командах WSL см. в статье основные команды для WSL.
Как запустить сервер OpenSSH?
OpenSSH поставляется с Windows в качестве дополнительного компонента. См. документацию по Install OpenSSH doc. для запуска OpenSSH в WSL требуются права администратора в Windows. чтобы запустить сервер OpenSSH, запустите WSL distribution (ie Ubuntu) или Терминал Windows с правами администратора. Существует несколько ресурсов, охватывающих сценарии SSH с WSL. ознакомьтесь со статьями блогов скотта Hanselman: как ssh-подключение к Windows 10 машине из Linux или Windows или из любого места, как ssh в WSL2 на Windows 10 с внешнего компьютера, простой способ подключения ssh к Bash и WSL2 на Windows 10 с внешнего компьютераи как использовать Windows 10 — Это встроенная служба OpenSSH для автоматического подключения по протоколу SSH к удаленному компьютеру Linux.
Как изменить язык интерфейса WSL?
Установщик WSL попытается автоматически изменить языковой стандарт Ubuntu в соответствии с языковым стандартом установки Windows. Если это нежелательно, можно выполнить приведенную ниже команду, чтобы изменить языковой стандарт Ubuntu после завершения установки. Чтобы это изменение вступило в силу, потребуется перезапустить дистрибутив WSL.
В приведенном ниже примере языковой стандарт изменяется на EN-US.
Почему у меня нет доступа к Интернету из WSL?
Некоторые пользователи сообщили о проблемах с определенными приложениями брандмауэра, блокирующими доступ к Интернету в WSL. Сообщили о следующих брандмауэрах:
В некоторых случаях отключение брандмауэра обеспечивает доступ. В некоторых случаях доступ блокируется просто при наличии установленного брандмауэра.
Как получить доступ к порту из WSL в Windows?
WSL использует IP-адрес Windows, так как работает в Windows. Поэтому вы можете получить доступ к любым портам на localhost. Например, если вы предоставляете веб-содержимое через порт 1234, то вы можете открыть адрес https://localhost:1234 в браузере для Windows. Дополнительные сведения см. в разделе доступ к сетевым приложениям.
Как выполнить резервное копирование дистрибутивов WSL или переместить их с одного диска на другой?
обратите внимание, что традиционные службы резервного копирования, которые файлы резервных копий в папках AppData (например, программа архивации данных), не будут повредить файлы Linux.
WSL 2
Использует ли подсистема WSL 2 Hyper-V? Будет ли она доступна в Windows 10 Домашняя?
WSL 2 доступен во всех sku настольных систем, где доступен WSL, включая Windows 10 Домашняя.
Последняя версия WSL использует архитектуру Hyper-V для включения виртуализации. Эта архитектура будет доступна в качестве дополнительного компонента Virtual Machine Platform (Платформа виртуальной машины). Этот необязательный компонент будет доступен во всех номерах SKU. Более подробную информацию об этом интерфейсе можно получить ближе к выпуску WSL 2.
Что произойдет с подсистемой WSL 1? Будет ли прекращена ее поддержка?
В настоящее время не планируется объявлять подсистему WSL 1 нерекомендуемой. Вы можете запускать дистрибутивы WSL 1 и WSL 2 параллельно, обновлять их и переходить на более раннюю версию дистрибутива в любое время. Добавление WSL 2 в качестве новой архитектуры для команды WSL представляет собой лучшую платформу, которая предоставляет отличные возможности для запуска среды Linux в Windows.
Смогу ли я запускать WSL 2 с другими сторонними инструментами виртуализации, такими как VMware или VirtualBox?
Если Hyper-V уже используется, то некоторые сторонние приложения не могут работать. Соответственно, они не смогут выполняться при включенном WSL 2, например VMware и VirtualBox. Но недавно вышли новые выпуски VirtualBox и VMware, поддерживающие Hyper-V и WSL2. Дополнительные сведения об изменениях VirtualBox см. здесь, а об изменениях VMware см. здесь. Сведения об устранении неполадок можно найти в обсуждениях проблем с VirtualBox в репозитории WSL на GitHub.
Мы постоянно работаем над решениями для поддержки интеграции Hyper-V от сторонних производителей. Например, мы предоставляем набор API-интерфейсов (платформа гипервизора), который сторонние поставщики виртуализации могут использовать для обеспечения совместимости своего программного обеспечения с Hyper-V. Это позволяет приложениям использовать архитектуру Hyper-V для своих эмуляций, например Google Android Emulator, а также VirtualBox 6 и более поздней версии, которые теперь совместимы с Hyper-V.
Дополнительные сведения о проблемах с WSL 2 в VirtualBox 6,1см. в репозитории проблем WSL.
* если вы ищете Windows 10 виртуальную машину, в Windows Центр разработки доступнызагрузки виртуальных машин VMWare, Hyper-V, VirtualBox и parallels.
Могу ли я получить доступ к GPU в WSL 2? Планируется ли усилить поддержку оборудования?
Мы выпустили поддержку для доступа к GPU в дистрибутивах WSL 2. Это означает, что теперь вы можете использовать WSL для сценариев с применением машинного обучения, искусственного интеллекта, а также обработки и анализа данных, если задействованы большие наборы данных. Ознакомьтесь с руководством по началу работы с решениями с поддержкой GPU. Сейчас WSL 2 не включает последовательную поддержку или поддержку USB-устройств. Мы определяем оптимальный способ добавления этих функций.
Может ли WSL 2 использовать сетевые приложения?
Да, в целом сетевые приложения будут работать быстрее и лучше, так как у нас есть полная совместимость системных вызовов. Однако в новой архитектуре используются виртуализированные сетевые компоненты. Это означает, что первоначальная ознакомительная версия сборки WSL 2 будет вести себя аналогично виртуальной машине, например, в WSL 2 будет IP-адрес, отличный от того, на котором размещен хост-компьютер. Мы стремимся сделать WSL 2 похожим на WSL 1, что включает в себя повышение производительности сети.
Можно ли запустить WSL 2 на виртуальной машине?
Да! Необходимо убедиться, что на виртуальной машине включена вложенная виртуализация. Ее можно включить в родительском узле Hyper-V, выполнив следующую команду в окне PowerShell с правами администратора:
Не забудьте заменить именем своей виртуальной машины.
Можно ли использовать wsl.conf в WSL 2?
Куда можно отправить отзыв?
Кроме того, вы можете сделать следующее:
Если вы хотите оставаться в курсе последних новостей WSL, используйте следующее:
WSL: что такое и как использовать подсистему Windows для Linux
На протяжении многих лет единственными способами использования Linux Вместе с Windows должны были либо установить двойную загрузку с двумя операционными системами (возможность использовать только одну за раз), либо смонтировать виртуальную машину со второй операционной системой в ней. Linux и Microsoft были конкурентами в течение многих лет и боролись за доверие пользователей. Однако, к всеобщему благу, это соперничество превратилось в дружбу, и с некоторого времени мы можем делать то, о чем раньше даже не догадывались: установить Linux на Windows 10. Это WSL.
Преимущества WSL
Подсистема Windows для Linux может быть полезен как любителям, начинающим делать первые шаги в этой операционной системе, так и опытным пользователям и системным администраторам.
Но эта реализация также полезна для пользователей, которые делают свои первые шаги в системах Linux. Благодаря этому любой пользователь может иметь все инструменты Linux под рукой без необходимости что-либо настраивать или виртуализировать. И, кроме того, вы будете Убедитесь что если что-то пойдет не так, вам нужно будет переустановить дистрибутив в WSL, поскольку Windows 10 не будет скомпрометирована.
Недостатки и ограничения
Cеть подключение работает в WSL, но должен пройти несколько уровней. Это подразумевает значительную потерю производительности при выполнении процессов, работающих на низком уровне сети. И, кроме того, есть периферийные устройства, которые не работают должным образом из-за того, как Hyper-V управляет этим Linux.
WSL1 против WSL2
В мае 2020 года для Windows 10 Microsoft представила пользователям WSL2 обновленную и улучшенную версию WSL1. Основное различие между первой версией и второй версией этой подсистемы состоит в том, что, хотя первая версия работала на промежуточном уровне между аппаратным обеспечением и операционной системой, WSL2 теперь имеет свою собственную виртуальную машину Hyper-V, которая наряду с ядром A специально Скомпилированный для этой цели, позволяет намного лучше взаимодействовать с системными вызовами, улучшая производительность и все возможности, которые он нам предлагает.
WSL2 против виртуальной машины
Итак, какие преимущества (и недостатки) дает WSL2 по сравнению с установкой Linux на виртуальной машине, такой как VirtualBox or VMware? Первое отличие состоит в том, что, хотя Linux на виртуальной машине изолирован, WSL2 полностью интегрирован с Windows, поэтому обе системы могут взаимодействовать друг с другом. Кроме того, подсистема Windows может загружать Linux всего за одну секунду, тогда как виртуальная машина значительно медленнее загружает систему.
Потребление ресурсов также очень значительно. Пока WSL2 очень легкий и потребляет очень мало Оперативная память В этом отношении виртуальная машина потребляет гораздо больше ресурсов.
И, хотя это правда, что виртуальная машина предлагает больше контроля и больше настроек Подсистема Windows для Linux запускается только тогда, когда она нам нужна, и загружает только процессы и службы, необходимые для того, что нам нужно сделать.
И мы можем выбрать WSL, когда:
Как активировать Bash в Windows 10
Процесс использования Linux из Windows 10 в основном разделен на две части. Первым из них является активация подсистемы Linux для Windows. Для этого в разделе поиска Windows 10 мы должны искать » Компоненты Windows », Чтобы открыть инструмент, который позволяет нам включать или отключать расширенные системные инструменты и сервисы.
Мы принимаем изменения, перезагружаем ПК по запросу, и когда компьютер снова запускается, он будет готов к запуску Linux. При желании мы можем сделать то же самое, выполнив следующую команду в окне PowerShell с разрешениями администратора:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
И с появлением WSL2 мы также можем активировать эту консоль с помощью простой команды CMD:
Скачать Linux на Windows 10
У нас уже активирован WSL, но на данный момент он бесполезен. Чтобы начать использовать его, нам нужно загрузить дистрибутив, который мы хотим установить в нашей Windows 10. Хотя понемногу появляется больше дистрибутивов, адаптированных к этой подсистеме, количество доступных альтернатив все еще довольно ограничено. И не стоит скачивать их с какого-либо сайта, но мы должны загрузить их из Магазинов Microsoft.
Мы можем найти все дистрибутивы для WSL из Microsoft Store, набрав «Linux» в браузере магазина.
Основные распределения, которые мы можем найти, следующие.
Утраченный потенциал подсистемы Windows для Linux (WSL)
Если вы несколько лет вообще не следили за Windows 10 и не знаете, что происходит, то пропустили одну вещь — очень горячей темой для разработчиков стала подсистема Windows для Linux, она же WSL. Среди программистов очень часто её обсуждают. Действительно, потрясающе интересная штука.
К сожалению, не всё так радужно. WSL по-прежнему является неким инородным элементом, который отделён от родной среды Windows. В частности, не может взаимодействовать с «родными» инструментами Windows.
А ведь изначально всё задумывалось совсем иначе, пишет Джулио Мерино (Julio Merino), автор блога для разработчиков jmmv.dev. Подсистема должна была стать совсем другой, но фактически вышел провал, в каком-то смысле.
Чтобы понять причины этого провала, нужно сначала понять различия между WSL 1 и WSL 2 и как переход на WSL 2 закрыл некоторые интересные перспективы.
Обзор архитектуры WSL 1
Давайте сначала взглянем на WSL 1, и первым делом — на её странное название. Почему эта функция называется подсистемой Windows… для Linux? Разве не наоборот? Это же не подсистема в Linux, которая делает что-то связанное с Windows, а именно наоборот! То есть грамотно она должна называться «Подсистема с функциональностью Linux для Windows» или «Подсистема Linux для Windows» или LSW. Откуда путаница?
Есть мнение, что Microsoft была вынуждена выбрать название «наоборот», чтобы избежать упоминания чужих торговых марок. Вот слова Рича Тёрнера (Rich Turner), проект-менеджера WSL:
Что ж… с другой стороны, такое странное название технически можно считать корректным, если внимательно изучить архитектуру ядра Windows NT. На странице «Архитектура Windows NT» в Википедии мы находим следующее:
«Пользовательский режим Windows NT состоит из подсистем, передающих запросы ввода-вывода соответствующему драйверу режима ядра посредством менеджера ввода-вывода. Есть две подсистемы на уровне пользователя: подсистемы окружения (запускают приложения, написанные для разных операционных систем) и интегрированные или внутренние подсистемы (управляет особыми системными функциями от имени подсистемы окружения). Режим ядра имеет полный доступ к аппаратной части и системным ресурсам компьютера».
Windows NT разработана с нуля для поддержки процессов, запущенных из множества операционных систем, а Win32 был «просто» одной из этих подсистем окружения. На такой платформе WSL 1 предоставляет новую подсистему окружения, подсистему Linux, для запуска бинарников Linux поверх ядра Windows NT. У подсистем окружения Win32 и Linux должна быть одна общая интегральная подсистема.
Что всё это на самом деле значит?
Разные системы называют «фронтендами» — вот что это значит. Процесс пользовательского пространства — это набор двоичных команд, которые процессор выполняет непрерывно (оставим в стороне прерывания). Ядро операционной системы не знает о том, что делает процесс, пока процесс не выдаст системный вызов: в этот момент ядро восстанавливает контроль для выполнения операции от имени пользователя, которая может быть чем-то вроде чтения файла или паузы на несколько секунд.
Но… концептуально открытие файла — это открытие файла, верно? Нам особенно не интересно, что номера системных вызовов или номера прерываний отличаются друг от друга. И в этом заключается ключевой аспект дизайна WSL 1: подсистема Linux в ядре NT — это, проще говоря, реализация уровня системных вызовов Linux перед ядром NT. Эти системные вызовы позже делегируются примитивам NT, а не вызовам Win32. Самое главное: нет никакого перевода с системных вызовов Linux на системные вызовы Win32.
В каком-то смысле это подвиг архитектурной мысли и реальной программной разработки, учитывая в целом хорошую поддержку Linux-приложений под WSL 1 и помня о множестве реальных внутренних отличий NT от Unix, когда Windows вообще нативно не воспринимает стандартную юниксовую логику fork–exec.
Истинная красота этой конструкции заключается в том, что на машине работает одно ядро, и это ядро имеет целостное представление обо всех процессах под ним. Ядро знает всё о процессах Win32 и Linux. И все эти процессы взаимодействуют с общими ресурсами, такими как единый сетевой стек, единый менеджер памяти и единый планировщик процессов.
Причины для создания WSL 2
Если WSL 1 так крут, то зачем нужен WSL 2? Здесь две причины:
Уровни и интерфейсы между ними: API и ABI. Высокоуровневое сравнение
Это означает, что красота дизайна WSL 1 исчезла: ядро Windows NT больше не видит ничего в мире Linux. Просто большой чёрный ящик, который делает что-то неизвестное внутри себя. Ядро Windows NT видит только точки подключения VMENTER и VMEXIT для виртуальной машины и запросы чтения/записи на уровне блоков на виртуальном диске. Это самое ядро NT теперь ничего не знает о процессах Linux и доступе к файлам. Точно так же работающее ядро Linux ничего не знает об NT.
О некоторых других различиях можно прочитать в официальной документации.
Потерянный потенциал
С точки зрения пользователя, подсистема WSL 2 выглядит лучше: действительно, приложения Linux теперь работают намного быстрее, потому что не проходят через неудобную «эмуляцию» системных вызовов Linux в ядре NT. Если NTFS трудно использовать с семантикой Linux, то теперь такой проблемы нет, потому что теперь окружение Linux использует ext4 на своём виртуальном диске. И поддержка приложений Linux может быть гораздо более полной, потому что… ну, потому что WSL 2 — это и есть полноценный Linux.
Но подумайте, за счёт чего достигнуто это удобство? Чего мы лишились?
Какой должна была стать WSL, если бы всё работало так, как задумано:
Вот что бесит сильнее всего, пишет Джулио Мерино: «Хотя я могу установить WSL на свою машину разработки для Azure, но никак не могу его использовать вообще ни для чего. По-прежнему приходится работать в CMD.EXE, поскольку здесь происходит взаимодействие с нативными процессами и ресурсами Windows, а инструменты, с которыми я имею дело, предназначены только для Windows».
На странице вопросов и ответов написано, что WSL 1 не будет заброшен, то есть можно запускать дистрибутивы WSL 1 и WSL 2 вместе, проапгрейдить любой дистрибутив на WSL 2 в любое время или вернуться на WSL 1. И если посмотреть на строгую приверженность к обратной совместимости Microsoft, из-за которой мы до сих пор вынуждены пользоваться архаичными инструментами и протоколами, это может быть правдой. Но поддержка WSL 1 — колоссальное усилие, потому что придётся отслеживать и соответствовать всем изменениям Linux. Как бы то ни было, будем надеяться, что WSL 1 продолжит своё существование. И кто знает, вдруг когда-нибудь всё-таки воплотится в жизнь тот волшебный мир, который мы представляем?
Уровень совместимости в BSD
Интересно, что семейство операционных систем BSD ( FreeBSD, OpenBSD, NetBSD, MidnightBSD, GhostBSD, Darwin, DragonFly BSD) всегда отставали от Linux и других коммерческих операционных систем. Но у них очень давно была реализована эта совместимость на бинарном уровне, о которой мы говорим. Джулио Мерино говорит, что совместимость с Linux в ядре NetBSD была реализована ещё в 1995 году, то есть четверть века назад и за 21 год до рождения WSL 1.
И самое замечательное, эта совместимость не ограничивается только Linux. На протяжении многих лет NetBSD поддерживала эмуляцию различных операционных систем. Поддержка SVR4 появилась в 1994 году, и в течение короткого периода времени NetBSD даже поддерживала… бинарные файлы PE/COFF — да, правильно, это бинарные файлы Win32! Таким образом, в некотором смысле NetBSD реализовала модель WSL 1 наоборот: она позволяла запускать бинарные файлы Win32 поверх ядра NetBSD ещё в 2002 году. Вот так вот.
На правах рекламы
VDSina предлагает VDS в аренду под любые задачи, огромный выбор операционных систем для автоматической установки, есть возможность установить любую ОС с собственного ISO, удобная панель управления собственной разработки и посуточная оплата тарифа, который вы можете создать индивидуально под свои задачи.