Представлен публике инициатива WSL9x — подсистема Windows 9x для Linux

3 мин
Представлен публике инициатива WSL9x — подсистема Windows 9x для Linux

Состоялся выпуск открытого проекта WSL9x (без использования ИИ и под лицензией GPL-3) — подсистемы Windows 9x для Linux (Windows 9x Subsystem for Linux). С помощью подсистемы Windows 9x для Linux можно запускать приложения Windows и Linux параллельно, используя современное ядро ​​Linux, работающее совместно с ядром Windows в ring 0. И в противовес современных WSL, здесь не используется аппаратная виртуализация, поэтому WSL9x можно запустить даже на 486 процессоре.

Решение WSL9x использует современное движок ​​Linux (6.19 на текущий момент) совместно с ядром Windows 9x, позволяя пользователям одновременно применять весь набор возможностей обеих операционных систем, в том числе файл подкачки, защиту памяти и вытесняющее планирование (pre‑emptive scheduling). «Запускайте все свои любимые приложения параллельно — перезагрузка не требуется!», — заявили в команде проекта.

Технические подробности решения:

  • WSL9x состоит из трёх компонентов: пропатченного ядра Linux (см. ветку win9x-um-6.19), драйвера VxD и клиентской программы wsl.com;

  • драйвер отвечает за инициализацию WSL9x (см. vxd/wsl9x.asm для точки входа драйвера). Он устанавливает начальные отображения для кода ядра и загружает vmlinux.elf с диска, используя прерывания DOS (см. vxd/loader.c и vxd/fs.asm). Движок компилируется с фиксированным базовым адресом 0xd0000000;

  • затем драйвер запускает свежий поток в виртуальной машине системы, выделяет стек размером 16 КБ для входа в Linux и переходит в цикл событий, который обрабатывает вход в движок, обработку прерываний, возврат в пользовательское пространство и режим ожидания. См. vxd/entry.c для этого кода;

  • драйвер также отвечает за обработку событий пользовательского пространства, которые должны быть переданы ядру, в настоящее время это ошибки страничного доступа и системные вызовы. Системные вызовы обрабатываются через обработчик ошибок общей защиты (GPF), поскольку в Win9x отсутствует в достаточной степени длинная таблица дескрипторов прерываний для установки надлежащего обработчика для прерывания int 0x80 — прерывания системного вызова Linux i386. Вместо этого обработчик GPF проверяет инструкцию, вызвавшую ошибку. Если это int 0x80, обработчик GPF перемещает указатель инструкции так, как если бы прерывание прошло успешно, и передаёт его в Linux как системный вызов. См. vxd/fault.c для получения этого кода;

  • ядро Linux работает в режиме user-mode Linux, но модифицировано для вызова api ядра Windows 9x вместо api POSIX и работает в ring 0 (режим супервизора/ядра), а не в ring 3 (пользовательский режим). Большая часть фактической интеграции ядра Win9x, в том числе переключение контекста, находится в ядре Linux. См. linux/arch/um/os-Win95 для получения основной информации об интеграции Win9x в код ядра. Точкой входа, вызываемой vxd/entry.c, является _start в main.c. Файлы process.c и mmu.c также важны;

  • новейший компонент — это клиент wsl.com. Это небольшая 16-битная программа DOS, реализованная на wsl/wsl.asm, которая позволяет WSL9x использовать командную строку MS-DOS в качестве окон TTY, вместо того чтобы реализовывать что-то своё;

  • при запуске wsl.com он выполняет первоначальный вызов программный оболочку WSL9x V86 (vxd/v86_api.asm), чтобы занять неиспользуемую консоль и уведомить WSL9x о необходимости отправки вывода с этой консоли. Затем он переходит в цикл обработки событий, ожидая прерывания и пытаясь считывать данные с клавиатуры при прерывании. Верхняя часть этого цикла обработки событий равным образом служит точкой синхронизации для драйвера консоли (vxd/console.c) — когда вывод из Linux готов, он планирует событие и выполняет прерывание 0x29 в контексте виртуальной машины MS-DOS для вывода символов в окно DOS. Это прерывание также является местом, где драйвер ANSI для DOS, например NNANSI, может перехватывать вывод терминала для реализации управляющих кодов ANSI.

Ранее вышла пятая релиз открытого проекта windows95 с исходным кодом полностью на JavaScript. «Это Windows 95, работающая в приложении Electron. Да, это полная релиз. Извините», — пояснил разработчик решения.

Проект работает в Windows, а также на macOS и Linux, что подарит вам ностальгию или возможность обойти ограничения старой операционной системы нев зависимости от вашей текущей платформы.

Читают сейчас

Глава Microsoft объяснил, почему ИИ не обесценит людей

3 часа назад

Глава Microsoft объяснил, почему ИИ не обесценит людей

Гендиректор Microsoft Сатья Наделла опубликовал в X программную статью о будущем компаний в экономике, которой управляет ИИ. Его основной вывод звучит так: чем мощнее становится искусственный интеллек

Отчет KPMG про агентный ИИ создал текст ИИ. Он похвалил сам себя и наврал почти во всех ссылках

5 часов назад

Отчет KPMG про агентный ИИ создал текст ИИ. Он похвалил сам себя и наврал почти во всех ссылках

Аудиторская организация KPMG, одна из "крупный четверки", отозвала свой отчет о пользе агентного ИИ — после того как стало известно, что сам документ оказался наглядной демонстрацией главной проблемы

Google отключил оператор inurl

6 часов назад

Google отключил оператор inurl

Ранее Google ограничил количество результатов поиска по оператору site, а теперь полностью отключил и inurl — поисковый оператор, который позволял находить документы содержащие нужную последовательнос

Вышло апдейт мультиплатформенного проекта RevPDF 4.5 — альтернатива Adobe Acrobat

7 часов назад

Вышло апдейт мультиплатформенного проекта RevPDF 4.5 — альтернатива Adobe Acrobat

13 июня 2026 года состоялся версия мультиплатформенного проекта RevPDF 4.5. Это маленький, бесплатный, работающий в автономном режиме редактор PDF-файлов с возможностью редактирования текста, скрытия

Microsoft выпустила версию PowerToys 0.100.0

9 часов назад

Microsoft выпустила версию PowerToys 0.100.0

Организация Microsoft выпустила PowerToys версии 0.100.0. Выпуск содержит исправления и улучшения для нескольких модулей, а наиболее важные изменения касаются повышения производительности, уменьшения