Windows 95, а внутри — Linux 6.19. Энтузиастка просто взяла и сделала невозможное (а зачем — не сказала)
NewsMakerНостальгия по древним системам переходит в боевой режим.
Подсистема Windows для Linux давно ассоциируется с современными версиями Windows, поэтому мысль о запуске похожей связки на Windows 95 или 98 звучит почти как шутка. Хейли, которая называет себя компьютерной tinkerer и хакером, превратила такую шутку в реальный проект и показала WSL9x , то есть Windows 9x Subsystem for Linux.
О своей работе Хейли рассказала в Mastodon и назвала проект одним из главных хаков в жизни. На странице WSL9x в Codeberg говорится, что система запускает ядро Linux 6.19 внутри Windows 9x в кооперативном режиме. Пользователь может работать с Linux почти так же, как с обычной WSL в новой Windows, только без графического интерфейса. Любителям Linux внутри Windows 95 придется общаться с системой через терминал.
Вопрос, зачем вообще понадобился такой проект, возникает почти сразу. Авторы исходного материала попытались спросить об этом саму Хейли, но до публикации ответа не получили. Зато на странице проекта Хейли подробно объяснила, как работает WSL9x.
Система состоит из трех частей. Первая часть, пропатченное ядро Linux, обращается не к POSIX-интерфейсам, а к API Windows 9x. Вторая часть, драйвер виртуального устройства VxD, отвечает за основную работу. Третья часть, клиент WSL, служит прослойкой между старой Windows и Linux.
Именно драйвер VxD берет на себя самые сложные задачи. Драйвер инициализирует WSL9x и передает ядру события из пользовательского пространства, включая ошибки страниц памяти и системные вызовы. Из-за ограничений архитектуры Win9x разработчице пришлось искать обходной путь. Хейли пишет, что Windows 9x не имеет достаточно длинной таблицы дескрипторов прерываний, чтобы установить нормальный обработчик для int 0x80, стандартного Linux-прерывания системных вызовов на i386.
Поэтому WSL9x использует обработчик общей ошибки защиты. Система следит за инструкциями, которые привели к сбою, замечает появление int 0x80, затем сдвигает указатель команд так, будто прерывание уже успешно отработало, и передает вызов в Linux как системный. Для Windows 9x схема выглядит очень необычно, но именно так проект обходит ограничения старой платформы.
Клиентская часть устроена заметно проще. Хейли описывает клиент не как полноценную отдельную программу, а как небольшой 16-битный DOS-клиент, который нужен лишь для передачи DOS-приглашений командной строки в ядро Linux как TTY.
При всей эффектности проекта у WSL9x есть и неприятные особенности. В обсуждении на Hacker News Хейли предупредила, что во время работы WSL9x ядро Linux получает те же привилегии ring 0, что и ядро Windows. Такой уровень доступа может обернуться проблемами с безопасностью и нестабильной работой. Windows и Linux в такой конфигурации должны сотрудничать, но при сбое любой из сторон падают обе системы.
WSL9x вряд ли станет массовым инструментом, но для владельцев старых машин на Windows 95, 98 или ME проект выглядит любопытным решением. Особенно в случаях, когда древний компьютер до сих пор нельзя списать из-за старой, но нужной программы где-нибудь в серверной. Для желающих попробовать WSL9x Хейли выложила инструкцию по запуску на странице проекта.
Подсистема Windows для Linux давно ассоциируется с современными версиями Windows, поэтому мысль о запуске похожей связки на Windows 95 или 98 звучит почти как шутка. Хейли, которая называет себя компьютерной tinkerer и хакером, превратила такую шутку в реальный проект и показала WSL9x , то есть Windows 9x Subsystem for Linux.
О своей работе Хейли рассказала в Mastodon и назвала проект одним из главных хаков в жизни. На странице WSL9x в Codeberg говорится, что система запускает ядро Linux 6.19 внутри Windows 9x в кооперативном режиме. Пользователь может работать с Linux почти так же, как с обычной WSL в новой Windows, только без графического интерфейса. Любителям Linux внутри Windows 95 придется общаться с системой через терминал.
Вопрос, зачем вообще понадобился такой проект, возникает почти сразу. Авторы исходного материала попытались спросить об этом саму Хейли, но до публикации ответа не получили. Зато на странице проекта Хейли подробно объяснила, как работает WSL9x.
Система состоит из трех частей. Первая часть, пропатченное ядро Linux, обращается не к POSIX-интерфейсам, а к API Windows 9x. Вторая часть, драйвер виртуального устройства VxD, отвечает за основную работу. Третья часть, клиент WSL, служит прослойкой между старой Windows и Linux.
Именно драйвер VxD берет на себя самые сложные задачи. Драйвер инициализирует WSL9x и передает ядру события из пользовательского пространства, включая ошибки страниц памяти и системные вызовы. Из-за ограничений архитектуры Win9x разработчице пришлось искать обходной путь. Хейли пишет, что Windows 9x не имеет достаточно длинной таблицы дескрипторов прерываний, чтобы установить нормальный обработчик для int 0x80, стандартного Linux-прерывания системных вызовов на i386.
Поэтому WSL9x использует обработчик общей ошибки защиты. Система следит за инструкциями, которые привели к сбою, замечает появление int 0x80, затем сдвигает указатель команд так, будто прерывание уже успешно отработало, и передает вызов в Linux как системный. Для Windows 9x схема выглядит очень необычно, но именно так проект обходит ограничения старой платформы.
Клиентская часть устроена заметно проще. Хейли описывает клиент не как полноценную отдельную программу, а как небольшой 16-битный DOS-клиент, который нужен лишь для передачи DOS-приглашений командной строки в ядро Linux как TTY.
При всей эффектности проекта у WSL9x есть и неприятные особенности. В обсуждении на Hacker News Хейли предупредила, что во время работы WSL9x ядро Linux получает те же привилегии ring 0, что и ядро Windows. Такой уровень доступа может обернуться проблемами с безопасностью и нестабильной работой. Windows и Linux в такой конфигурации должны сотрудничать, но при сбое любой из сторон падают обе системы.
WSL9x вряд ли станет массовым инструментом, но для владельцев старых машин на Windows 95, 98 или ME проект выглядит любопытным решением. Особенно в случаях, когда древний компьютер до сих пор нельзя списать из-за старой, но нужной программы где-нибудь в серверной. Для желающих попробовать WSL9x Хейли выложила инструкцию по запуску на странице проекта.