Після написання автором цих рядків попередньої статті про Windows Subsystem for Linux пройшло більше півроку. За цей час Microsoft встигла випустити перший великий оновлення Windows 10 - Anniversary Update 1607, в якому всі нововведення, включаючи WSL, тепер доступні будь-якому встановив це оновлення користувачеві. WSL стала набагато більш проробленої і, мабуть, «цільної».
У порівнянні із збіркою Windows 10 14316, в якій вперше з'явилася підсистема Linux, в Windows 10 Anniversary Update підсистема виглядає цілком працездатною і прийнятною на практиці (настільки, наскільки це можливо на даному етапі). Стабільність роботи не викликає нарікань. Забігаючи вперед, відзначу найголовніше - в WSL з'явилася можливість запуску графічного оточення та інших GUI-програм (з числа DE це поки що Unity і Xfce), чого не було в попередніх збірках Windows 10. Поки це було зроблено неофіційно, окремими ентузіастами-линуксоидов , а не розробниками WSL, але є надія, що офіційна підтримка запуску повноцінного Linux GUI в WSL лише справа часу.
Unity поверх Windows 10. І це не емулятор
Пам'ятай: спочатку WSL необхідно встановити. З коробки підсистема не запрацює.
Як я вже сказав, за останні півроку розробники WSL встигли грунтовно доопрацювати цю підсистему, що спростило її встановлення та налаштування. А сама Microsoft встигла стати «платиновим» членом Linux Foundation. Років п'ятнадцять тому про таке можна було навіть мріяти. У своїй новій якості Microsoft зобов'язалася підтримувати всі ініціативи Linux Foundation в області відкритого ПЗ і Linux і щорічно перераховувати до фонду 500 тисяч доларів США. Це, безумовно, велике досягнення. В першу чергу для всієї спільноти FOSS (free / libre and open-source software - безкоштовне / вільне і відкрите програмне забезпечення). Через п'ятнадцять років після того, як Стів Балмер назвав Linux раковою пухлиною, нове керівництво Microsoft виявилося куди більш далекоглядним і розумним.
Але повернемося до Windows Subsystem for Linux. Установка власне Windows 10 проходить швидко і просто (майже як установка Ubuntu), і немає потреби описувати її нашому читачеві. Ти можеш вибрати або оновлення з попередньої версії Windows 10, що займають в рази більше часу і сил, або видалити попередню версію і встановити систему з нуля (що я і зробив, і не з ліні, а чистоти експерименту для, щоб система була, що називається, невинно-чистою). Автор цих рядків ось уже більше року є бета-тестером Windows 10, і нові версії доступні йому безкоштовно (від слова зовсім). Якщо ти теж бета-тестер, то у тебе повинна бути ліцензія на нові бета-релізи Windows 10.
В останню версію Windows, Anniversary Update 1607 - «ювілейне оновлення» (незрозуміло, правда, що за ювілей у MS), WSL включається за замовчуванням. Треба лише активувати «Режим розробника» в розділі «Оновлення та безпеку», дочекатися, поки система завантажить так званий пакет розробника, і перезавантажити комп'ютер. Після чого запустити інструмент «Включення і відключення компонентів Windows», де вибрати пункт «Підсистема Linux для Windows ...». І знову перезавантажити комп'ютер.
У російській версії Windows 10 все трохи інакше, але загальний сенс такої ж
Установка bash в WSL проходить без проблем (хоча і не так швидко, як хотілося б). Мені не вдалося з першого разу встановити Unity: інсталятор постійно лаявся на биті пакети. Як виявилося, спочатку потрібно було оновити систему через штатний менеджер пакетів Ubuntu - APT. Після отримання оновлень установка пішла як по маслу і ... тривала на моєму тестовому Dell Inspiron (не самий старий ноутбук, хоча і не топовий) близько дев'яти з половиною годин. Чому - таємниця мені невідома. Однак я помітив, що кожен Ubuntu-пакет встановлювався рази в три-чотири довше, ніж в «чистої» Ubuntu.
Інсталяція bash зводиться до однієї команди в консолі Windows 10
Перед установкою і включенням WSL обов'язково встанови ВСЕ поновлення Windows 10. Інакше можуть виникнути проблеми!
Установка bash - це лише півсправи. Далі починається найцікавіше - встановлення та налаштування X-сервера в Windows і запуск графічних додатків, в тому числі і Unity.
Спочатку Canonical і Microsoft додали можливість запуску Ubuntu поверх Windows 10 для того, щоб надати системним адміністраторам і розробникам можливість використання bash та інших Linux-інструментів і утиліт, таких як make, gawk і grep, безпосередньо в Windows. Користувачі Linux, як справжні хакери (в хорошому сенсі цього слова), не змусили себе довго чекати і негайно приступили до роботи над запуском графічних оточень робочого столу в WSL. І вгадай, що? Вони зробили це. Гватемальський програміст, зареєстрований на GitHub під ніком Guerra24, зміг (цитата) «запустити Unity (робоче оточення за замовчуванням в Ubuntu) всередині WSL. Це говорить про те, що прошарок від Microsoft, в принципі, цілком здатна запускати будь-які оточення робочого столу ».
Завдання це нетривіальна, і те, що в підсумку вийде, важко назвати повноцінним робочим столом Linux, але це тільки початок. Якщо ти хочеш використовувати робочий стіл Ubuntu в Windows 10 в практичних цілях, то краще скористайся будь-який з доступних в даний момент віртуальних машин, наприклад VirtualBox від Oracle. А ось якщо ти просто хочеш повеселитися і прокачати свої навички програмування для робочих столів, то можеш спробувати запустити «нативний» Linux прямо в Windows 10. Для запуску Unity в WSL тобі для початку потрібно встановити (будь-яким доступним способом, бажано легальним!) Версію Windows 10 Anniversary Update за номером 1607. Причому не «домашню» версію, а саму що ні на є «професійну», а то й зовсім «корпоративну». Після установки обов'язково обнови систему і рухайся далі.
Після двох (іноді трьох) перезавантажень в процесі оновлення, щоб встановити bash, необхідно запустити командний рядок Windows (Win + R, ввести cmd - і буде тобі щастя у вигляді «консолі» Windows) і ввести ... так, саме так: bash. Буде запропоновано погодитися з умовами обслуговування (обов'язково прийми їх, вибору в тебе немає!) І завантажити Ubuntu. На цьому етапі тобі потрібно просто натиснути клавішу Y. Розмір завантаження буде не набагато більше одного гігабайта. Так що, якщо у тебе повільний інтернет (так, буває і таке), приготуйся чекати. Потім почнеться установка, яка, в свою чергу, теж займе якийсь час, залежне від продуктивності комп'ютера. І в кінці всього цього ти потрапиш в простір користувача (для користувача оточення) Ubuntu 14.04, що працює поверх WSL.
Технічно ти запустиш не в Linux. Воно може виглядати як Linux, але це не Linux. Справа в тому, що призначене для користувача оточення (той самий bash та інші) працює не поверх ядра Linux, а всередині прошарку WSL. WSL використовує спеціальний API і набір інструкцій, для того щоб все виглядало як в Linux, але все ж це не те ж саме. В основі всього цього все ще стоїть ядро Windows NT. Це важливо розуміти, щоб розібратися в тому, як запускається і працює Unity в WSL.
Після установки Ubuntu обов'язково обнови її, ввівши стандартні для цього команди:
# Apt-get update # apt-get upgrade VcXsrv - X-сервер для Windows
Далі потрібно знову повернутися в Windows 10 і встановити сумісний з нею X-сервер. Для нашого експерименту ідеально підійде VcXsrv. Його побратима Xming краще не використовувати, тому що з ним, з невідомої мені причини, виникає проблема: при спробі запустити будь-який графічний додаток для Linux все просто вилітає, в тому числі і консоль Windows. Але це не все. Потрібно сказати Ubuntu про те, що слід використовувати саме X-сервер VcXsrv. Для цього введи в bash команду
# DISPLAY =: 0.0
Тепер будь-який графічний додаток Linux буде працювати в Windows 10. Але тільки до закриття bash. Щоб WSL працювала з графікою Linux весь час, автоматично вибираючи потрібний для роботи X-сервер, просто додай зазначений рядок в кінець конфігураційного файлу bash (~ / .bashrc):
# Echo "export DISPLAY =: 0.0" >> ~ / .bashrc VcXsrv - X-clock в Windows. Магія!
Firefox для Ubutnu працює відмінно, майже не гальмує!
Після цього ти зможеш запускати будь-які графічні додатки Linux, наприклад Firefox або будь-DE. Однак вони будуть працювати не так, як в Linux, падаючи кожну хвилину, а деякі, наприклад Unity, і зовсім не запустяться. Проблема тут в тому, що WSL не містить в собі коду підтримки сокетів (універсальна концепція обміну даними між процесами в UNIX-подібних системах, подробиці тут ).
Для імплементації концепції сокетов графічні оточення Linux за замовчуванням використовують систему обміну повідомленнями D-bus. Більшість графічних додатків Linux не зможуть навіть запуститися без D-bus, не те що працювати. Але WSL, на щастя, підтримує мережевий протокол TCP, що і спонукало користувача Reddit.com під ніком ShaRose знайти спосіб змусити D-bus використовувати замість гнізд протокол TCP. Рішення не ідеальне, але воно працює. Щоб «прикрутити» D-bus до TCP, введи в bash:
# Sed -i 's / <listen>. * </ Listen> / <listen> tcp: host = localhost, port = 0 </ listen> /' /etc/dbus-1/session.conf Найголовніше - правильно вказати дисплей!
Цією командою ти зміниш конфігураційний файл D-bus так, щоб відтепер він використовував TCP замість гнізд. У цьому тобі допоможе старий добрий потоковий редактор sed. Що в підсумку? Додатки, що вимагають для своєї роботи D-bus, тепер запускаються і в WSL.
Наступний крок - установка графічних додатків Linux. Для початку зроби в консолі WSL ось це:
# Apt-get install ubuntu-desktop # apt-get install unity # apt-get install compiz-core # apt-get install compizconfig-settings-manager Довга установка Unity ...
Перша команда встановить основні графічні компоненти Ubuntu, в тому числі програми для кінцевого користувача, такі як LibreOffice. Наступна команда встановлює робочий стіл Unity. Дві інші команди поставлять композитний віконний менеджер Compiz, який використовує OpenGL, і графічний фронтенд до нього. Саме його і потрібно буде правильно налаштувати на наступному етапі.
Перед тим як почати користуватися оточенням робочого столу Unity в Windows 10, тобі необхідно правильно налаштувати CompizConfig Settings Manager (CCSM). Після установки всіх цих додатків запусти з інтерфейсу bash CCSM і активуй в ньому наступні плагіни (все повинно бути САМЕ так, як на скріншоті!):
налаштування Compiz
У секції General (Загальні):
У секції Desktop (Робочий стіл):
У секції Utility (Утиліта):
У секції Window Management (Управління вікнами):
Далі, щоб все нарешті запрацювало, закрий CCSM і запусти Compiz з bash командою
$ compiz
Приблизно через хвилину ти побачиш запущену оболонку Unity.
Unity у всій красі
Зазначу кілька ключових моментів:
Що ж вийде в підсумку, після стількох мук? А в підсумку (теоретично, так як на практиці виходить поки просто цікавий експериментальний спосіб запуску Unity і інших DE всередині WSL) ми отримаємо середу для тестування Linux-додатків прямо всередині Windows. І Unity, що працює поверх Windows. Звичайно, швидкість роботи і чуйність її не такі, як на реальному залозі, але все ж швидше, ніж у віртуальній машині. Багато додатків, наприклад Google Chrome або Pidgin, просто не запускаються. А ось Firefox, файловий менеджер, магазин додатків та інші системні утиліти Ubuntu працюють на ура (трохи повільніше, ніж в «справжньої» Ubuntu, але працюють!).
Членство в співтоваристві протягом зазначеного терміну відкриє тобі доступ до ВСІХ матеріалами «Хакера», збільшить особисту накопичувальну знижку і дозволить накопичувати професійний рейтинг Xakep Score! Детальніше
Зацікавила стаття, але немає можливості стати членом клубу «Xakep.ru»? Тоді цей варіант для тебе! Зверни увагу: цей спосіб підходить тільки для статей, опублікованих більше двох місяців тому.
Copyleft © 2017 . www.vremya-sporta.od.ua