Microsoft підтвердила чутки про інтеграцію підсистеми Linux Windows 10

Microsoft пече. Нещодавно ми писали про присутність спеціальних системних файлів з назвами LXss.sys і LXCore.sys у новітньому билде Windows 10, який використовується розробниками програм і драйверів, а також тестерами в службових цілях. У драйверах містився код розбору заголовків ELF-файлів, а також інші системні функції, характерні для Linux і відсутні в Windows NT by design. Вже тоді стало очевидно, що Microsoft збирається серйозно зайнятися інтеграцією підсистеми Linux Windows 10.



У компанії вже був подібний досвід. Оригінальна концепція Windows NT (на якій заснована Windows 10) передбачала присутність там трьох підсистем: рідна MS Win32, UNIX POSIX, а також IBM OS/2. Обидві останні підсистеми відвалилися десь по дорозі, яка вела до перетворення Windows 2000, Windows XP, а сама POSIX перекочувала в окремий інструмент без можливості присутності в дистрибутиві Windows за замовчуванням. Те ж стосується мікропроцесорної архітектури Alpha, від підтримки Microsoft також відмовилася з виходом Windows XP. Залишається тільки гадати, скільки протримається у Windows підсистема Linux.

Варто відзначити, що по-перше, архітектура ядра Windows 10, як і інших версій Windows NT, має на увазі під собою інтеграцію інших ОС, хоча б на рівні підтримки запуску додатків з можливістю реалізації відповідних системних викликів з відповідною семантикою. Для цього був запроваджений допоміжний рівень підсистем, що у випадку з Win32 називається NT layer (ntdll). Інші бібліотеки підсистем також мали доступ до ядра і могли відтворювати поведінку системних викликів, яке було потрібно конкретній підсистемі (наприклад, fork в POSIX, яка виконувала розгалуження процесів).

По-друге, концепції Windows NT і Linux багато в чому схожі: обидві засновані на монолітному ядрі, розбитому на підсистеми, обидві використовують схожі механізми реалізації об'єктів ядра і межпроцессного взаємодії, а також обидві беруть свої витоки в концепції ядра оригінальної UNIX.

Нам складно сказати, що саме спонукало Microsoft на інтеграцію в Windows 10 другої підсистеми, однак, як і в інших випадках компанія підійшла до цього досить грунтовно, не спираючись на будь-які підходи псевдо-емуляції або віртуальних машин. Всі перераховані вище підсистеми розроблялися виключно як native і мали схожі з Win32 повноваження в реалізації власних функцій підсистем.

І так, по суті. Анонс нової підсистеми відбувся на відомій конференції Microsoft під назвою Build 2016, на якій анонсуються програмні новинки компанії. Було заявлено, що в майбутній версії Windows 10 користувачі зможуть користуватися послугами командного інтерпретатора Linux, відомого як bash, що в свою чергу відразу вказує на присутність в Windows завантажувача виконуваних ELF-файлів, а також середовища (підсистеми) для їх виконання і стандартних інструментів типу ssh, grep, sed, awk. В якості еталону була обрана Ubuntu Linux.


Рис. Слайд презентації «Linux on Windows». На слайді зазначено, що мова йде саме про повноцінної підсистемі Linux, а не про псевдо-емуляції або віртуальних машинах. Так, Linux стає частиною Windows 10 і так само як POSIX і OS/2 буде працювати в режимі користувача з реалізацією семантики системних викликів на рівні ядра.


Рис. Власне архітектура або все те, що ми говорили вище, плюс спеціальна підтримка семантики системних викликів Linux на рівні ядра, за що і відповідають два драйвера, зазначених в самому початку.


Рис. Так як Linux стає повноцінною підсистемою і складовою частиною Windows, її командний інтерпретатор можна викликати через оболонку Windows Shell або ж командний інтерпретатор, як і показано на слайді.


Рис. 3. Демонстрація роботи відомої UNIX-команди ls для виводу списку вмісту директорії.


Рис. 4. Утиліта readelf для аналізу заголовка ELF-файл в дії.


Рис. 5. Компілятор виконуваних файлів gcc.


Рис. Є над чим попрацювати. :)

Повне відео демонстрації роботи підсистеми Linux на Windows можна подивитися тут.

Джерело: Хабрахабр
  • avatar
  • 0

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.