Независимый разработчик создал проект WSL9x, который расшифровывается как Windows 9x Subsystem for Linux. Этот инструментарий позволяет запускать современные ядра Linux внутри операционных систем Windows 95, Windows 98 и Windows ME. Проект дает возможность в 1 системе совместно выполнять приложения для Linux и Windows 9x. Это работает по аналогии с прослойкой WSL в современных версиях Windows. На данный момент поддерживается запуск только консольных программ. Код написан на языках Си и ассемблере и распространяется под лицензией GPLv3.
В отличие от WSL 2 в новом проекте не применяется виртуализация. Ядро Linux выполняется в 0 кольце защиты параллельно с ядром Windows. Это позволяет использовать разработку на старых системах без поддержки аппаратной виртуализации, включая процессоры i486. В системе применяется модифицированное ядро Linux 6.19, которое собрано для работы в режиме User mode Linux. Данный режим предназначен для запуска ядра как пользовательского процесса. Любое обращение к POSIX API в слое трансляции заменяется на вызов API ядра Windows 9x.
В операционную систему загружается специальный драйвер VxD. Он отвечает за инициализацию подсистемы, размещение ядра в памяти, диспетчеризацию прерываний и обработку событий из пространства пользователя. Ядро Windows 9x не поддерживает таблицу векторов прерываний IDT, поэтому установить собственный обработчик прерывания 0x80 нельзя. Для системных вызовов применяется обработчик General Protection Fault, перехватывающий исключения при выполнении инструкции SYSCALL.
Пользователям доступна утилита wsl.com, которая оформлена в виде 16 битного приложения DOS. Она позволяет использовать командную строку MS DOS для запуска программ Linux. Утилита обеспечивает передачу событий ввода и симулирует работу консоли для отображения вывода с поддержкой кодов ANSI.
Источник: www.playground.ru