Linux Berjalan Asli dalam WebAssembly Menunjukkan Potensi Walaupun Masih Mempunyai Bug Awal

Pasukan Komuniti BigGo
Linux Berjalan Asli dalam WebAssembly Menunjukkan Potensi Walaupun Masih Mempunyai Bug Awal

Dalam satu pencapaian teknikal yang luar biasa, pemaju telah berjaya menyusun dan menjalankan kernel Linux secara asli dalam WebAssembly (Wasm), memintas lapisan emulasi CPU tradisional. Pendekatan ini menjanjikan prestasi hampir-asli untuk menjalankan distribusi Linux penuh terus dalam pelayar web, walaupun ujian awal mendedahkan kedua-dua kelajuan yang mengagumkan dan isu kestabilan yang ketara yang menonjolkan sifat eksperimen projek ini.

Kejayaan Prestasi dengan Seni Bina WebAssembly

Ujian awal komuniti mendedahkan peningkatan prestasi yang menakjubkan berbanding emulator Linux berasaskan pelayar tradisional. Penanda aras awal menunjukkan sistem Linux yang disusun ke Wasm mengatasi sepenuhnya persediaan emulasi sebelumnya yang hanya mencapai sekitar 200 MIPS. Seorang pengguna yang menjalankan pengiraan matematik dengan 'bc -lq' melaporkan masa pelaksanaan yang lebih pantas secara dramatik, mencadangkan pendekatan ini boleh merevolusikan cara kita menjalankan aplikasi kompleks dalam persekitaran pelayar.

Penyusunan seni bina WASM ini jauh mengatasi persediaan emulasi lama saya, yang hanya mencapai sekitar 200 MIPS. Mungkin pendekatan ini boleh digeneralisasikan. Menjalankan distribusi Linux penuh pada kelajuan hampir-asli terus dalam pelayar akan menjadi hebat.

Peningkatan prestasi berpunca daripada penghapusan lapisan terjemahan arahan CPU tradisional. Tidak seperti projek yang mengemulasikan keseluruhan seni bina CPU seperti x86 atau RISC-V, pelaksanaan ini menyusun setiap binari terus ke WebAssembly, dengan setiap proses Linux berjalan sebagai Web Worker berasingan. Perbezaan seni bina ini bermakna aplikasi ruang pengguna mendapat manfaat daripada penyusunan terus ke Wasm sambil masih mempunyai akses kepada API kernel Linux penuh berbanding shim minima yang disediakan oleh persekitaran seperti Emscripten.

Perbandingan Prestasi:

  • Emulasi tradisional (jor1k): ~200 MIPS
  • Emulasi RISC-V (WebCM): ~500 MIPS
  • Native WebAssembly Linux: Jauh lebih tinggi daripada kedua-duanya (penanda aras tepat masih belum selesai)

Cabaran Kestabilan dan Batasan Sistem

Walaupun pencapaian prestasi, pengguna dengan pantas menemui banyak isu kestabilan semasa ujian. Arahan pentadbiran sistem asas seperti 'du -h' dan 'wget' sering menyebabkan kerosakan WebAssembly dengan ralat akses memori dan kesalahan arahan haram. Arahan 'ping' gagal sepenuhnya disebabkan ketidakupayaan untuk mencipta soket mentah, menonjolkan batasan rangkaian yang wujud dalam persekitaran pelayar. Seorang penguji melaporkan sesi mereka berakhir secara tiba-tiba dengan mesej panik kernel selepas cuba memeriksa penggunaan cakera.

Dokumentasi projek mengakui beberapa isu yang diketahui, termasuk bug pelik dalam sistem binaan LLVM yang memerlukan pembinaan penyusun setiap kali lain untuk berjaya. Terdapat juga batasan yang menghalang penggunaan ruang dalam laluan fail ketika membina komponen kernel Linux. Keanehan ini menekankan sifat eksperimen menjalankan sistem pengendalian penuh dalam persekitaran yang berbeza asasnya daripada perkakasan tradisional.

Batasan Yang Diketahui:

  • Tiada sokongan MMU (memerlukan konfigurasi kernel NOMMU)
  • Soket rangkaian tidak dilaksanakan
  • Laluan tidak boleh mengandungi ruang semasa pembinaan
  • Keadaan perlumbaan sistem pembinaan LLVM memerlukan pembinaan alternatif

Potensi Pendidikan dan Aplikasi Masa Depan

Ahli komuniti serta-merta mengenali nilai pendidikan mempunyai persekitaran Linux berfungsi yang boleh diakses melalui mana-mana pelayar web moden. Keupayaan untuk menguji distribusi Linux atau perisian tertentu tanpa muat turun menjadikan ini sangat berharga untuk persekitaran pendidikan, terutamanya pada peranti terhad seperti Chromebook. Tindak balas projek dan keperluan persediaan minima boleh menurunkan halangan untuk orang mempelajari pentadbiran sistem Linux atau bereksperimen dengan alat baris arahan.

Beberapa pengkomen menyuarakan kegembiraan tentang potensi untuk mencipta persekitaran Linux tersuai dengan aplikasi tertentu diprapasang. Sistem binaan berasaskan Docker yang disebut dalam dokumentasi projek secara teori boleh dilanjutkan untuk menjana imej Linux Wasm tersuai mengandungi alat atau persekitaran pembangunan tertentu. Ini akan membolehkan senario di mana pengguna boleh serta-merta mengakses alat Linux khusus melalui pelayar mereka tanpa sebarang pemasangan tempatan.

Seni Bina Teknikal dan Pengurusan Memori

Seni bina projek mendedahkan penyelesaian inovatif kepada batasan WebAssembly. Memandangkan Wasm kekurangan Unit Pengurusan Memori (MMU), kernel Linux mesti disusun dalam konfigurasi NOMMU, memerlukan program dibina dengan bendera kod bebas-kedudukan. Setiap benang Linux memetakan kepada Web Worker dalam pelayar, secara berkesan membenarkan sehingga 8,000 CPU serentak dengan memanfaatkan sokongan Linux untuk banyak teras pemproses.

Model pembenangan ini mempersembahkan kedua-dua kelebihan dan batasan. Walaupun memori tidak boleh dikongsi antara proses dalam erti kata tradisional, pengasingan ini memberikan manfaat perlindungan memori semula jadi. Pelaksanaan pemacu konsol menunjukkan bagaimana pemacu peranti boleh menjambatani persekitaran WebAssembly ke JavaScript, mencadangkan bahawa fungsi rangkaian boleh ditambah melalui pelaksanaan pemacu serupa yang mengeksport paket rangkaian ke JavaScript untuk pengendalian.

Komponen Perisian Utama dan Versi:

  • LLVM Project: 18.1.2 (dengan sokongan skrip penghubung wasm-ld)
  • Linux Kernel: 6.4.16 (dengan tampung arsitektur Wasm)
  • musl libc: 1.2.5 (dengan sokongan sasaran Wasm)
  • BusyBox: 1.36.1 (dengan defconfig Wasm)

Perbandingan dengan Pendekatan Alternatif

Komuniti dengan pantas membandingkan pendekatan WebAssembly asli ini dengan kaedah alternatif seperti container2wasm, yang menukar kontena kepada Wasm menggunakan lapisan emulasi seperti Bochs atau TinyEMU. Walaupun penyelesaian tersebut menyokong menjalankan binari sedia ada tanpa penyusunan semula, mereka menanggung penalti prestasi daripada terjemahan arahan CPU. Pendekatan penyusunan asli ini berpotensi menawarkan prestasi lebih baik tetapi memerlukan pembinaan semula semua komponen perisian khusus untuk sasaran WebAssembly.

Projek lain seperti jor1k dan WebCM menunjukkan bahawa emulasi RISC-V yang mampu boleh mencapai kelajuan sehingga 500 MIPS dalam pelayar, tetapi pendekatan Wasm asli nampaknya berkedudukan untuk mengatasi nombor ini dengan ketara sekali kestabilan bertambah baik. Pertukaran antara keserasian dan prestasi kemungkinan akan menentukan pendekatan mana yang menjadi dominan untuk kes penggunaan berbeza.

Kesimpulan

Pelaksanaan berjaya, walaupun mempunyai bug, Linux berjalan asli dalam WebAssembly mewakili satu pencapaian penting dalam teknologi web. Walaupun kini sesuai terutamanya untuk eksperimen dan pendidikan, demonstrasi prestasi mencadangkan masa depan di mana aplikasi kompleks dan malah persekitaran pembangunan penuh boleh berjalan dengan cekap dalam pelayar. Apabila piawaian WebAssembly asas berkembang dan pelaksanaan awal ini matang, kita mungkin melihat persekitaran Linux berasaskan pelayar menjadi alat praktikal daripada sekadar keingintahuan teknologi. Ujian dan pelaporan bug bersemangat komuniti sudah tentu akan mempercepatkan proses pembangunan ini, membawa kita lebih dekat kepada visi pengkomputeran benar-benar mudah alih, bebas-platform.

Rujukan: Skrip untuk Membina Sistem Pengendalian Linux/Wasm