Un entuziast independent de compania Microsoft a realizat un instrument WSL9x (Subsystem for Linux pentru Windows 9x), care permite rularea kernel-urilor moderne Linux în interiorul kernel-ului Windows 95/98/ME. Proiectul oferă posibilitatea de a rula aplicații Linux și Windows 9x pe aceeași sistem, similar cu modul în care interfața WSL permite utilizarea aplicațiilor Linux în versiunile moderne de Windows. Se suportă doar rularea programelor Linux în consolă. Codul componentelor WSL9x este scris în C și assembly și este distribuit sub licența GPLv3.
Spre deosebire de WSL2, în WSL9x nu se aplică virtualizarea, iar kernel-ul Linux rulează în cercul zero de protecție, paralel cu kernel-ul Windows, ceea ce permite utilizarea WSL9x pe sisteme fără suport pentru virtualizare hardware, inclusiv cu CPU i486. Sistemul folosește un kernel Linux modificat 6.19, compilat pentru a funcționa în modul UML (User-mode Linux), destinat rulării kernel-ului ca proces de utilizator. Apelurile la API-ul POSIX în stratul UML de translație sunt înlocuite cu apeluri la API-ul kernel-ului Windows 9x.
În Windows se încarcă un driver VxD pregătit de proiect, responsabil pentru inițializarea subsistemului WSL9x, încărcarea și plasarea kernel-ului Linux în memorie, dirijarea întreruperilor, transmiterea ciclică a controlului către kernel-ul Linux în modul de multitasking cooperativ și procesarea evenimentelor adresate kernel-ului Linux din spațiul utilizatorului, cum ar fi executarea apelurilor de sistem și accesarea paginilor de memorie nealocate (page faults). Deoarece kernel-ul Windows 9x nu suportă tabela vectorială de întreruperi (IDT, Interrupt Descriptor Table), ceea ce nu permite stabilirea unui handler propriu pentru întreruperea 0x80, pentru apelurile de sistem se utilizează handler-ul GPF (General Protection Fault), care interceptă excepțiile care apar în timpul execuției instrucțiunii SYSCALL.
Utilizatorilor li se oferă un utilitar wsl.com, disponibil sub forma unei aplicații DOS de 16 biți, care permite utilizarea liniei de comandă MS-DOS pentru a rula programe Linux. Utilitarul asigură transmiterea evenimentelor de intrare și simulează funcționalitatea consolei pentru a afișa ieșirile cu suport pentru coduri de escape ANSI.

Sursa: opennet.ro
