Возможность использовать пользовательский интерфейс Ubuntu под Windows — это, пожалуй, самый большой сюрприз с открытым исходным кодом в этом году. Теперь Microsoft объясняет, как это работает.
Это малоизвестно, но Windows на какое-то время смогла предложить некоторую поддержку приложений Linux в виде подсистемы Posix, которая в конечном итоге стала Subsystem for Unix Applications SUA. Однако в большинстве случаев это не срабатывало, и вряд ли кто-то этим воспользовался.
Это не относится к подсистеме Windows для Linux. Времена изменились, и даже Microsoft понимает, что все мы должны в какой-то момент подключиться к Linux. В большинстве случаев это просто сервер или необходимость настроить IDE для использования удаленного размещенного компилятора. Иногда возможность запускать команды Linux под Windows упростила бы задачу. Это то, что делает подсистема Windows для Linux WSL.
Были некоторые предположения о том, как работает WSL и насколько далеко вы можете его продвинуть. Некоторым пользователям даже удалось заставить работать приложения, использующие графический интерфейс, путем установки сервера Xwindows под Win32.
Теперь у нас есть новая информация от Microsoft о том, как все это работает, с указанием ограничений.
Даже по системной диаграмме сложно понять, что происходит и что важно.
Ключевой идеей, похоже, является процесс Pico, изобретенный в рамках проекта Drawbridge от Microsoft Research. Это что-то вроде контейнера, скрещенного с виртуальной машиной.
Оболочка Bash работает как процесс Win32 и взаимодействует с подсистемой Linux через брокера, менеджера LXSS. Это используется для запуска других двоичных файлов Linux в качестве процессов pico.
Все двоичные файлы Linux, запущенные одним пользователем, входят в один экземпляр Linux. Процесс pico имитирует системные вызовы Linux (syscall), обычно переводя их в эквивалентные вызовы Windows, но иногда реализуя их как набор вызовов. В качестве примера приведен Linux fork (), который должен быть реализован как операция копирования и NtcreateProcess. Реализация системных вызовов выполняется с помощью реализации lxcore.sys в чистой комнате. т.е. без использования какого-либо кода из ядра Linux.
Файловая система Linux также моделируется с использованием файловой системы NTFS. Система VolFs предоставляет нечто похожее на стандартную файловую систему Linux, включая обычные каталоги / etc / bin и домашнюю папку. Эта эмуляция поддерживает разрешения в стиле Linux, символические ссылки и имена файлов. Приложения Windows не имеют доступа к VolF. Однако у них есть доступ к DriveF, который совместим. Он использует имена файлов Windows и безопасность. Все диски Windows монтируются в обычный каталог / mnt.
Обратите внимание, что нет возможности устанавливать или монтировать какие-либо другие файловые системы Linux, поскольку это все мираж, созданный с использованием стандартных файлов NTFS.
Если вы хотите видео-объяснение, смотрите:
Если вы хотите повлиять на развитие системы Linux, посетите User Voice, где уже есть потрясающий выбор предложений для будущего направления. Мне больше всего нравится стандартизовать / для всех путей — не понимаю, почему бы и нет.
Интересно порассуждать, чем все это закончится.
Сможем ли мы когда-нибудь в будущем работать с LinWin и задаться вопросом, почему вообще произошел раскол?
Нет, это слишком надумано.