Содержание
WSL9x научили запускать современное ядро Linux 6.19 внутри Windows 95 и новее — причём даже на машинах с Intel 486. Проект автор называет Windows 9x Subsystem for Linux и подчёркивает: тут нет виртуализации, ядра работают кооперативно на уровне ring 0.
Инструмент выложили на Codeberg. Разработчик Hailey пишет, что это «one of my greatest hacks of all time» — «один из моих величайших хаков».
Чем WSL9x отличается от привычного WSL
WSL9x запускает Linux не через аппаратную виртуализацию. Это ключевой момент, потому что из-за него проект совместим с процессорами вплоть до 486. Для сравнения, современный WSL в актуальных версиях Windows опирается на более новые механизмы, и на ретро-ПК просто не взлетит.
Hailey описывает подход так: Linux-ядро работает «cooperatively with the Windows kernel in ring 0». Идея в том, что можно держать рядом Windows- и Linux-приложения, без перезагрузок и без отдельной «виртуалки».
Из чего состоит Windows 9x Subsystem for Linux
В репозитории WSL9x описаны три компонента. Они закрывают и запуск ядра, и ввод-вывод консоли, и связку с окружением Windows 9x.
- Патченный Linux kernel: ядро, адаптированное под кооперативную работу в Windows 9x.
- VxD-драйвер: системный драйвер для Windows 9x, который участвует в интеграции на уровне ядра.
- wsl.com: клиентская программа, которая держит DOS-окно и прокидывает ввод-вывод.
Про wsl.com разработчик объясняет прямо: это клиент, который «держит DOS window open» для консольного драйвера, чтобы тот мог «push chars» в окно. Плюс он «shuttling keystrokes from DOS to the console driver on IRQ» — то есть передаёт нажатия клавиш через прерывания.
Если собрать и запустить WSL9x по инструкции из репозитория, система поднимает «modern Linux kernel (6.19 at time of writing)» внутри Windows 9x. Hailey отдельно перечисляет, что в таком режиме доступны ключевые вещи уровня ОС: paging, memory protection и pre-emptive scheduling.
Почему эта новость звучит особенно вовремя
Ситуация забавно контрастирует с тем, что происходит в основном дереве Linux. Разработчики ядра начали убирать поддержку Intel 486. Линус Торвальдс ранее говорил, что «zero real reason» — «ноль реальных причин» — продолжать поддержку этого класса процессоров.
Один из шагов в эту сторону сделал разработчик Ingo Molnar. Он подготовил патч, который убирает опции CONFIG_M486SX, CONFIG_M486 и CONFIG_MELAN из Kconfig. Этот патч ожидают в ветке Linux 7.1, и после этого собрать i486-образ ядра уже не выйдет.
Сам Hailey добавляет, что WSL9x «proudly written without AI» и что проект варился шесть лет, с момента завершения её проекта doslinux.
Ссылки на проект: репозиторий WSL9x на Codeberg и короткое описание от Hailey в посте на Mastodon.