Pa mndandanda wamakalata a opanga kernel Linux Ma patches omwe akukhazikitsa kapangidwe ka Wasm ka kernel asindikizidwa Linux, zomwe zimalola kuti kernel iphatikizidwe mu code yapakati ya WebAssembly kuti igwiritsidwe ntchito mwachindunji mu msakatuli wapaintaneti popanda kugwiritsa ntchito ma emulators. Kuphatikiza apo, pa kernel Linux проектом реализована возможность запускать исполняемые файлы в формате «.wasm» и подготовлен драйвер «web console» для симуляции работы с консолью в браузере. Также подготовлен инструментарий для упрощения сборки запускаемых в браузере системных окружений.
Mwachitsanzo, chilengedwe chinapangidwa pogwiritsa ntchito BusyBox utility suite ndi laibulale ya musl system yopangidwa ndi WebAssembly. Xterm.js imagwiritsidwa ntchito ngati emulator yoyeserera pogwira ntchito ndi chilengedwe. Tsamba lachiwonetsero lapadera linayambitsidwa, kulola ogwiritsa ntchito kuyesa doko popanda kulilemba okha. Thandizo lathunthu la asakatuli ozikidwa pa Chromium ndi kuthandizira pang'ono kwa Firefox, yomwe ili ndi kuthekera kochepa kochotsa zolakwika, yalengezedwa. Pamakompyuta amakono, kutsitsa kernel ya Wasm mu msakatuli kumatenga mphindi imodzi.
Ntchitoyi yakhala ikupangidwa kwa zaka ziwiri ndipo pano imalola kutsitsa kernel mu asakatuli ndikuchita mapulogalamu wamba. Ntchitoyi sinathebe, ndipo doko lili ndi zovuta komanso zolepheretsa. Mwachitsanzo, kuthandizira kwa mafoni a vfork ndi longjmp sikunakhazikitsidwe (BusyBox yakhazikitsidwa kuti igwire ntchito popanda iwo), palibe kuthekera kosokoneza ntchito, MMU sichipezeka (kernel ndi ndondomeko zimayendera malo omwewo adiresi), ndizosatheka kusintha code yomwe yadzaza kale, ndipo console imaundana pambuyo pa mphindi 5 chifukwa cha zovuta za nthawi. Zikudziwika kuti zolepheretsa zomwe zilipo ndizotheka, koma zina zimafuna kukhazikitsidwa kwa zowonjezera zowonjezera ku WebAssembly mu asakatuli. Zowonjezera zofananira zaperekedwa kwa MMU ndi kuyimitsidwa kwa ulusi.
Kulephera kuyimitsa kuphatikizika kwa ulusi mu WebAssembly kumakangana ndi wokonza ntchito wa kernel, koma kuchita zinthu zambiri kudachitika kudzera munjira yopangira ulusi / ntchito iliyonse ku CPU yake yeniyeni, yochitidwa mwa Webusaiti yosiyana. Njirayi idathandizira kutsata njira zofananira pogwiritsa ntchito injini yakusakatula ndi kernel ya OS, osagwiritsa ntchito zinthu zambiri kapena kusintha ntchito mu kernel ya osatsegula. Zosokoneza ndi ma siginoni sizigwira ntchito mokwanira pakukhazikitsa uku, ndipo CPU yosiyana imagwiritsidwa ntchito kupereka chowerengera nthawi ndi kusokoneza kwa IPI (Inter-Processor Interrupt).
Область применения проекта выходит за рамки простого запуска Linux-окружений в браузерах. Например, порт может применяться для создания многоплатформенных WebAssembly программ, использующих специфичные для Linux системные вызовы. Реализация подобных системных вызовов может быть отдельно преобразована в WebAssembly и прикреплена к приложению, что позволит использовать его без привязки к системному ядру. Порт также будет полезен для организации изолированного выполнения приложений при помощи WASI (WebAssembly System Interface).
Zolingazo zikuphatikiza kuyesa kugwiritsa ntchito chithandizo chazithunzi m'malo okhala ndi maziko omangidwa mu WebAssembly. Akukonzekera kukhazikitsa EGL ndikuthandizira OpenGL ES pogwiritsa ntchito WebGL API ya msakatuli. Akukonzekeranso kukhazikitsa chithandizo chamtundu wa Dwarf debug pakuwongolera mzere ndi mzere.
Source: opennet.ru
