Už je tomu pět let, co Microsoft představil speciální vrstvu Windows Subsystem for Linux (WSL) a vedle staré dobré příkazové řádky CMD.EXE a PowerShellu umožnil na Desítkách spouštět také terminál linuxového operačního systému Ubuntu a jeho textové programy.
V následujících letech se nabídka linuxů pro Windows rozšířila o další tituly, a dnes si tak můžete počítač s Desítkami otučňákovat distribucemi Debian, Kali, openSUSE a SLES v různých verzích.
K čemu je to vlastně dobré? Podstatná část vývojářského, inženýrského a akademického světa jede alespoň nějakým dílem na Linuxu, WSL je tedy jednou z cest, jak jej co možná nejelegantněji dostat i do Windows.
WSL je speciální vrstva Windows 10 s linuxovým jádrem od Microsoftu, nad kterým může běžet některá z podporovaných linuxových distribucí
Jak je to přesně elegantní? Od příští verze Desítek (případně ve Windows 10 Insider počínaje sestavením 20262) stačí otevřít příkazovou řádku s právy administrátora a zadat primitivní formuli:
wsl --install
Operační systém aktivuje všechny potřebné komponenty a po restartu počítače stáhne a nainstaluje výchozí Ubuntu, jehož ikona se rázem objeví v nabídce Start. Starý způsob aktivace WSL je o něco košatější, ale zvládne jej i vaše babička.
Nová a opravdu stručná instalace WSL na Windows 10 Insider
Technologická lahůdka
Pokud vás zdůvodnění existence celého WSL ani náznakem nepřesvědčilo, pak tuto exotickou vrstvu operačního systému berte alespoň jako zajímavou technologickou libůstku, která dělá z Windows 10 bezesporu unikátní operační systém, na kterém můžete spouštět aplikace z obou natolik rozdílných světů. Že je vám to k ničemu? O to tu nejde. Jde tu o to, že je to vůbec možné.
Chceme grafický Linux na Windows
Z textového programu, případně třeba skriptu v Pythonu (který je nedílnou součástí drtivé většiny linuxových OS), se ale běžný smrtelník na zadek opravdu neposadí. A nejen ten, i cílovka WSL dlouhé roky volala: WSL je sice fajn, my ale chceme spouštět grafické linuxové programy!
Nastavení VcXsrv Windows X Serveru
A Windows Subsystem for Linux se to postupem času skutečně naučil. Inženýři zapracovali na podpoře síťových služeb a jednou z nich je i systém X s architekturou klient-server, který se postará o vykreslení uživatelského rozhraní.
Když tento X poběží namísto na Linuxu na Windows jako běžná služba na pozadí, linuxový systém uvnitř WSL se s ní spojí skrze standardní TCP/IP rozhraní a vykreslí okno programu podobným způsobem, jako když se připojujete ke vzdálené ploše kdesi na internetu.
Hele, linuxový Firefox na Windows
A tak stačilo na Windows 10 nainstalovat třeba populární VcXsrv Windows X Server, v samotném Linuxu příkazem:
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
vytvořit proměnnou DISPLAY, která Linuxu řekne, na jaké IP adrese se nachází monitor, který má zobrazovat okna programů, a konečně stáhnout balíček s nějakou tou grafickou aplikací pro Linux. V případě Ubuntu třeba balíček firefox se stejnojmenným webovým prohlížečem:
sudo apt install firefox -y
Když bychom nyní v terminálu WSL napsali firefox a stiskli Enter, na Windows prakticky bez čekání vyskočí Firefox. Nebude to ovšem Firefox pro Windows, ale Firefox pro Ubuntu. Firefox, který běží na Linuxu a sám o sobě nemá nejmenší potuchy o tom, že je život ve skutečnosti o něco složitější.
Linuxový Firefox spuštěný uvnitř WSL Ubuntu, ale zobrazený na Windows
Chceme nativní podporu grafického Linuxu ve Windows!
Vrstvě WSL by nicméně mnohem více slušelo, kdyby uměla spouštět grafické aplikace sama o sobě. To by byla bomba, skutečně by se totiž začaly pomalu stírat rozdíly mezi Windows a Linuxem, což by mělo do budoucna docela zajímavé konsekvence.
Představte si Microsoft Store, který obsahuje nejen univerzální a desktopové aplikace pro Windows, ale i desktopové aplikace pro Ubuntu a další distribuce, no a když takový program nainstalujete, tak se skutečně zobrazí v nabídce Start Windows 10.
A to vše, aniž by se jednalo jen o fígl s klasickou bezešvou virtualizací, kdy se na pozadí a skrytě spouští celé Ubuntu či jiný operační systém, aby poté sám o sobě sežral několik gigabajtů RAM. Fuj! Nic takového!
Tak jo, tady máte WSLg
Prvními snímky, že na tom inženýři z Redmondu skutečně pracují, ukázal Microsoft už loni na své vývojářské konferenci Build, no a teď už to funguje. Zpočátku ale jen v testovací verzi Windows 10 Insider a sestavení nejméně 21364.
Počínaje touto verzi totiž už Microsoft WSL překřtil na WSLg a chce tím naznačit jednu jedinou věc. Teď už je to Windows Subsystem for Linux GUI!
Umíme grafický Linux na Windows 10, chlubí se Microsoft:
Fuj, já nechci Průzkumník. Já chci používat Gnome Files!
Co to znamená v praxi? Představme si nějaký vzdálený paralelní vesmír a v něm třeba Roberta. Robert má na počítači Windows, ale má i bohaté zkušenosti s Ubuntu a dalšími linuxovými distribucemi s grafickým desktopem Gnome.
Robertovi se líbí správce souborů Gnome Files/Nautilus a chce ho mít i ve Windows. Neřešme teď prosím praktičnost a vůbec smysl tohoto rozhodnutí. Jsme totiž v tom vzdáleném vesmíru a Robert to tak prostě chce.
Gnome Files na Windows. Neptejte se proč. Žasněte, že to je možné.
Robert proto spustí z nabídky Start Windows 10 příkazovou řádku Ubuntu a zadá instrukci k instalaci Nautila:
sudo apt install nautilus -y
Nautilus si myslí, že jej instalujeme na Ubuntu, a tak jeho balíček požádá systém, aby vytvořil zástupce v jeho nabídce nainstalovaných programů. WSL tuto informaci korektně přeloží a zástupce vytvoří v nabídce Start, jako by se jednalo o jakýkoliv jiný program pro Windows.
Přejete si dlaždici s Gnome Files v nabídce Start? Žádný problém!
Když Robert klepne na zástupce Nautila, který je pro přehlednost označený drobným obrázkem linuxového maskota – tučňáka Tuxe, program bez prodlevy naběhne a zobrazí linuxový adresářový systém Ubuntu.
Jenže pozor, nejedná se o dva izolované světy. WSL a Windows 10 jsou z hlediska UX úzce propojené a tvoří jeden celek. Robert najde adresářovou strukturu Windows a jeho diskové oddíly v čele s C:\ na standardní linuxové cestě /mnt/c/.
Z Windows můžeme nahodit grafickou linuxovou aplikaci skrze spouštěč wslg.exe
Provázanost je obousměrná (byť ještě stále nekompletní), takže když se podíváme, kam vlastně vede zástupce Nautila v nabídce Start, zjistíme, že se jedná o zástupce programu:
C:\Windows\System32\wslg.exe ~ -d Ubuntu nautilus --new-window
Tímto způsobem můžeme z Windows spustit jakýkoliv nainstalovaný grafický program v Linuxu. Parametr -d vrstvě WSLg říká, o jakou se jedná distribuci (můžete jich mít hromadu vedle sebe), nautilus je název linuxového spustitelného souboru, no a parametr --new-window říká, že se má program zobrazit v novém okně.
AMD, Intel a Nvidia už mají ovladače pro WSLg
Samotné vykreslování linuxového GUI na desktopu Windows může být ve výchozím stavu o něco pomalejší, protože se v nitru musejí překládat instrukce z jednoho světa do druhého, Nvidia, AMD a Intel už ale vydali experimentální generické ovladače grafické karty pro WSL. S jejich pomocí pak budou grafické linuxové programy nad Windows hardwarově akcelerované a svižné jako blesk, aniž byste cokoliv poznali.
Toto není Gimp pro Windows. Toto je Gimp pro WSL Ubuntu zobrazený ve Windows a v něm sférické panorama Brna s rozlišením 33,5 Mpx. Pro WSLg žádný problém a zobrazení bez citelnější latence.
Aby to v Redmondu podpořili něčím hmatatelnějším, spustili skrze WSL třeba softwarový robotický 3D simulátor Gazebo, který není k dispozici pro Windows. S GPU akcelerací dosáhli na snímkovací frekvenci 3D scény rovných 60 fps.
Spouštíme MS Edge pro Linux na Windows
Díky podpoře grafických linuxových programů ve Windows se doslova nabízejí některé bizarní experimenty. Třeba si můžete v nitru WSL Ubuntu nainstalovat betaverzi prohlížeče Microsoft Edge, no a pak ji spustit vedle toho z Windows 10.
Stáhnu si do WSL Ubuntu instalační balíček MS Edge pro Linux a nainstaluji ho
Ještě jednou, stáhnete program od Microsoftu pro Linux, nainstalujete jej v Linuxu, no a pak jej spustíte na Windows. Jestli znáte nějaký lepší softwarový Inception, sem s ním.
MS Edge pro Windows a nad ním MS Edge pro Linux. Je toto vůbec legální, aniž by implodoval vesmír? Červená šipka označuje ikonu linuxového Edge označeného tučňákem.
Přitom se ani zdaleka nejedná o nonsens a vyslovenou pitomost, takový vývojář webové aplikace totiž může to samé udělat s Firefoxem, Chromem apod. a bez složité a systémově náročné virtualizace vyzkoušet, jak bude jeho web vypadat na cizí platformě. Anebo je tu bezpečnostní aspekt. Firefox pro Linux nenakazíte virem pro Windows.
Jak to funguje? Několik linuxů vedle sebe
Z inženýrského hlediska je neméně zajímavý pohled na to, jak to vlastně celé funguje. V rámci WSLg totiž na Windows běží hned dva linuxové systémy. Ten váš uživatelský pro WSL – třeba právě Ubuntu – a ještě jeden skrytý a dostatečně minimalistický CBL-Mariner přímo od Microsoftu. Kluci a holky z Redmondu jej už roky vyvíjejí a používají pro své interní operace.
CBL-Mariner je tak třeba i základem síťového switche SONiC, který se stará o propojení datových center Microsoftu. S příchodem WSLg je tentýž Mariner i v nitru klientských Windows. Je ironií osudu, že mnohé kritické systémy redmondské korporace, jejíž CEO kdysi dávno prohlašoval, že je Linux rakovina, by se dnes bez téhož Linuxu už neobešly a Microsoft si jej také sám vyvíjí.
X, Wayland a RDP
A teď ta magie. Když spustíte z Windows náš linuxový Edge, Firefox atp., Ubuntu se skrze protokol X11 (to je ten X server z úvodu) nebo novější Wayland spojí s okenním manažerem CBL-Marineru, no a ten poté GUI prvky odešle zpět do Windows skrze protokol vzdálené plochy RDP, kde vše definitivně zpracuje bezešvý RDP klient.
Architektura celé této taškařice
Vypadá to divoce, vypadá to, že to musí být neuvěřitelně pomalé a systémově náročně, ale zejména se zmíněnou GPU akcelerací v podstatě nepoznáte rozdíl. Ještě jednou, pokud jste zvyklí na klasickou plnotučnou virtualizaci, WSLg není to samé jako kompletní a izolovaná virtualizace celého systému třeba v populárním VirtualBoxu, který zbaští několik GB RAM a zatíží CPU.
Microsoft opravdu ❤️ Linux?
Microsoft používá linuxové systémy stále větší měrou, nabízí se tedy kacířská otázka, jestli by nakonec nebylo snazší na linuxové jádro přejít i na Windows jako takových a naopak jej pouze obalit kompatibilní vrstvou pro spouštění klasických aplikací pro Windows.
Podobné spekulace čas od času skutečně probublají na veřejnost – zvláště poté, co některý z redmondských manažerů jen tak mimoděk prohlásí, že je open-source vlastně docela fajn, zatím to ale není na pořadu dne.
Na stranu druhou, na pořadu dne ještě nedávno nebylo ani to, že bude redmondský webový prohlížeč Edge vlastně jen převlečené Chromium – tedy svobodná verze Chromu, která se rodí pod kuratelou konkurenčního Googlu.
Peklo opět zamrzlo: Windows 10 se naučily spouštět grafické programy z Linuxu - Živě.cz
Read More
No comments:
Post a Comment