JSLinux
(bellard.org)- JSLinux เป็นรายการ VM ที่ให้ลองรัน Linux และระบบปฏิบัติการอื่น ๆ ได้ทันทีภายในเบราว์เซอร์ พร้อมดู CPU, UI, VFsync และไฟล์ตั้งค่าได้ในที่เดียว
- รายการที่รันได้แบ่งเป็น x86_64, x86, riscv64 และมี Alpine Linux, Buildroot, Fedora 33, Windows 2000, FreeDOS รวมอยู่ด้วย
- คอนโซล x86_64 Alpine Linux 3.23.2 รองรับ AVX-512 และ APX ส่วน x86 Alpine Linux 3.12.0 มีแยกทั้งเวอร์ชันคอนโซลและ X Window
- สภาพแวดล้อมแบบกราฟิกหรือ X Window มีให้ใน Windows 2000, FreeDOS, Alpine Linux, Buildroot และ Fedora 33 โดยเมนู X Window บางรายการเปิดด้วย ปุ่มเมาส์ขวา
- รายการ riscv64 Fedora 33 มีคำเตือนว่า ใช้เวลาบูตนานกว่า และ Windows 2000 มีลิงก์คำประกาศปฏิเสธความรับผิดแยกต่างหากโดยไม่มีการเข้าถึง VFsync
รายการ VM ที่รันได้ในเบราว์เซอร์
- JSLinux แสดงรายการระบบจำลองที่ใช้รัน Linux หรือระบบปฏิบัติการอื่น ๆ ในเบราว์เซอร์
- แต่ละรายการประกอบด้วย CPU, ระบบปฏิบัติการ, ส่วนติดต่อผู้ใช้, การเข้าถึง VFsync, ลิงก์เริ่มต้นใช้งาน, ไฟล์ตั้งค่า และหมายเหตุ
- ในตารางมีการแสดงสถานะการเข้าถึง VFsync และลิงก์ตั้งค่าที่เกี่ยวข้องกับ TEMU
รายการแยกตาม CPU และระบบปฏิบัติการ
-
x86_64
- Alpine Linux 3.23.2 Console
- เข้าถึง VFsync ได้
- ไฟล์ตั้งค่า: alpine-x86_64.cfg
- รองรับ AVX-512 และ APX
- Alpine Linux 3.23.2 Console
-
x86
- Alpine Linux 3.12.0 Console
- เข้าถึง VFsync ได้
- ไฟล์ตั้งค่า: alpine-x86.cfg
- Alpine Linux 3.12.0 X Window
- เข้าถึง VFsync ได้
- ไฟล์ตั้งค่า: alpine-x86-xwin.cfg
- เมนูใช้ ปุ่มเมาส์ขวา
- Windows 2000 Graphical
- ไม่สามารถเข้าถึง VFsync ได้
- ไฟล์ตั้งค่า: win2k.cfg
- มีลิงก์ไปยังคำประกาศปฏิเสธความรับผิด
- FreeDOS VGA Text
- ไม่สามารถเข้าถึง VFsync ได้
- ไฟล์ตั้งค่า: freedos.cfg
- Alpine Linux 3.12.0 Console
-
riscv64
- Buildroot Linux Console
- เข้าถึง VFsync ได้
- ไฟล์ตั้งค่า: buildroot-riscv64.cfg
- Buildroot Linux X Window
- เข้าถึง VFsync ได้
- ไฟล์ตั้งค่า: buildroot-riscv64-xwin.cfg
- เมนูใช้ ปุ่มเมาส์ขวา
- Fedora 33 Linux Console
- เข้าถึง VFsync ได้
- ไฟล์ตั้งค่า: fedora33-riscv.cfg
- มีคำเตือนว่า ใช้เวลาบูตนานกว่า
- Fedora 33 Linux X Window
- เข้าถึง VFsync ได้
- ไฟล์ตั้งค่า: fedora33-riscv-xwin.cfg
- มีคำเตือนว่า ใช้เวลาบูตนานกว่า และเมนูใช้ปุ่มเมาส์ขวา
- Buildroot Linux Console
2 ความคิดเห็น
ความเห็นจาก Hacker News
Fabrice สร้าง ซอฟต์แวร์แบบพึ่งพาตัวเองได้ครบชุด ได้เก่งมาก และผลงานเหล่านั้นก็มักมีชีวิตของตัวเองต่อไปได้
ตัวอย่างที่ไม่ค่อยมีคนรู้คือเทอร์มินัลอีมูเลเตอร์ของ JSLinux ถูก fork อยู่หลายครั้ง จนตอนนี้เป็นที่รู้จักในชื่อ xterm.js และกลายเป็นเทอร์มินัลอีมูเลเตอร์กระแสหลักที่ฝังลงในเว็บได้
ตอนนี้ผมกำลังทำผู้สืบทอดตัวจริงของ JSLinux โดยคอมไพล์เคอร์เนลและ user space เป็น Wasm แบบเนทีฟ ทำให้เร็วขึ้นมาก และแน่นอนว่าใช้ xterm.js สำหรับการจำลองเทอร์มินัล
ถ้าชอบเดโมที่บั๊กเยอะจนเหมือนยังไม่ควรแชร์ ลองดู https://linux.tombl.dev ได้ แต่ตอนนี้มีแค่ busybox shell ดังนั้นต้องคุ้นกับการใช้
echo *แทนlsผมรู้จัก QEMU, ffmpeg, งานเกี่ยวกับ LTE และ QuickJS อยู่แล้ว แต่ไม่รู้ว่า xterm.js ก็เริ่มมาจากเขาด้วย
attempted to munmapกับคำเตือนของเคอร์เนลแบบด้านล่างมี stack trace เช่น
WARNING: CPU: 3 PID: 36 at kernel/exit.c:812 0x00000000,Comm: sh Not tainted 6.1.132แล้วโยงไปทางvmlinux-NLTKI6YG.wasmกับworker-MHWHWELT.jsดูเหมือนส่วนใหญ่จะถูกเขียนใหม่ และน่าจะดีขึ้นกว่าเดิม
https://github.com/xtermjs/xterm.js
https://github.com/chjj/term.js
ลองบน MacBook แล้ว แต่การป้อนข้อมูลจากคีย์บอร์ดไม่ถูกจับ
ps,cat,vi,edล่มทั้งหมดผมไม่ค่อยรู้เรื่องการฝัง busybox เลยไม่รู้ว่าควรทำอะไร
Fabrice สุดยอดมาก ปริมาณสิ่งที่คนนี้สร้างขึ้นมานั้นเหลือเชื่อจริง ๆ
ถ้าผมสร้างได้แค่อย่างเดียวจากสิ่งที่เขาสร้าง เช่นแค่ ffmpeg, QEMU หรือ tinyc อย่างใดอย่างหนึ่ง ก็คงอวดได้ทั้งชีวิตแล้ว แต่เขาก็ยังคงแฮ็กของเจ๋ง ๆ อย่างอื่นต่อไปเรื่อย ๆ
ทั้งโทรศัพท์มือถือ ระบบปฏิบัติการ เดสก์ท็อปเอนไวรอนเมนต์ ประเทศ แอปสโตร์ และอื่น ๆ ทั้งหมด
เครื่องเสมือน ที่รันในเบราว์เซอร์มีไม่มากนัก
https://copy.sh/v86/
https://webvm.io/
https://bellard.org/jslinux/
https://jamesfriend.com.au/pce-js/ (https://github.com/jsdf/pce)
https://www.pcjs.org/ รองรับฮาร์ดแวร์และระบบปฏิบัติการจำนวนมาก (https://github.com/jeffpar/pcjs)
ฝั่ง Mac OS ก็มี https://infinitemac.org/ (https://blog.persistent.info/2023/03/infinitemac-dot-org.htm...), https://jamesfriend.com.au/projects/basiliskii/BasiliskII-wo..., https://jamesfriend.com.au/pce-js/pce-js-apps/ ด้วย
https://amiga.oszx.co/
https://www.file-hunter.com/AMIGA/
https://www.file-hunter.com/MSX/ เป็น MSX ผ่าน WebMSX
เมื่อมองไปที่สุดขั้วของนักพัฒนาที่มีประสิทธิภาพสูงมาก ๆ จะเห็นความต่างที่น่าสนใจกับหลักแบบเคร่งครัดอย่าง “ฟังก์ชันหรือไฟล์ห้ามเกิน x บรรทัดเด็ดขาด”
quickjs.cมี 50,000 บรรทัด และมีฟังก์ชันที่ยาวหลายร้อยบรรทัดด้วยhttps://github.com/bellard/quickjs/blob/master/quickjs.c
แน่นอนว่าแนวทางที่เหมาะสมย่อมต่างกันไปตามสถานการณ์
ผมเองก็มี working memory ค่อนข้างใหญ่ เลยเพิ่งมารู้ทีหลังว่าขีดจำกัดเรื่องขนาดไฟล์และฟังก์ชันของผมนั้นสูงกว่าคนอื่นมาก
หลักเคร่ง ๆ แบบนั้นจำเป็นเมื่อมีหลายคนต้องอ่านและเขียนไฟล์เดียวกัน
ตอนแรกดูน่าเกรงขาม แต่ถ้าใช้ editor ที่เหมาะ ก็ทำงานได้ง่ายกว่าที่คิด เพียงแต่ editor หลายตัวจะอืดกับไฟล์ใหญ่ขนาดนี้
ไฟล์ใหญ่มากก็จริง แต่จัดเรียงตามความหมายในระดับหนึ่ง เช่นเวลาจะเพิ่มเมธอด iterator ใหม่ โค้ดที่เกี่ยวข้องจะอยู่ใกล้กัน ทำให้งานง่ายขึ้น
ยังขึ้นกับภาษาที่ใช้ด้วย เช่น JVM อาจไม่ inline ฟังก์ชันที่มีจำนวนคำสั่ง bytecode เกิน threshold บางค่า
โปรแกรมเมอร์ที่เอาหลักเคร่ง ๆ ไปใช้ตรง ๆ อาจเป็นอันตรายได้
Kohei Tokunaga กำลังสร้างเจเนอเรชันถัดไปของสายนี้อยู่
https://ktock.github.io/container2wasm-demo/
ใช้เครือข่ายบนเบราว์เซอร์แบบใช้
fetchของ Emscripten หรือ WebSocket proxy ที่เข้ากันได้กับ POSIXhttps://ktock.github.io/container2wasm-demo/amd64-debian-was...
https://github.com/container2wasm/container2wasm?tab=readme-...
ได้ลองจับ Windows 2000 เป็นครั้งแรกในรอบ 20 ปี ผมรู้ว่าความคิดถึงอาจทำให้มองไม่ชัด แต่ถ้าเป็น UI แบบนั้น ผมอยากกลับไปใช้ทันที
แถบงานที่ไม่รก และเมนู Start เรียบง่ายที่ไม่ได้เต็มไปด้วยคำแนะนำไร้ประโยชน์กับโฆษณา เป็นอะไรที่น่าใช้มากจริง ๆ
ตอนนี้มันเป็นของผสมปนเปจาก GUI toolkit สี่รุ่น บาง UI เป็นสไตล์หนึ่ง อีก UI ก็เป็นอีกสไตล์หนึ่ง
“Windows 2000 Server named peak Microsoft. Readers say it's all been downhill since Clippy”
https://www.theregister.com/2025/04/11/windows_2000_best_mic...
https://news.ycombinator.com/item?id=43653421
ผมรู้สึกว่าโอเพนซอร์สมีผลประโยชน์สอดคล้องกับผู้ใช้โดยเนื้อแท้ และมีกลไกที่ช่วยกัน enshittification
มีใครรู้ไหมว่า Fabrice Bellard หาเงินอย่างไร ผลงานโอเพนซอร์ส ของคนคนนี้น่าทึ่งจริง ๆ
ยากแม้แต่จะเทียบว่ามีใครอยู่ระดับใกล้เคียงกันไหม ผมเดาว่า VMware คงเคยพยายามจ้างเขา หรือ Google คงอยากดึงเขาไปทำด้าน video codec, V8, Chromium rendering, ffmpeg
ดูเหมือนว่าฝรั่งเศสจะมี ศิลปินซอฟต์แวร์ หรือผู้มีส่วนร่วมรายบุคคลที่มีพรสวรรค์ สร้างสรรค์ และผลิตผลงานได้สูงมากอยู่ไม่น้อย
ไม่รู้ว่าเป็นปัจจัยแบบฝรั่งเศส ระบบการศึกษาอย่าง Écoles หรือเหตุผลอื่น แต่เด่นชัดทีเดียว
เทคโนโลยีฝรั่งเศสเคยมีชื่อเสียงประมาณคุณภาพรถเก่า Renault แต่ในความเป็นจริงผมไม่ได้มองแบบนั้นเลย กลับประทับใจกับ Renault และ Citroen ด้วยซ้ำ
ในทางกลับกัน การทำงานกับวิศวกรซอฟต์แวร์ชาวเยอรมันเป็นเรื่องยาก เพราะมีทัศนคติ “ถ้าไม่ใช่ของที่เราสร้างเองก็ไม่เอา” แรงมาก ทั้งหมดนี้เป็นการเหมารวมของผมเอง
ปัญหาของระบบนิเวศเทคโนโลยียุโรปนั้นง่ายมาก เราขายของไม่เก่ง และปรับให้เหมาะกับ ประสิทธิภาพการใช้ทรัพยากร คำว่า “เงินเดือนที่แข่งขันได้” มักหมายความว่าไม่ว่าอย่างไรก็จะไม่จ่ายเกินราคาตลาด
สหรัฐฯ ปรับเพื่อการเติบโต และยอมรับเงินเดือนที่สูงกว่า โดยหวังจะตัดค่าใช้จ่ายนั้นด้วยการเติบโต
สุดท้าย ในที่ที่ผมมาจาก มักมีคนเยาะเย้ยว่าฝรั่งเศสพังเพราะผู้อพยพ มุมมองแบบนั้นอาจมีอยู่ แต่ก็เป็นความจริงเช่นกันว่าฝรั่งเศสดึง brain drain จากอาณานิคมเข้ามา และได้คนที่มีความสามารถสูงและสร้างผลงานได้มาก
อาจารย์ที่ปรึกษาปริญญาโทของผมก็มาจากโกตดิวัวร์ และที่ Bootlin ผมก็ได้ทำงานกับวิศวกรระดับสุดยอดที่ไม่ได้มีชื่อแบบโลกภาษาฝรั่งเศส
ที่ https://barebox.org/webdemo ใช้ JSLinux เพื่อให้ผู้ใช้ที่อาจสนใจได้เห็นความสะดวกของ เชลล์บูตโหลดเดอร์ โดยไม่ต้องแฟลชลงฮาร์ดแวร์จริง
ดีใจที่เห็นฟอร์กหลายตัวที่กล่าวถึงตรงนี้ และคงต้องลองดูว่าตัวไหนรัน bareDOOM ได้ดีที่สุด รวมถึงมีตัวไหนที่เสียงทำงานได้หรือไม่
JSLinux เป็นแรงบันดาลใจตอนสร้าง Endor (https://endor.dev) และงาน QEMU ของเขาก็เป็นรากฐานให้กับ โปรเจกต์เบราว์เซอร์ที่เกี่ยวกับ Wasm จำนวนมากด้วย
ตั้งค่า CORS ผิด เลยต้องเข้า https://bellard.org/jslinux/ แทน https://www.bellard.org/jslinux/ ในลิงก์ ถึงจะใช้งานได้ตามปกติครับ