Представлен публике инициатива 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, что подарит вам ностальгию или возможность обойти ограничения старой операционной системы нев зависимости от вашей текущей платформы.

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

«АвтоВАЗ» запустил подписку на машины Lada

29 минут назад

«АвтоВАЗ» запустил подписку на машины Lada

«АвтоВАЗ» запускает служба подписки на автомобили Lada, первой доступной моделью стала Lada Vesta за 44 тыс. рублей в месяц, сообщила пресс‑служба компании. «Сервис, получивший название „Lada Легко“,

Anthropic: у нас нет рубильника от Claude в секретных системах Пентагона

42 минуты назад

Anthropic: у нас нет рубильника от Claude в секретных системах Пентагона

Anthropic заявила, что после развёртывания ИИ-моделей Claude в секретных системах Пентагона у компании нет ни доступа к ним, ни технической возможности их отключить, изменить или повлиять на их работу

Американ Макги раскрыл детали своего увольнения из id Software в конце 1990-х

42 минуты назад

Американ Макги раскрыл детали своего увольнения из id Software в конце 1990-х

Американский геймдизайнер Американ Макги раскрыл детали своего увольнения из студии id Software в конце 1990-х годов. По его словам, причиной увольнения стало разное видение на создание игр, автор Ame

Лучшее за неделю (13.04 — 19.04)

48 минут назад

Лучшее за неделю (13.04 — 19.04)

Привет, ! Сегодня расскажем про новые меры по борьбе с обходом блокировок, наши итоги 2025 года, чипы для космических дата-центров от Intel и лучшие статьи прошлой недели: о легендарном трансивере «Ра

Линус Торвальдс похвалил ИИ-инструменты для анализа кода

1 час назад

Линус Торвальдс похвалил ИИ-инструменты для анализа кода

Линус Торвальдс высоко оценил ИИ-инструменты для анализа кода. По его словам, искусственный интеллект способен генерировать «блестящие отчёты», отмечать «глубокие и тонкие вещи» и бывает «на 100 проце