Prvýkrát, Linuxové jadro je možné spustiť priamo vo webovom prehliadačibez emulátorov alebo virtuálnych počítačov. Toto Toto bolo možné vďaka sérii záplat ktoré implementujú Architektúra Wasm (WebAssembly) v jadre, čo umožňuje jeho kompiláciu do medzikódu spustiteľného vo webových prostrediach. Hoci Toto je experimentálny dôkaz konceptu., predstavuje zlomový bod v konvergencii medzi operačnými systémami a webovými technológiami.
Projekt, ktorý sa vyvíja už viac ako dva roky, umožňuje používateľom spustiť Linux vo webovom prehliadači a spúšťať štandardné programy pomocou prostredia založeného na BusyBoxe a musl, všetko skompilované do WebAssembly. Xterm.js sa používa ako terminálový emulátor pre interakciu s používateľom a poskytuje funkčnú konzolu v prehliadači.
Okrem toho je k dispozícii verejná demoverzia kompatibilná s prehliadačmi Chromium a čiastočne aj s Firefoxom, ktorá dokáže načítať jadro Wasm za menej ako sekundu na moderných počítačoch.
Ako funguje Linux vo Wasm?
Na rozdiel od konvenčných architektúr, WebAssembly neumožňuje pozastavenie vlákien ani úpravu kódu za behu, ktorý To predstavuje výzvu pre plánovač úloh jadra.Na prekonanie týchto obmedzení vývojári prijali dômyselné riešenie: Každá úloha alebo vlákno beží na samostatnom virtuálnom procesore, ktorý spravujú Web Workers. prehliadača. Týmto spôsobom je multitasking implementovaný prostredníctvom samotného prehliadačového enginu, ktorý funguje ako hostiteľský operačný systém.
Výsledok je model, v ktorom jadro Linuxu beží v izolovanom webovom prostredíso skutočným multitaskingom a medziprocesovou komunikáciou prostredníctvom kanálov správ (postMessage() a SharedArrayBuffer). Avšak Prerušenia a signály ešte nie sú plne funkčné, a niektoré kritické funkcie, ako napríklad vfork() a longjmp(), zostávajú nepodporované.
Medzi hlavnými Medzi súčasné obmedzenia patrí absencia MMU (jednotka správy pamäte), nemožnosť úpravy načítaného kódu a sporadické pády v konzole po niekoľkých minútach používania. Napriek tomu testy ukazujú, že systém dokáže vykonávať základné príkazy BusyBoxu a udržiavať procesy aktívne na pozadí, čo potvrdzuje potenciál tohto prístupu.
Za hranicami demonštrácie: nový horizont pre Wasm
Rozsah projektu presahuje rámec jednoduchého spúšťania Linuxu v prehliadačoch. Architektúra Wasm pre Linux by mohla slúžiť ako základ pre vytváranie multiplatformových aplikácií WebAssembly s integrovanými systémovými volaniami Linuxu, bez závislosti od plného jadra. To otvára dvere k spúšťaniu izolovaných aplikácií pomocou WASI (WebAssembly System Interface) a vývoju extrémne prenosných sandboxových systémov.
Vývojári Taktiež plánujú rozšíriť podporu grafického prostredia implementáciou EGL a OpenGL ES. Čo sa týka WebGL, toto by umožnilo spúšťanie vizuálnych rozhraní v prehliadači. Okrem toho sa plánuje podpora pre ladiaci formát DWARF, ktorý umožní ladenie kódu C riadok po riadku priamo z nástrojov prehliadača.
Technické výzvy a ďalšie kroky
El Projekt stále čelí problémom so stabilitouako sú náhodné zlyhania alebo chyby poškodenia pamäte. Tieto nevýhody, podrobne zdokumentované, odrážajú inherentné ťažkosti s prispôsobením kompletného operačného systému prostrediu pôvodne navrhnutému pre webové aplikácie. Napriek tomu, Tí, ktorí sú zodpovední za rozvoj, sú presvedčení, že budúce rozšírenia Funkcie štandardu WebAssembly, ako napríklad pozastavenie vlákien, prepínanie zásobníkov alebo funkčná MMU, nám umožnia prekonať súčasné obmedzenia.
Čo sa týka výkonu, aktuálna verzia uprednostňuje ladenie pred rýchlosťou. Predpokladá sa však, že budúce optimalizácie, ako napríklad hibernácia predinštalovaného systému Wasm, by mohli umožniť okamžité načítanie jadra. Použitie funkcie Atomics.waitAsync() a priama komunikácia medzi workermi tiež sľubuje zníženie réžie medzi JavaScriptom a kódom WebAssembly.
Pozvánka na zážitok
Úložisko wasm-linux ponúka skripty a prostredia na zostavovanie Vďaka tomu si túto adaptáciu môže vyskúšať ktokoľvek, či už v lokálnom prostredí alebo pomocou Dockeru. V niekoľkých krokoch môžete skompilovať LLVM, jadro, BusyBox a musl a vytvoriť tak plne funkčné prostredie Linuxu vo vašom prehliadači.
Hoci tento experiment stále nie je stabilný ani bezpečný, otvára diskusiu o budúcnosti operačných systémov na webe. Mohol by sa Wasm stať univerzálnou platformou pre spustenie Linuxu na akomkoľvek zariadení alebo izolovanom prostredí? To ukážu nasledujúce roky.
Demo webová stránka: https://joelseverin.github.io