Linux saapuu selaimeen: ydin toimii WebAssemblyssä

Linux saapuu selaimeen: ydin toimii WebAssemblyssä

Ensimmäistä kertaa, Linux-ydintä voidaan ajaa suoraan verkkoselaimessailman emulaattoreita tai virtuaalikoneita. Tämä Tämä on ollut mahdollista useiden korjauspäivitysten ansiosta. jotka toteuttavat Wasm-arkkitehtuuri (WebAssembly) ytimen sisällä, mikä mahdollistaa sen kääntämisen web-ympäristöissä suoritettavaksi välivaiheen koodiksi. Vaikka Tämä on kokeellinen todiste konseptista., merkitsee käännekohtaa käyttöjärjestelmien ja verkkoteknologioiden lähentymisessä.

Yli kaksi vuotta kehitetty projekti mahdollistaa Linuxin käynnistämisen verkkoselaimessa ja standardiohjelmien suorittamisen BusyBoxiin ja musl:iin perustuvassa ympäristössä, jotka kaikki on käännetty WebAssemblyksi. Xterm.js:ää käytetään pääteemulaattorina käyttäjän vuorovaikutukseen, ja se tarjoaa toimivan konsolin selaimen sisällä.

Lisäksi saatavilla on julkinen demo, joka on yhteensopiva Chromium-selainten ja osittain Firefoxin kanssa ja pystyy lataamaan Wasm-ytimen alle sekunnissa nykyaikaisilla tietokoneilla.

Miten Linux toimii WASM:ssa?

Toisin kuin perinteisissä arkkitehtuureissa, WebAssembly ei salli säikeiden keskeyttämistä tai koodin muokkaamista ajonaikana, joka Tämä asettaa haasteen ytimen tehtävien ajoitukselle.Näiden rajoitusten voittamiseksi kehittäjät ottivat käyttöön nerokkaan ratkaisun: Jokainen tehtävä tai säie suoritetaan erillisellä virtuaalisella suorittimella, jota hallitsevat Web Workers -työkalut. selaimesta. Tällä tavoin moniajo toteutetaan itse selainmoottorin kautta, joka toimii isäntäkäyttöjärjestelmänä.

Tulos on malli, jossa Linux-ydin toimii eristetyssä web-ympäristössäaidolla moniajolla ja prosessien välisellä viestinnällä viestikanavien (postMessage() ja SharedArrayBuffer) kautta. Kuitenkin Keskeytykset ja signaalit eivät ole vielä täysin toiminnassa, ja jotkin kriittiset funktiot, kuten vfork() ja longjmp(), eivät edelleenkään ole tuettuja.

Tärkeimmistä Nykyisiin rajoituksiin kuuluu MMU:n puuttuminen (Muistinhallintayksikkö) kyvyttömyys muokata ladattua koodia ja satunnaiset kaatumiset konsolissa muutaman minuutin käytön jälkeen. Tästä huolimatta testit osoittavat, että järjestelmä pystyy suorittamaan BusyBox-peruskomentoja ja pitämään prosessit aktiivisina taustalla, mikä vahvistaa tämän lähestymistavan potentiaalin.

Mielenosoituksen tuolla puolen: uusi horisontti Wasmille

Projektin laajuus ulottuu Linuxin pelkkää ajamista selaimissa pidemmälle. Linuxin WASM-arkkitehtuuri voisi toimia pohjana alustojenvälisten WebAssembly-sovellusten luomiselle integroiduilla Linux-järjestelmäkutsuilla ilman, että tarvitaan täydellistä ydintä. Tämä avaa oven erillisten sovellusten suorittamiseen WASI:n (WebAssembly System Interface) avulla ja erittäin kannettavien hiekkalaatikkojärjestelmien kehittämiseen.

Kehittäjät He aikovat myös laajentaa tukea graafiseen ympäristöön ottamalla käyttöön EGL:n ja OpenGL ES:n. WebGL:n osalta tämä mahdollistaisi visuaalisten käyttöliittymien toiminnan selaimen sisällä. Lisäksi suunnitellaan tukea DWARF-virheenkorjausmuodolle, joka mahdollistaisi C-koodin rivi riviltä tapahtuvan virheenkorjauksen suoraan selaimen työkaluista.

Tekniset haasteet ja seuraavat vaiheet

El Hankkeella on edelleen vakausongelmiakuten satunnaisia ​​kaatumisia tai muistin vioittumisvirheitä. Nämä yksityiskohtaisesti dokumentoidut haitat heijastavat niitä luontaisia ​​vaikeuksia, joita kokonaisen käyttöjärjestelmän mukauttamisessa alun perin verkkosovelluksille suunniteltuun ympäristöön liittyy. Silti Kehityksestä vastaavat ovat luottavaisia, että tulevat laajennukset WebAssembly-standardin ominaisuudet, kuten säikeiden keskeyttäminen, pinon kytkentä tai toimiva MMU, auttavat meitä voittamaan nykyiset rajoitukset.

Suorituskyvyn osalta nykyinen versio asettaa virheenkorjauksen etusijalle nopeuden sijaan. On kuitenkin odotettavissa, että tulevat optimoinnit, kuten esikäynnistetyn Wasm-järjestelmän horrostila, voisivat mahdollistaa ytimen välittömän latautumisen. Atomics.waitAsync():n käyttö ja suora kommunikointi työntekijöiden välillä lupaavat myös vähentää JavaScriptin ja WebAssembly-koodin välistä ylimääräistä kuormitusta.

Kutsu kokea

Arkisto wasm-linux tarjoaa skriptejä ja rakennusympäristöjä Näin kuka tahansa voi kokeilla tätä sovellusta joko paikallisessa ympäristössä tai Dockerin avulla. Muutamassa vaiheessa voit kääntää LLVM:n, ytimen, BusyBoxin ja muslin, mikä luo täysin toimivan Linux-ympäristön selaimeesi.

Vaikka tämä kokeilu onkin vielä kaukana vakaasta tai turvallisesta, se avaa keskustelun käyttöjärjestelmien tulevaisuudesta verkossa. Voisiko Wasmista tulla universaali alusta Linuxin suorittamiseen millä tahansa laitteella tai erillisessä ympäristössä? Tulevat vuodet näyttävät.

Demo-sivusto: https://joelseverin.github.io