- 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
Ağ
- 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
CORS ayarı yanlış yapılandırılmış; bu yüzden bağlantıdaki
https://www.bellard.org/jslinux/yerinehttps://bellard.org/jslinux/adresine girmeniz gerekiyor, ancak o zaman düzgün çalışıyor.