понеділок, 13 січня 2020 р.

Windows 10 Insider Preview 20H1 + WSL, як це?

Почув я якось про "Windows з ядром linux". Новина вже і не нова, але коли в тебе в якості основної ОС linux вже більше 12 років, то новини в категорії "Microsoft Windows", чесно кажучи, відслідковуєш вже не так пильно.

Дана функція/додаток/платформа у Windows 10 називається Windows Subsystem on Linux (WSL). Наразі WSL версії 2 доступна в збірці для "інсайдерів" (користувачів, що приймають участь в тестуванні бета-версій ОС на ранніх етапах) у Win10 версії 20H1.

Про те, яка гарна ця версія Win10 можна почитати тут.
Порядок додавання нових "фішок" − знизу-вверх.
А може саме на цій сторінці і описано частину процесу трансформації ОС Windows 10 в загадкову ОС з тимчасовим ім'ям "LiteOS/Windows Lite", яка має "з'явитися" весною 2020-го? Хтозна!

А тепер серйозно! Що ж це таке "Windows з ядром linux"?

З українського розділу Wikipedia:
Windows Subsystem for Linux (WSL)це прошарок сумісності для запуску виконуваних файлів операційної системи Linux (в Executable and Linkable Format) в середовищі Windows 10. WSL надає можливість використання Лінукс-сумісного ядра інтерфейсу розробленого компанією Microsoft, і в свою чергу надає можливість використовувати GNU користувацький простір, так як і Ubuntu, openSUSE, SUSE Linux Enterprise Server, Debian та Kali Linux. Також користувацький простір може містити доступні команди Bash, зі звичайними GNU/Linux командами-застосунками (sed, awk, і т. д.) і інтерпретаторами мов програмування (Ruby, Python, і т. д.).

Тобто, це − точно не "Windows з ядром linux" як пишуть сайти новин. Насправді - це проект GNU (всі ті відомі лінуксоїдам програми) + ядро від Microsoft .
Хороша стаття є тут для розуміння відмінності в термінології (стаття англійською мовою).

Але все рівно хочу глянути як це виглядає, оцінити складність встановлення для звичайного користувача. Якщо цікаво - натискаємо Детальніше!


Встановлювати буду збірку Windows 10 20H1 Compact (19030.1).
"Compact" − це лише функція ОС Windows 10 для стискання бінарних файлів на системному диску. А дана збірка - лише можливість встановити Windows 10 із стисканням бінарних файлів для зменшення розміру файлів встановленої системи. Мене цікавить саме WSL, тому підійде і збірка, а не чистий образ.

Після встановлена Windows 10 20H1 Compact (19030.1) у віртуальній машині VirtualBox:

1. Активую WSL
Для цього необхідно запустити PowerShell із правами адміністратора та ввести команду
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Детальніше на сайті Microsoft.
(Або ж можна просто увімкнути "галочку" у вікні "Компоненты Windows" :)).
2. Завантажую дистрибутив тут (Ubuntu 18.04)
3. У вікні PowerShell із правами адміністратора
3.1. Переходжу в каталог завантаженого файла cd c:\temp
3.2. Встановлюю "дистрибутив" Ubuntu
Команда PowerShell Add-AppxPackage .\app_name.appx

Після завершення встановлення в меню Пуск з'являється ярлик Ubuntu
Поки-що все легко для звичайного користувача.

4. Після запуску ярлика потрібно вказати ім'я користувача GNU/kWindows, придумати пароль, підтвердити пароль. Тут же написано, що запускати додатки ми можемо використовуючи команду-приставку sudo. Ну чим вам не "linux"?

Відразу скажу, що запуск команд від sudo в мене на запрацював. Скрипт не сприйняв пароль, встановлений для користувача. Запрацювало лише коли встановив такий самий пароль командою sudo passwd

Подивитись версію WSL можна командою PowerShell
wsl -l -v

Перемикатись між версіями WSL можна командою
wsl --set-version <Distro> 2

Як бачимо, на версію 2 можна перемкнутись лише із включеними параметрами віртуалізації в BIOS (тобто на реальній ОС, а не встановленій у віртуальній машині як у мене).
Але наразі - це не важливо. Різниці у вигляді між версіями не буде.

До речі, про вигляд того всього для користувача: доки запущені стандартні команди оновлення списку пакетів та самих пакетів в "Ubuntu" − запускаємо диспетчер задач. 
Щось це мені нагадує... Процеси в загальному Диспетчері задач, каталог rootfs...

Та це ж як LXC-контейнери в Linux! 

LXC-контейнери - це теж із розряду віртуалізації. Але в цьому випадку відбувається віртуалізація на базі операційної системи (запускати безліч дистрибутивів linux на базі ядра основної ОС). Використання ресурсів основного комп'ютера при цьому - в десятки (у випадку великої кількості віртуальних дистрибутивів − в сотні) разів менше.

Як на мене, час виконання стандартних задач оновлення нашої системи GNU/kWindows (команди apt-get update, apt-get upgrade для Ubuntu) виконувався надто довго.

Я можу створити текстовий файл в "Ubuntu" і знайти його в Win10?

Так, я можу створити текстовий файл "test.txt" з якимось текстом в домашньому каталозі нашого "linux-а" просто ввівши в "консолі" нашого "Ubuntu" послідовно команди:
1) vim test.txt (створення файлу і відкриття його в редакторі vim)
2) "hello world" (власне, пишемо текст)
3) :wq (write & quite в командному режимі, зберігаємо файл і виходимо з редактора)

Я зможу знайти, щойно створений файл в системі Windows10 за адресою
C:\Users\user\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\user1\test.txt

Вау! Тут вже був встановлений редактор vim, а не я його встановив. Запускається дійсно редактор vim. Можна запустити команду ls з ключами ls -la для відображення всіх файлів списком в поточній теці, а не так як в PowerShell, команда ls вже показує файли списком без ключів. Все вірно - це проект GNU + ядро Windows.

Я можу створити файл в Win10 та знайти його в Ubuntu?

Так. Файли, створені з під Win10 в Ubuntu виглядають, як ті що належать моєму користувачу, але без будь-яких прав (файл test3.txt на знімку).
Зміна прав (sudo chown 777 test2.txt) вирішує цю проблему (файл test2.txt на знімку).

В lxc-контейнерах, обмін файлами між файловою системою (ФС) контейнера і основною ФС вирішується інакше. Надіюсь тут теж буде щось подібне передбачено. Все-таки це ще тільки бета-версія :) Я провів лише експерименти для доступу до файлів "втупу".

ОК. З консольними додатками зрозуміло. Головне запитання далі:

Чи можна запустити графічні додатки GNU/Linux через WSL?

Офіційно − ні.
Не офіційно − так. Для цього необхідно встановити графічний сервер (для Windows це VcXsrv).
1) Встановлюємо, завантажений exe-файл
2) Запускаємо сервер
3) В консолі "Ubuntu" пишемо
export DISPLAY=:0
4) Далі - назву додатка для запуску (за необхідності відповідний пакет потрібно спочатку встановити)

Особисто в мене вийшло запустити додаток xeyes та nautilus. Gimp не запустився.




P.S.
Для чого Microsoft це все робить? Для розробників, які працюють на Unix-подібних ОС?
Я думаю, ні. Будь-хто із них запустить програму Windows в емуляторі Wine, або ж, на крайній випадок − у VirtualBox.
Для розробників, які "сидять" на Windows і яким потрібний функціонал unix?
Знову ж таки, навіщо? Той самий VirtualBox і тут допоможе!

Там точно не буде тих проблем, які є у випадку використання WSL.

Скоріше за все Microsoft просто хоче попіаритися за рахунок всіх тих програм/пакетів, які відомі "лінуксоїдам" і розроблялися спільнотою "GNU" :(


Додаткові посилання:
Спор об именовании GNU/Linux

Немає коментарів:

Дописати коментар