По први пут, Линукс кернел се може покренути директно у веб прегледачубез емулатора или виртуелних машина. Ово Ово је омогућено захваљујући низу исправки који спроводе ВАSM архитектура (WebAssembly) унутар језгра, што му омогућава да се компајлира у међукод који се може извршити у веб окружењима. Иако Ово је експериментални доказ концепта., означава прекретницу у конвергенцији између оперативних система и веб технологија.
Пројекат, који је у развоју већ више од две године, омогућава корисницима да покрену Линукс унутар веб прегледача и покрећу стандардне програме користећи окружење засновано на BusyBox-у и musl-у, све компајлирано у WebAssembly. Xterm.js се користи као емулатор терминала за интеракцију корисника, пружајући функционалну конзолу унутар прегледача.
Поред тога, постоји јавна демо верзија компатибилна са Chromium прегледачима и делимично са Firefox-ом, способна да учита Wasm језгро за мање од секунде на модерним рачунарима.
Како Линукс функционише у Wasm-у?
За разлику од конвенционалних архитектура, WebAssembly не дозвољава паузирање нити или модификовање кода током извршавања, што Ово представља изазов за распоређивач задатака језгра.Да би превазишли ова ограничења, програмери су усвојили генијално решење: Сваки задатак или нит се извршава на посебном виртуелном процесору, којим управљају веб радници. прегледача. На овај начин, мултитаскинг се имплементира путем самог мотора прегледача, који делује као главни оперативни систем.
Резултат је модел у коме се Линуксово језгро покреће унутар изолованог веб окружењаса правим мултитаскингом и међупроцесном комуникацијом путем канала за поруке (postMessage() и SharedArrayBuffer). Међутим, Прекиди и сигнали још увек нису у потпуности функционални, а неке критичне функције, као што су vfork() и longjmp(), остају неподржане.
Међу главним Тренутна ограничења укључују одсуство MMU-а (Јединица за управљање меморијом), та немогућност модификовања учитаног кода и спорадични падови система у конзоли након неколико минута коришћења. Упркос томе, тестови показују да систем може да извршава основне BusyBox команде и да одржава процесе активним у позадини, што потврђује потенцијал овог приступа.
После демонстрација: нови хоризонт за Wasm
Обим пројекта иде даље од пуког покретања Линукса у прегледачима. Wasm архитектура за Linux могла би послужити као основа за креирање WebAssembly апликација на више платформи са интегрисаним системским позивима Линукса, без зависности од пуног језгра. Ово отвара врата покретању изолованих апликација користећи WASI (WebAssembly System Interface) и развоју изузетно преносивих sandbox система.
Програмери Такође планирају да прошире подршку на графичко окружење, имплементирајући EGL и OpenGL ES. Што се тиче WebGL-а, ово би омогућило покретање визуелних интерфејса унутар прегледача. Поред тога, планирана је подршка за DWARF формат за отклањање грешака, што омогућава отклањање грешака C кода ред по ред директно из алата прегледача.
Технички изазови и следећи кораци
El Пројекат се и даље суочава са проблемима стабилностикао што су случајни падови или грешке у вези са оштећењем меморије. Ови недостаци, детаљно документовани, одражавају инхерентне тешкоће прилагођавања комплетног оперативног система окружењу првобитно дизајнираном за веб апликације. Упркос томе, Они који су одговорни за развој уверени су да ће будућа проширења Карактеристике WebAssembly стандарда, као што су суспензија нити, пребацивање стека или функционални MMU, омогућиће нам да превазиђемо тренутна ограничења.
Што се тиче перформанси, тренутна верзија даје приоритет отклањању грешака у односу на брзину. Међутим, очекује се да ће будуће оптимизације, попут хибернације претходно покренутог Wasm система, омогућити тренутно учитавање језгра. Употреба Atomics.waitAsync() и директна комуникација између радника такође обећавају смањење оптерећења између JavaScript и WebAssembly кода.
Позив за искуство
Спремиште wasm-linux нуди скрипте и окружења за изградњу Ово омогућава свакоме да испроба ову адаптацију, било у локалном окружењу или користећи Docker. У само неколико корака можете компајлирати LLVM, језгро, BusyBox и musl, креирајући потпуно функционално Linux окружење у вашем прегледачу.
Иако је још увек далеко од стабилног или безбедног, овај експеримент отвара дебату о будућности оперативних система на вебу. Да ли би Wasm могао да постане универзална платформа за покретање Линукса на било ком уређају или изолованом окружењу? Наредне године ће показати.
Демо веб-сајт: https://joelseverin.github.io