Полезные материалы

Linux для Windows. Запускаємо повноцінний десктоп Ubuntu всередині Windows 10

  1. Зміст статті Після написання автором цих рядків попередньої статті про Windows Subsystem for Linux...
  2. WSL. через півроку
  3. INFO
  4. X Window, Unity і все-все-все
  5. Продовження доступно тільки учасникам
  6. Варіант 2. Відкрий один матеріал

Зміст статті

Після написання автором цих рядків попередньої статті про 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. І це не емулятор

Unity поверх Windows 10

WARNING

Пам'ятай: спочатку WSL необхідно встановити. З коробки підсистема не запрацює.

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

Інсталяція bash зводиться до однієї команди в консолі Windows 10

INFO

Перед установкою і включенням WSL обов'язково встанови ВСЕ поновлення Windows 10. Інакше можуть виникнути проблеми!

X Window, Unity і все-все-все

Установка 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 # Apt-get update # apt-get upgrade   VcXsrv - X-сервер для Windows 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 # Echo export DISPLAY =: 0 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 # Sed -i 's / <listen> Найголовніше - правильно вказати дисплей!

Цією командою ти зміниш конфігураційний файл 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 # Apt-get install ubuntu-desktop # apt-get install unity # apt-get install compiz-core # apt-get install compizconfig-settings-manager   Довга установка Unity Довга установка Unity ...

Перша команда встановить основні графічні компоненти Ubuntu, в тому числі програми для кінцевого користувача, такі як LibreOffice. Наступна команда встановлює робочий стіл Unity. Дві інші команди поставлять композитний віконний менеджер Compiz, який використовує OpenGL, і графічний фронтенд до нього. Саме його і потрібно буде правильно налаштувати на наступному етапі.

Перед тим як почати користуватися оточенням робочого столу Unity в Windows 10, тобі необхідно правильно налаштувати CompizConfig Settings Manager (CCSM). Після установки всіх цих додатків запусти з інтерфейсу bash CCSM і активуй в ньому наступні плагіни (все повинно бути САМЕ так, як на скріншоті!):

налаштування Compiz

  1. У секції General (Загальні):

    • Commands (Команди)
    • Composite
    • Copy to texture
    • OpenGL
  2. У секції Desktop (Робочий стіл):

  3. У секції Utility (Утиліта):

  4. У секції Window Management (Управління вікнами):

    • Place Windows (Перемістити вікно)
    • Resize Window (Зміна розмірів вікна)
    • Scale (Масштаб)
    • Snapping Windows
  5. У секції Image Loading (Завантаження зображення):

Далі, щоб все нарешті запрацювало, закрий CCSM і запусти Compiz з bash командою

$ compiz

Приблизно через хвилину ти побачиш запущену оболонку Unity.

Приблизно через хвилину ти побачиш запущену оболонку Unity

Unity у всій красі

Зазначу кілька ключових моментів:

  1. Якщо ти і правда хочеш запускати іксові додатки в WSL, встановлюй як X-сервера VcXsrv, а не Xming. Дослідним шляхом доведено, що Xming не бажає нормально працювати з WSL.
  2. Після установки CCSM необхідно налаштувати його саме так, як показано на зображенні (тобто включити те, що зазначено галочками, і вимкнути все інше). Тільки тоді Unity зі скрипом, не з першої спроби, але запуститься.
  3. Краще не встановлювати пропрієтарні драйвери ATI для Ubuntu всередині WSL. Це призводить до повного зависання всієї системи (в тому числі і Windows 10) і тягне за собою тотальну переустановку WSL з усіма наслідками, що випливають.
  4. Засмучу тебе: не варто покладати на отриманий милицю великі надії. Нормально ЦЕ працювати не буде. Але на моїй тестовій машині Unity всередині WSL працювала цілком нормально. Суб'єктивно - трохи повільніше, ніж в нативному Linux. Бути може, в майбутньому хтось доведе все це справа до розуму. І від Unity в WSL таки буде користь.

Що ж вийде в підсумку, після стількох мук? А в підсумку (теоретично, так як на практиці виходить поки просто цікавий експериментальний спосіб запуску Unity і інших DE всередині WSL) ми отримаємо середу для тестування Linux-додатків прямо всередині Windows. І Unity, що працює поверх Windows. Звичайно, швидкість роботи і чуйність її не такі, як на реальному залозі, але все ж швидше, ніж у віртуальній машині. Багато додатків, наприклад Google Chrome або Pidgin, просто не запускаються. А ось Firefox, файловий менеджер, магазин додатків та інші системні утиліти Ubuntu працюють на ура (трохи повільніше, ніж в «справжньої» Ubuntu, але працюють!).

Продовження доступно тільки учасникам

Варіант 1. Приєднайся до товариства «Xakep.ru», щоб читати всі матеріали на сайті

Членство в співтоваристві протягом зазначеного терміну відкриє тобі доступ до ВСІХ матеріалами «Хакера», збільшить особисту накопичувальну знижку і дозволить накопичувати професійний рейтинг Xakep Score! Детальніше

Варіант 2. Відкрий один матеріал

Зацікавила стаття, але немає можливості стати членом клубу «Xakep.ru»? Тоді цей варіант для тебе! Зверни увагу: цей спосіб підходить тільки для статей, опублікованих більше двох місяців тому.


І вгадай, що?
Що в підсумку?
Що ж вийде в підсумку, після стількох мук?
Ru»?