- JSLinux ที่สามารถรัน Linux และระบบปฏิบัติการอื่นๆ ได้โดยตรงในเว็บเบราว์เซอร์ รองรับ สถาปัตยกรรม x86_64 เพิ่มเติมแล้ว
- เพิ่มการรองรับ AVX2, AVX-512 และ APX ใหม่ ทำให้ปัจจุบันเป็นอีมูเลเตอร์ระบบ x86 แบบเต็มที่เปิดให้ใช้งานสาธารณะเพียงตัวเดียวที่รองรับ APX
- พัฒนาบนพื้นฐานของ Alpine Linux 3.23.2 และรวมส่วนขยายชุดคำสั่ง AVX-512 และ Intel APX
- นอกจากระบบที่ใช้ x86, RISC-V เดิมแล้ว ตอนนี้ยังสามารถรันใน สภาพแวดล้อม 64 บิต ได้ด้วย
- แต่ละระบบมี คอนโซลหรืออินเทอร์เฟซ X Window ให้ใช้งาน และบางระบบรองรับการเข้าถึงไฟล์ผ่าน VFsync
- ด้วยความก้าวหน้าของเทคโนโลยีเวอร์ชวลไลเซชันบนเบราว์เซอร์ การทดลอง ระบบปฏิบัติการและการสร้างสภาพแวดล้อมทดสอบ จึงทำได้สะดวกยิ่งขึ้น
ภาพรวมของ JSLinux
- JSLinux คืออีมูเลเตอร์บนเว็บที่สามารถรัน Linux หรือระบบปฏิบัติการอื่นๆ ภายในเบราว์เซอร์ได้
- ผู้ใช้สามารถรันเครื่องเสมือนบนหน้าเว็บได้โดยไม่ต้องติดตั้งเพิ่มเติม
- สามารถเลือกสถาปัตยกรรม CPU และการตั้งค่าระบบปฏิบัติการได้หลากหลาย
รายการระบบที่รองรับ
- x86_64: มี Alpine Linux 3.23.2 เวอร์ชันคอนโซลให้ใช้งาน
- x86: รองรับหลายระบบ เช่น Alpine Linux 3.12.0, Windows 2000, FreeDOS
- riscv64: รองรับ Buildroot Linux และ Fedora 33
- แต่ละระบบมี ลิงก์เริ่มต้น ให้ใช้งาน และสามารถตั้งค่าผ่าน ไฟล์คอนฟิก TEMU ได้
- บางระบบสามารถเชื่อมต่อกับระบบไฟล์ภายนอกผ่าน VFsync ได้
- การตั้งค่าทั้งหมดได้รับการพัฒนาและดูแลโดย Fabrice Bellard
3 ความคิดเห็น
ผู้สร้างอย่าง Fabrice Bellard ควรได้รับคำชื่นชมทุกครั้งที่มีบทความเกี่ยวข้องออกมา (เกิดปี 72)
ปี 1987 ตอนอายุ 15 พัฒนา LZEXE ซึ่งเป็นตัวบีบอัดไฟล์ปฏิบัติการด้วยแอสเซมบลี
ปี 2000 พัฒนา FFMPEG และในปีเดียวกันก็พัฒนา C compiler ขนาดไม่ถึง 4KB จนชนะ IOCCC
ปี 2005 เปิดตัว QEMU
ปี 2011 เผยแพร่ JSLinux และพัฒนามาจนถึงทุกวันนี้
"ขอให้รวยเละแล้วเกษียณไปเลย"
รองรับ x86 แบบ 64 บิตถูกเปิดตัวไปเมื่อเดือนมกราคม และอัปเดตครั้งนี้คือการรองรับ AVX2, AVX-512 และ APX
ความคิดเห็นจาก Hacker News
สิ่งที่ฉันอยากทำที่สุดคือใช้ WASM Linux engine เพื่อรันระบบปฏิบัติการเสมือนในเบราว์เซอร์โดยตรง แล้วให้ coding agent ทำงานอยู่ข้างใน
ถ้าเชื่อมต่อกับเอเจนต์ที่ใช้ Bash และเครื่องมือ Linux ได้อย่าง Claude Code หรือ Codex CLI ก็น่าจะน่าสนใจมาก
ฉันคิดว่าเบราว์เซอร์คือสภาพแวดล้อม sandbox ที่ดีที่สุด ถ้าสามารถรัน agent loop บน WebAssembly Linux ได้ก็คงเป็นลูกเล่นที่เจ๋งมาก
ก่อนหน้านี้เคยลองกับ เดโม v86 แต่ยังไปไม่ถึงขั้นเชื่อมต่อเอเจนต์ สามารถส่งคำสั่ง Linux ผ่านช่องป้อนข้อความได้
แต่ประสิทธิภาพยังไม่ค่อยดีนัก เลยไม่ได้ลองเจาะลึกต่อ
เดโมแบบ full stack อยู่ที่ vitedemo.browserpod.io, และงานก่อนหน้านี้ดูได้ที่ webvm.io
เพราะน่าสนใจดี ฉันเลยลองรันเบนช์มาร์ก Primes บน Chrome ของ M1 Mac Mini สำหรับสภาพแวดล้อม x86_64, x86, riscv64 อย่างละตัว
RISC-V มี ประสิทธิภาพในการ emulation ดีกว่า x86 มาก — ทั้ง build เร็วกว่า โค้ดเล็กกว่า และรันเร็วกว่า
แต่ gcc ของแต่ละตัวเป็นคนละเวอร์ชันกัน (15.2.0 vs 9.3.0 vs 7.3.0) เลยไม่ใช่การเทียบที่ยุติธรรมเต็มที่
โค้ดอ้างอิง
นอกเรื่องหน่อย แต่พอเห็น Windows 2000 UI อีกครั้งแล้วรู้สึกดีใจมาก UI สมัยนี้ให้ความรู้สึกว่าน่ากลัวจริง ๆ
น่าเสียดายที่ยังไม่ได้เปิดเผย ซอร์สโค้ดของเลเยอร์ emulation x86 64 บิต หรือการตั้งค่า build
ถ้าอยากได้เวอร์ชันที่เป็นโอเพนซอร์สมากกว่านี้ ก็อาจดู container2wasm ได้
สงสัยว่า JSLinux ยังเป็น interpreter อยู่หรือเปล่า หรือว่าตอนนี้มี JIT compile แล้ว
หรือไม่ก็อาจเป็นเพราะ JIT ของ JS engine ดีขึ้นมากจนความต่างนั้นไม่มีความหมายแล้วก็ได้
ดูเหมือนจะมีปัญหากับ DNS ไม่แน่ใจว่าฉันพลาดอะไรไปรึเปล่า
น่าทึ่งที่รองรับถึง AVX512 ด้วย อยากลองเพิ่มเข้าไปใน QEMU ให้ได้เหมือนกัน
สำหรับแพตช์ APX ดูได้ ที่นี่
งานของ Fabrice Bellard ทำให้ทึ่งได้เสมอ
การรองรับ x86_64 เปิดความเป็นไปได้ให้รัน Linux distro รุ่นใหม่ ๆ ในเบราว์เซอร์ได้
เมื่อเดือนที่แล้วฉันดัดแปลงให้ TempleOS รันบน x86_64 JSLinux ได้ — ring0.holyc.xyz
มันรันได้เร็วกว่ เดโม ของฉันเสียอีก ทั้งที่ไม่มี JIT ด้วย รู้สึกเหมือนเวทมนตร์จริง ๆ
ฉันลองใช้ภาพ Alpine JSLinux แบบ x86_64 บน Chrome อยู่ 4 ชั่วโมง
ทั้ง git ดึงโค้ดมา build แพ็กเกจใหญ่ ๆ แล้วก็รันเทสต์ มัน เสถียร อย่างสมบูรณ์
แม้จะช้ากว่า native อยู่ 50 เท่า แต่ก็ยังน่าทึ่งมากที่มี VM ที่แข็งแกร่ง แบบนี้รันอยู่ในเบราว์เซอร์ได้