WSL9x proiektua Linux kernel modernoak Windows 95 ingurune batean exekutatzeko

НС связанный с ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Microsoft энтузиаст Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π» инструмСнтарий WSL9x (Windows 9x Subsystem for Linux), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ соврСмСнныС ядра Linux Π²Π½ΡƒΡ‚Ρ€ΠΈ ядра Windows 95/98/ME. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΉ систСмС Π±ΠΎΠΊ ΠΎ Π±ΠΎΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ прилоТСния для Linux ΠΈ Windows 9x, ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ прослойка WSL позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Linux-прилоТСниями Π² соврСмСнных вСрсиях Windows. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ запуск Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Ρ… Linux-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Код ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² WSL9x написан Π½Π° Π‘ΠΈ ΠΈ ассСмблСрС ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GPLv3.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ WSL2 Π² WSL9x Π½Π΅ примСняСтся виртуализация ΠΈ ядро Linux выполняСтся Π² Π½ΡƒΠ»Π΅Π²ΠΎΠΌ ΠΊΠΎΠ»ΡŒΡ†Π΅ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ с ядром Windows, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ WSL9x Π½Π° систСмах Π±Π΅Π· ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π΄Π°ΠΆΠ΅ c CPU i486. Π’ систСмС примСняСтся ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ядро Linux 6.19, собранноС для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ UML (User-mode Linux), ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΌ для запуска ядра ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ процСсса. ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ POSIX API Π² UML-слоС трансляции Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ Π½Π° Π²Ρ‹Π·ΠΎΠ² API ядра Windows 9x.

Π’ Windows загруТаСтся ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ VxD-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ подсистСмы WSL9x, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ядра Linux Π² памяти, Π΄ΠΈΡΠΏΠ΅Ρ‚Ρ‡Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ, Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ управлСния ядру Linux Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ совмСстной многозадачности ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ адрСсованных Linux-ядру событий ΠΈΠ· пространства ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π½Π΅Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ страницам памяти (page faults). Π’Π°ΠΊ ΠΊΠ°ΠΊ ядро Windows 9x Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ (IDT, Interrupt Descriptor Table), Ρ‡Ρ‚ΠΎ Π½Π΅ позволяСт ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ собствСнный ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ прСрывания 0x80, для систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² примСняСтся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ GPF (General Protection Fault), ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ инструкции SYSCALL.

Для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ прСдлагаСтся ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° wsl.com, оформлСнная Π² Π²ΠΈΠ΄Π΅ 16-разрядного DOS-прилоТСния ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку MS-DOS для запуска Linux-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° обСспСчиваСт ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ событий Π²Π²ΠΎΠ΄Π° ΠΈ симулируСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ консоли для отобраТСния Π²Ρ‹Π²ΠΎΠ΄Π° с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ANSI escape-ΠΊΠΎΠ΄ΠΎΠ².

 WSL9x proiektua Linux kernel modernoak Windows 95 ingurune batean exekutatzeko


Iturria: opennet.ru

Gehitu iruzkin berria