Теперь вы можете запустить WSL на Windows 95 — если вы такой же безумец, как и мы

Wsl9x Linux Windows 9x хак ядро theregister.com

Разработчик представила WSL9x — подсистему Linux для Windows 9x, назвав это «одним из величайших хаков». Проект позволяет запустить ядро Linux 6.19 в старых ОС. — theregister.com

Подсистема Windows для Linux — бесценный инструмент, но любой, кто хотел запустить её в системе Windows 9x, до недавнего времени оставался ни с чем.

Самопровозглашённый компьютерный энтузиаст и хакер по имени Хейли представила в среду в посте на Mastodon то, что она назвала «одним из величайших своих хаков за всё время»: Подсистему Windows 9x для Linux, или WSL9x. 

Согласно загрузке Хейли на Codeberg, WSL9x запускает ядро Linux 6.19 в кооперативном режиме внутри Windows 9x, позволяя пользователям взаимодействовать с ним так же, как с экземпляром WSL в современной системе Windows. Разумеется, без графического интерфейса — если вы твёрдо решили запускать Linux в Windows 95, придётся пользоваться терминалом, как взрослый. Извините. 

Вопрос о том, зачем это кому-то может понадобиться, возник довольно быстро; мы связались с Хейли, чтобы узнать, почему она взялась за этот довольно нишевый проект, но не получили ответа до публикации. К счастью для нас, Хейли объяснила, как это сделано, на Codeberg. 

Согласно файлу README WSL9x, система состоит из трёх компонентов: ядро Linux, пропатченное для вызова API Windows 9x вместо POSIX, драйвер VxD (виртуального устройства) и сам клиент WSL. 

Драйвер VxD выполняет большую часть сложной работы и отвечает за инициализацию WSL9x, а также за обработку событий пользовательского пространства, которые необходимо передавать ядру (например, ошибки страниц и системные вызовы), что он делает довольно интересным способом из-за ограничений архитектуры Win9x.

«Системные вызовы обрабатываются через обработчик ошибок общей защиты, поскольку в Win9x нет таблицы дескрипторов прерываний, достаточно длинной для установки надлежащего обработчика для int 0x80», — объяснила Хейли, имея в виду прерывание системного вызова i386 для Linux.

Обработчик ошибок общей защиты в WSL9x следит за инструкциями, вызывающими ошибку, и когда видит int 0x80, он «продвигает указатель инструкции так, как если бы прерывание было успешно обработано, и перенаправляет как системный вызов в Linux», — продолжила Хейли. 

Что касается самого клиента, Хейли описывает его как небольшую 16-битную программу DOS, которая существует для того, чтобы WSL9x мог передавать приглашения DOS в ядро Linux в качестве TTY вместо полноценного пользовательского клиента. 

Однако будьте осторожны: согласно собственным комментариям Хейли в ветке на Hacker News, ядро Linux получает те же привилегии ЦП кольца 0, что и ядро Windows при работе WSL9x. Это не только означает возможные проблемы с безопасностью, но и может привести к некоторой нестабильности. 

«Они должны работать согласованно, но если одно из них даёт сбой, то падает и другое», — сказала Хейли в этой ветке. 

Если вы просто отказываетесь (или не можете, из-за какого-то древнего, но необходимого приложения, работающего где-то в серверной) избавиться от этой старой машины с Windows 95, 98 или ME, которую вы всё ещё используете, и вам нужно запустить на ней ядро Linux, Хейли предоставляет инструкции на своей странице Codeberg для этого проекта. ®

Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.

Похожие новости: