Linux tarayıcıya geliyor: Çekirdek WebAssembly'de çalışıyor

Linux tarayıcıya geliyor: Çekirdek WebAssembly'de çalışıyor

İlk kez, Linux çekirdeği doğrudan bir web tarayıcısı içinde çalıştırılabiliremülatörler veya sanal makineler olmadan. Bu Bu, bir dizi yama sayesinde mümkün oldu uygulayan Wasm mimarisi (WebAssembly) çekirdek içinde derlenerek web ortamlarında çalıştırılabilir ara koda dönüştürülmesine olanak tanır. Bu deneysel bir kavram kanıtıdır., işletim sistemleri ile web teknolojileri arasındaki yakınlaşmada bir dönüm noktasını işaret ediyor.

İki yıldan uzun süredir geliştirilmekte olan proje, kullanıcıların bir web tarayıcısı üzerinden Linux'u başlatmalarına ve BusyBox ve musl tabanlı bir ortamda standart programları çalıştırmalarına olanak tanıyor; hepsi WebAssembly'e derlenmiş durumda. Xterm.js, kullanıcı etkileşimi için bir terminal emülatörü olarak kullanılıyor ve tarayıcı içinde işlevsel bir konsol sağlıyor.

Ayrıca, modern bilgisayarlarda Wasm çekirdeğini bir saniyeden kısa sürede yükleyebilen, Chromium tarayıcılarıyla ve kısmen Firefox'la uyumlu bir genel demo da mevcut.

Linux Wasm'da nasıl çalışır?

Geleneksel mimarilerin aksine, WebAssembly, iş parçacıklarının duraklatılmasına veya kodun değiştirilmesine izin vermez çalışma zamanında, Bu durum çekirdek görev zamanlayıcısı için bir zorluk teşkil ediyor.Bu sınırlamaları aşmak için geliştiriciler akıllıca bir çözüm benimsediler: Her görev veya iş parçacığı, Web Çalışanları tarafından yönetilen ayrı bir sanal CPU'da çalışır Bu şekilde, çoklu görev, ana işletim sistemi olarak görev yapan tarayıcı motoru aracılığıyla gerçekleştirilir.

Sonuç Linux çekirdeğinin izole bir web ortamında çalıştığı bir modelgerçek çoklu görev ve mesaj kanalları (postMessage() ve SharedArrayBuffer) aracılığıyla süreçler arası iletişim ile Kesintiler ve sinyaller henüz tam olarak işlevsel değil, ve vfork() ve longjmp() gibi bazı kritik işlevler desteklenmiyor.

Ana arasında Mevcut sınırlamalar arasında bir MMU'nun bulunmaması yer almaktadır (Bellek Yönetim Birimi), yüklenen kodu değiştirememe ve ara sıra çökmeler Konsolda birkaç dakikalık kullanımdan sonra. Buna rağmen, testler sistemin temel BusyBox komutlarını çalıştırabildiğini ve işlemleri arka planda aktif tutabildiğini göstererek bu yaklaşımın potansiyelini doğruluyor.

Gösterinin ötesinde: Wasm için yeni bir ufuk

Projenin kapsamı Linux'u tarayıcılarda çalıştırmanın ötesine geçiyor. Linux için Wasm mimarisi, platformlar arası WebAssembly uygulamaları oluşturmak için bir temel oluşturabilir Entegre Linux sistem çağrılarıyla, tam bir çekirdeğe bağlı kalmadan. Bu, WASI (WebAssembly Sistem Arayüzü) kullanarak izole uygulamalar çalıştırmanın ve son derece taşınabilir sanal alan sistemleri geliştirmenin kapısını açar.

Geliştiriciler Ayrıca EGL ve OpenGL ES'yi uygulayarak grafiksel ortama destek sağlamayı planlıyorlar. WebGL ile ilgili olarak, bu, görsel arayüzlerin tarayıcı içinde çalışmasına olanak tanıyacaktır. Ayrıca, tarayıcının araçlarından doğrudan C kodunun satır satır hata ayıklanmasını sağlayan DWARF hata ayıklama biçiminin desteklenmesi planlanmaktadır.

Teknik zorluklar ve sonraki adımlar

El Proje hala istikrar sorunlarıyla karşı karşıyaRastgele çökmeler veya bellek bozulması hataları gibi. Ayrıntılı olarak belgelenen bu dezavantajlar, eksiksiz bir işletim sistemini başlangıçta web uygulamaları için tasarlanmış bir ortama uyarlamanın doğasında var olan zorlukları yansıtır. Yine de, Geliştirmeden sorumlu olanlar, gelecekteki uzantıların da olumlu sonuçlar vereceğinden eminler. WebAssembly standardının thread askıya alma, stack switching veya işlevsel MMU gibi özellikleri, mevcut sınırlamaları aşmamızı sağlayacak.

Performans açısından, mevcut sürüm hızdan çok hata ayıklamaya öncelik veriyor. Ancak, önceden başlatılmış Wasm sisteminin hazırda bekletilmesi gibi gelecekteki optimizasyonların, çekirdeğin anında yüklenmesine olanak sağlayabileceği öngörülüyor. Atomics.waitAsync() kullanımı ve çalışanlar arasında doğrudan iletişim, JavaScript ve WebAssembly kodu arasındaki ek yükü azaltmayı da vaat ediyor.

Deneyime davet

Depo wasm-linux betikler ve derleme ortamları sunar Bu, herkesin bu uyarlamayı yerel bir ortamda veya Docker kullanarak denemesine olanak tanır. Sadece birkaç adımda LLVM, çekirdek, BusyBox ve musl'ı derleyerek tarayıcınızda tam işlevli bir Linux ortamı oluşturabilirsiniz.

Bu deney, hâlâ istikrarlı veya güvenli olmaktan uzak olsa da, web'deki işletim sistemlerinin geleceği hakkında bir tartışma başlatıyor. Wasm, herhangi bir cihazda veya izole ortamda Linux çalıştırmak için evrensel bir platform olabilir mi? Bunu önümüzdeki yıllar gösterecek.

Demo web sitesi: https://joelseverin.github.io