4 puan yazan GN⁺ 2025-04-15 | 1 yorum | WhatsApp'ta paylaş
  • Tarayıcıda Linux ve Windows NT çalıştırabilen JavaScript/WASM tabanlı bir PC emülatörü; Fabrice Bellard'ın 2011'de ilk x86 JS emülatörü olarak başlattığı ve bugüne kadar geliştirdiği bir proje
  • TinyEMU tabanlı C kodunu emscripten ile derler ve VirtIO aygıtlarını kullanarak dosya sistemi, ağ ve blok aygıt desteği sunar
  • x86 64 bit CPU emülasyonu, AVX-512, APX gibi modern genişletilmiş komutlara kadar uzanan yüksek bir olgunluk düzeyine sahiptir
  • RISC-V 32/64 bit CPU emülasyonunu da destekler; Alpine Linux, Buildroot gibi çeşitli dağıtımları çalıştırabilir
  • JavaScript motoru performans kıyaslaması, tarayıcı içinde Unix öğrenimi, eski PC yazılımlarını çalıştırma gibi pratik kullanım örnekleri sunar

Geçmiş

  • 2011'deki ilk sürüm, JavaScript ile yazılmış ilk PC/x86 emülatörüydü ve QEMU'nun x86 yardımcıları ile aygıt kodunu yeniden kullandı
  • 2015'te asm.js alt kümesi uygulanarak bunu destekleyen tarayıcılarda hız artışı sağlandı
  • 2016'da RISC-V emülatörü TinyEMU yazıldıktan sonra, C kodu emscripten ile JavaScript'e dönüştürüldü
    • jor1k(Sebastian Macke)'den ilham alınarak VirtIO 9P dosya sistemi eklendi; böylece uzak dosya sistemine erişim ile dosya içe/dışa aktarma kolaylaştı
  • VirtIO aygıtlarını x86 JS emülatöründe de yeniden kullanmak için, JSLinux asm.js kodu önce C'ye dönüştürülüp ardından emscripten ile tekrar JavaScript'e çevrildi
    • Ayrıntılı ince ayarlarla, elle yazılmış asm.js sürümünden daha yüksek performans elde edildi
  • Windows NT çalıştırmak için başlangıçta, emüle edilmiş Linux içinde QEMU'nun iç içe çalıştırılması yöntemi kullanıldı
    • x86 emülatörü AMD SVM sanallaştırma uzantısını desteklediği için bu iç içe çalıştırma da kullanılabilir düzeydeydi
  • Mevcut sürüm, PS/2 klavye/fare, IDE disk, sahte VGA gibi eksik PC aygıtlarını doğrudan emüle ederek Windows NT'yi yerel olarak çalıştırır

x86 CPU emülasyonu

  • x86 CPU emülasyonu şu özellikleri destekler:
    • Pentium sınıfı CPU
    • x87 80 bit kayan nokta (bit exact)
    • PAE
    • CMOV komutları
    • MMX, SSE2 desteği
    • AMD SVM sanal makine uzantısı (Nested Page Table desteği)
    • RDPMC ile komut sayacı okuma
  • Bilinen kısıtlar:
    • Bellek erişiminde segment sınırı ve yetki denetimi yapılmaz
    • Hata ayıklama desteklenmez (DRx yazmaçları)

Emüle edilen aygıtlar

  • 8259 PIC(Programmable Interrupt Controller)
  • 8254 PIT(Programmable Interrupt Timer)
  • 16450 UART(yalnızca hata ayıklama için)
  • Real Time Clock
  • PCI veriyolu
  • VirtIO konsol, 9P dosya sistemi, ağ, blok aygıt, girdi
  • Simple framebuffer
  • IDE denetleyicisi, PS/2 klavye/fare, sahte VGA ekranı (her biri isteğe bağlı)

RISC-V CPU emülasyonu

  • 32 bit veya 64 bit RISC-V CPU emülasyonu; 64 bit FPU ve sıkıştırılmış komutlar(compressed instructions) desteği
  • Şu anda RISC-V 64 bit Buildroot ve Fedora dağıtımları sağlanıyor
  • RISC-V 32 bit imajları hâlâ kullanılabilir, ancak artık aktif olarak bakım görmüyor
    • buildroot-riscv32 konsol sürümü ve X Window sürümü sağlanıyor

Performans

  • 2017 itibarıyla sıradan bir masaüstü PC'de Firefox tarayıcısı kullanıldığında, x86 emülatörü yaklaşık 100 MIPS hızında çalışıyordu
  • Yerleşik vmtime aracıyla ayrıntılı benchmark yapılabilir

JavaScript terminali

  • Orijinal JSLinux terminalinin geliştirilmiş bir sürümüdür; kaydırma çubuğu ve URL vurgulama desteği sunar

Linux dağıtımları

  • Alpine Linux ve Buildroot dağıtımları kullanılır
  • vfsync, qemacs, tcc gibi özel paketler eklenmiştir
  • Fluxbox pencere yöneticisi üzerinden isteğe bağlı X Window desteği

  • Emülatör içinden internete erişim mümkündür
  • Benjamin Burns tarafından sağlanan websocket VPN kullanılır
  • Bant genişliği 40 kB/s ile sınırlıdır; ortak IP başına en fazla 2 bağlantıya izin verilir

Kullanım alanları

  • JavaScript motoru benchmark işlemleri (ör. Linux açılış süresini ölçme) ve asm.js, WASM gibi yeni tarayıcı teknolojilerinden yararlanma
  • Tarayıcıdan çıkmadan komut satırı Unix araçlarını öğrenme
  • Tarayıcı içinde güvenli dosya erişimi (vfsync)
  • Eski PC yazılımlarını çalıştırma

Kaynak kodu ve benzer projeler

  • RISC-V sürümünün kaynak kodu TinyEMU projesinde sunuluyor; ayrıca önceden derlenmiş, kurulumu kolay demolar da mevcut
  • Benzer projeler:
    • jor1k: OpenRISC OR1K CPU emülatörü
    • v86: PC emülatörü
    • angel: RISC-V CPU emülatörü

1 yorum

 
ndrgrd 2025-04-16

CORS ayarı yanlış yapılandırılmış; bu yüzden bağlantıdaki https://www.bellard.org/jslinux/ yerine https://bellard.org/jslinux/ adresine girmeniz gerekiyor, ancak o zaman düzgün çalışıyor.