Совместимость с Windows

Ядро Linux в Windows 10

Ядро Linux в Windows 10
Как работает новая подсистема Windows для Linux (v2)?

Microsoft недавно объявила, что скоро будет поставлять ядро ​​Linux, интегрированное прямо в Windows 10. Это позволит разработчикам использовать платформу Windows 10 при разработке приложений для Linux. Фактически, это следующий шаг в эволюции подсистемы Windows для Linux (WSL). Давайте рассмотрим WSL версии 1, прежде чем углубляться в детали интеграции ядра Linux и ее значение.

Если вы хотите начать работу с WSL (v1), вот руководство для этого.

1.  WSL версия 1

Подсистему Windows для Linux действительно следует называть подсистемой Linux для Windows. Он предлагает драйвер (подсистему) для ОС Windows, который переводит системные вызовы Linux в собственные системные вызовы Windows 10, которые понимает ядро ​​NT.

Это создает несколько правдоподобную иллюзию для двоичных файлов Linux, что они на самом деле работают поверх ядра Linux! Это работает достаточно хорошо, так что вы можете запускать не только простые 64-битные двоичные файлы, скомпилированные для Linux, но и целую пользовательскую среду (.k.дистрибутив Linux, такой как Debian или Ubuntu) поверх WSL v1. Поэтому, когда вы устанавливаете Ubuntu из магазина Microsoft, он просто извлекает двоичные файлы пользовательской среды Ubuntu, которые Canonical поставляет для среды Microsoft WSL v1.

Однако WSL v1 все еще далек от совершенства. Определенная семантика, которую ожидает система Linux, совершенно неприемлема в Windows. Например, вы не можете изменить имя открытого файла в Windows, но можете сделать это в Linux.

Другие очевидные примеры включают низкую производительность файловой системы WSL v1 и невозможность запуска Docker.

2.  WSL v2 - ядро ​​Linux

Эта новая версия WSL решает все эти проблемы, включая ядро ​​Linux, работающее в гипервизоре Hyper-V. В своем анонсе и демонстрациях Крейг Лёвен и его коллега из Microsoft подчеркнули, что, продвигаясь вперед, Microsoft собирается вкладывать огромные средства в технологию виртуализации.

Использование ядра Linux решает все семантические проблемы, которые нельзя решить, используя только уровень трансляции системных вызовов. Это ядро ​​Linux будет очень легким и будет поддерживаться Microsoft со всеми изменениями ядра Linux, сделанными с открытым исходным кодом. В своей демонстрации они показали, как можно просто перенести существующие приложения WSL v1 для запуска без изменений в среду WSL v2. Производительность файловой системы улучшилась в 3-4 раза, и вся система чувствует себя намного более отзывчивой.

3.  Как это работает?

Итак, у нас есть виртуальная машина Linux с множеством пользовательских приложений, например.g, пользовательская среда OpenSUSE или Debian или Ubuntu. У вас есть более одного дистрибутива на вашем компьютере с Windows с одной виртуальной машиной Linux, так что это аккуратно. Но это также означает, что каждый раз, когда вы открываете свой терминал WSL Ubuntu, вы загружаете полную виртуальную машину! Это займет некоторое время, верно?

Вообще-то, нет. Ядро Linux на самом деле достаточно маленькое и достаточно легкое, чтобы Microsoft смогла добиться безумного времени загрузки с ним (~ 1 секунда). Они достигли этого, удалив весь код загрузчика, и, поскольку это виртуальная машина, они напрямую загружают ядро ​​Linux в его адресное пространство в памяти и настраивают несколько состояний виртуальной машины, которые ожидает ядро. Это тот же механизм, который поддерживает еще одну новую функцию Windows 10 - Windows Sandbox.

У него очень маленький объем памяти, он загружается за секунду, а собственный формат файловой системы ext4 позволяет ему обеспечить очень плавное взаимодействие с пользователем. ВМ запускается только тогда, когда вам это нужно.

Более того, он не изолирован полностью, как традиционная виртуальная машина. Вы можете очень легко взаимодействовать с остальной частью системы Windows, включая файлы на ваших дисках Windows, используя WSL v2. Это не изолированная виртуальная машина, а интегрированная часть Windows 10. Как это достигается?

4.  Да здравствует план 9

С WSL v1 доступ к файлам и каталогам на гостевых компьютерах Windows был тривиальным. Ваша пользовательская среда Linux - это просто приложение в Windows, поэтому оно может довольно легко читать и записывать файлы, изначально принадлежащие родной ОС.

С WSL v2 у вас есть виртуальная машина, работающая с ее виртуальным жестким диском (разумеется, отформатированным с помощью ext4), и если нам нужен аналогичный опыт, как в WSL v1, нам нужны некоторые дополнительные механизмы. Войдите в план 9.

Plan 9, также обозначаемая как 9P, - это ОС, изначально разработанная в Bell Labs. Хотя маловероятно, что вы когда-нибудь найдете его работающим в производственной среде, он все еще жив, поскольку различные другие операционные системы перенимают интересные идеи, которые воплощены в нем, включая протокол 9P для файлового сервера.

5.  Файловые системы

WSL v2 будет иметь сервер протокола 9P, работающий на вашем хосте Windows 10, и клиент 9P, работающий внутри ваших приложений WSL. Это позволяет вам получить доступ к файлам Windows 10 непосредственно внутри вашей среды WSL. Диск C: будет смонтирован в / mnt / c, как и WSL v1, и каждый файл внутри хоста Windows 10 может быть доступен из среды WSL.

Верно и обратное. В вашей среде Linux будет запущен сервер протокола 9P с соответствующим клиентом на хосте Windows 10. Это позволит пользователям получать доступ к файловой системе Linux (ext4) из среды Windows 10. Позволяет редактировать исходный код или файлы конфигурации с помощью вашей любимой среды IDE, установленной в Windows, перечислять все каталоги с помощью проводника файлов Windows 10 и многое другое. По сути, вы будете запускать свои любимые дистрибутивы Linux с пользовательским интерфейсом Windows 10.

6.  Докер

В своем объявлении Microsoft также намекнула, что эта новая среда также будет использоваться Docker для отправки своих будущих приложений Docker для Windows. Поскольку есть ядро ​​Linux, запустить Docker поверх него будет довольно просто. В демонстрации они запускали Docker поверх Ubuntu с WSL v2, и он работал так, как если бы он работал на собственной установке Ubuntu.

Приведу очень поверхностный пример: если вы работали с Dockerfiles в системе Windows, вы, должно быть, заметили проблемы с безопасностью, вызванные отсутствием разрешений на файлы, подобные Unix. Это больше не будет проблемой. Docker в Windows уже использует настраиваемую виртуальную машину для предоставления контейнеров Linux, предположительно, теперь он будет использовать WSL v2 для использования ядра Linux, поставляемого Microsoft.

Заключение

В целом, я очень впечатлен тем, что Microsoft делает, чтобы предоставить убежище разработчикам Linux, которые также хотят использовать Windows. Надеюсь, что в долгосрочной перспективе это будет способствовать перекрестному опылению между двумя разными экосистемами.

Если вы используете Windows 10 Home, Pro или Enterprise Edition, вы можете попробовать WSL v2, выбрав предварительные сборки Windows 10. Вот руководство о том, как это сделать.

Как показать наложение OSD в полноэкранных приложениях и играх Linux
Игра в полноэкранные игры или использование приложений в полноэкранном режиме без отвлекающих факторов может отрезать вас от соответствующей системной...
Топ-5 карт для захвата игр
Все мы видели и любили потоковые игры на YouTube. PewDiePie, Jakesepticye и Markiplier - лишь некоторые из лучших игроков, которые заработали миллионы...
Как разработать игру в Linux
Десять лет назад не многие пользователи Linux могли бы предсказать, что их любимая операционная система однажды станет популярной игровой платформой д...