WSL2 запускает Linux на виртуальной машине или вместе с ядром Windows?

16

Я всегда хотел терминал Linux в Windows и выполнялся WSL 1. Но он был мучительно медленным, так как это была (я думаю) виртуальная машина, управляемая Hyper-V. С WSL 2 это относительно быстрее, но я не могу понять, как Microsoft сделала это так.

Они улучшили Hyper-V или перестали использовать виртуальную машину и создали магию для параллельного запуска ядра Linux?

Sachin.Verma
источник
3
Это все еще виртуально, но WSL2 использует ядро ​​linux (4.9) вместо того, чтобы изменять вызовы Windows API и обрабатывать его таким образом.
Guiverc
9
@Sachin WSL 1 запускает двоичные файлы ELF в Windows, переводя системные вызовы Linux в системные вызовы Windows, что делает его в точности так, как его имя описывает, «Подсистема Windows для Linux»
wjandrea
6
WSL 1 не был виртуальным @guiverc
Адриан
3
@ Sachin.Verma: Что вы подразумеваете под «обман»? WSL 1 был реализацией API ядра Linux и ABI, так же как ядро ​​Linux является реализацией API ядра Linux и ABI. Фактически, именно так работают большинство слоев совместимости с Linux, например, во FreeBSD, HP-UX, AIX, Solaris и т. Д., Которые также являются в основном независимыми повторными реализациями ABI и API ядра Linux вместо портов ядра Linux. Это также работает наоборот: все уровни совместимости для коммерческих Unix в Linux были независимыми повторными реализациями их API и ABI.
Йорг Миттаг,
4
WinE также работает так же. Он реализует Windows API и ABI вместо портирования Windows для работы в Linux (что было бы юридически невозможно).
Йорг Миттаг

Ответы:

17

Из статьи о WSL 2 документации Microsoft:

Краткий обзор архитектуры WSL 2

WSL 2 использует новейшую и самую лучшую технологию виртуализации для запуска своего ядра Linux внутри облегченной служебной виртуальной машины (ВМ). Тем не менее, WSL 2 НЕ будет традиционным опытом виртуальных машин. Традиционные виртуальные машины могут загружаться медленно, изолированы, потребляют много ресурсов и требуют времени для управления ими. WSL 2 не имеет этих атрибутов. Он по-прежнему даст замечательные преимущества WSL 1: высокий уровень интеграции между Windows и Linux, чрезвычайно быстрое время загрузки, небольшой объем ресурсов и, что лучше всего, не потребует настройки и управления виртуальной машиной. В то время как WSL 2 использует виртуальную машину, она будет управляться и работать за кулисами, оставляя вам тот же пользовательский интерфейс, что и WSL 1.

Как мы видим в следующих статьях (и обсуждениях под ними), WLS 2 использует функцию Hyper-V:

pa4080
источник
Из того, что я прочитал до сих пор: он будет изолирован, он будет потреблять дополнительные ресурсы, у него будет выделенный виртуальный диск.
LatinSuD