Тезис: следует создать такой дистрибутив Linux, который по умолчанию выполняет двоичные файлы Windows через Wine.
❯ Рабочее окружение Linux нестабильно
Если я найду файл в формате .exe, которому 20 лет, я по-прежнему смогу запустить его на современной Windows. Попробуйте проделать подобное с двоичным файлом Linux, которому всего год. Совершенно не гарантированно, что он запустится, в зависимости от того, какие обновления успели произойти. Также не гарантируется, что заработает даже сегодняшний двоичный файл Linux, если собрать его в одном дистрибутиве, а попытаться запустить на разных других дистрибутивах. Возникает ровно такая же проблема, связанная с версиями установленных библиотек.
Притом, что системные вызовы Linux как таковые очень стабильны и надёжны, такого не скажешь об установленной поверх них библиотеке на c. Пользовательское пространство в Linux практически полностью основано на libc, следовательно, эта проблема совместимости бинарников распространяется и на весь Linux.
❯ Проблема, связанная с распространением двоичных файлов
По причине проблем, упомянутых выше (а также других проблем), в Linux не отлажен процесс распространения двоичных файлов. Существует четыре (да, четыре!) основных способа распространять бинарники, и у каждого из этих способ есть свои проблемы:
Сырой бинарник. Если бы этот вариант работал, то никаких других решений бы не требовалось.
Образ приложения (AppImage). Полностью самодостаточный артефакт, где в составе бинарника привязаны все необходимые зависимости.
Flatpak. Менеджер пакетов, в котором для каждого приложения предоставляется песочница.
Snaps. Ещё один менеджер пакетов, выполняющий приложения в песочнице.
Есть и другие способы распространения бинарников, но вышеперечисленные являются основными. Самое безумное в данном случае — что все четыре вышеперечисленных метода могут применяться в одной и той же системе одновременно, и каждый из них предусматривает собственные способы установки, обновления и удаления приложений. Не буду здесь углублённо рассматривать сильные и слабые стороны каждого из подходов, но есть аргументы в пользу каждого из них.
Серьёзный недостаток всех этих методов заключается в том, что ни один из них, в сущности, не рассчитан на долговременное хранение приложений. Можно ли заархивировать приложение на 20 лет, затем вытащить из корзины и просто выполнить, не прилагая никаких лишних усилий? Может быть, при помощи AppImage? Кто знает… Но по поводу трёх остальных методов — уверенно отвечу «нет».
❯ Win32 в помощь
Несколько лет назад Арек Хилер написал статью «Win32 Is The Only Stable ABI On Linux». В своих рассуждениях он абсолютно прав, и я думаю, что эта статья помогает понять суть проблемы с совместимостью в Linux. Но эта проблема решается благодаря гениальному решению, принятому при проектировании Win32.
В Linux можно выполнять системные вызовы напрямую. Для этого нужно просто заполнить несколько регистров и сделать прерывание системного вызова.
В Windows системные вызовы напрямую не выполняются. Вместо этого требуется делать динамические привязки к библиотекам, которые уже будут выполнять системные вызовы за вас. Благодаря этому Microsoft чего только не вытворяет на уровне ядра, но при этом предоставляет стабильный API для взаимодействия с пользовательским пространством. Благодаря этому маленькому шедевру, Linux и Windows могут одновременно работать на одной и той же машине.
Если призадуматься, то оказывается, что между приложением для Windows и приложением для Linux есть лишь два серьёзных отличия. Во-первых, они используют разные форматы исполняемых файлов. Во-вторых, в Windows системные вызовы выполняются через динамически подключаемые библиотеки. Просто воспользуйтесь форматом PE вместо ELF, загрузите пару библиотек — и у вас, в сущности, получится приложение для Windows! Также существует простой способ запускать под Linux приложения для Windows — это Wine.
Wine — чудесный проект. Он обеспечивает замечательную совместимость с приложениями для Windows, прослеживаемую вплоть до времён 32-разрядной Windows 95. Wine даже реализует DirectX! Разница между тем, что поддерживает Windows и что поддерживает Wine со временем стала стремиться к нулю (особенно, если вы придерживаетесь Win32). Wine — та магия, которая поможет нам решить нашу проблему.
❯ Новый дистрибутив
Представьте, что мы собрали новый дистрибутив Linux. Этот дистрибутив будет предоставлять рабочее окружение для ПК, очень напоминающее Windows — настолько, что пользователю Windows удалось бы работать с ним без подготовки. В такой системе можно устанавливать и запускать приложения для Windows точно так, как это делалось бы в Windows; без всякой дополнительной работы. Как бы это функционировало?
В таком дистрибутиве был бы предустановлен Wine, а также содержалось бы немного небольших патчей для ядра Linux. Понадобится немного модифицировать семейство системных вызовов «exec», чтобы диспетчеризация зависела от типа исполняемого файла. В таком случае любое приложение Linux могло бы сделать форк exec для приложения Windows — без труда.
Можно задать префикс wine для каждого пользователя, и настольная среда при работе отталкивалась бы от этого префикса. Пользователю выводилась бы Windows-подобная файловая система, и в ней были бы представлены пользовательские приложения. Привычный нам Linux также был бы доступен, но скрыт за GUI, удобным для рядового пользователя ПК.
❯ Настоящая мультиплатформенность
Wine работает под Linux, FreeBSD, ReactOS, macOS, Android и Haiku. Если бы мы публиковали все наши приложения как Windows/Win32, то могли бы добиться мультиплатформенной совместимости без каких-либо дополнительных усилий.
❯ Близкое будущее
Две крупнейшие коммерческие операционные системы MacOS и Windows развиваются в одном направлении. Они всё сильнее замыкаются в себе, нарушают приватность и всё сильнее лишают пользователя возможностей управлять своей собственной вычислительной средой. Обе эти компании беззастенчиво встраивают в свои операционные системы полноценное шпионское ПО. Windows пытается делать скриншоты вашего экрана каждые несколько секунд, после чего отдаёт их на анализ искусственному интеллекту. В MacOS есть функция под названием Gatekeeper, ограничивающая выбор софта, который вы можете выполнять на своём Mac лишь теми приложениями, ��оторые одобряет Apple. Как Apple, так и Microsoft работают над внедрением функции, позволяющей сканировать ваш компьютер на предмет «нелегальных» файлов, о которых система доложит в органы.
Эти фичи разрабатываются якобы ради удобства и «защиты детей», но в сухом остатке оказывается, что миллиарды пользователей поражаются в правах и лишаются возможности контролировать собственные компьютеры. Что произойдёт, если вы потеряете контроль над вашим компьютером? Что делать, если ваша операционная система станет предоставляться по подписке? Что будет, если вы сделаете что-то, не устраивающее эти компании — и потеряете возможность вообще пользоваться каким-либо компьютером?
Microsoft уже убирает возможность работать под Windows без привязки к онлайн-аккаунту. Если вы потеряете ваш аккаунт, даже нечаянно, то не сможете войти в ваш компьютер.
ЗАМЕЧАНИЕ: я не выступаю против Apple или Microsoft. Там работают блестящие инженеры. Не считаю их злонамеренными. Но я считаю, что в этих компаниях неправильно выстраиваются механизмы мотивации. По этому пути их ведут рынки и власти. Компании могли бы полностью пересмотреть свою политику и попытаться расширить возможности пользователей, но я исхожу из того, что само по себе это не произойдёт.
Вот почему я считаю, что нам нужен «Windows-подобный» дистрибутив Linux. Он решил бы не только проблему совместимости двоичных файлов, но и помог бы влиться в Linux тем пользователям Windows, которые принудительно «обновились» до Windows 11 в октябре прошлого года. Как хорошо было бы безболезненно перейти на Linux, правда?
Просто подумалось.
Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале ↩

Комментарии (36)

DKomaleev
30.01.2026 14:35Если я найду файл в формате .exe, которому 20 лет, я по-прежнему смогу запустить его на современной Windows.
Это какой-то сомнительный тезис. Он верен только для очень простого ПО, действительно состоящего из одного exe. Любая более сложная программа требует окружения, которое и создаёт инсталлятор. Даже portable версии всё равно нуждаются как правило в каких-то дополнительных папках и файлах, без которых работать не будут.

atd
30.01.2026 14:35Инсталлятор и будет тем самым одиноким exe, вы его запустите, а потом саму программу...

saege5b
30.01.2026 14:35Если этот бинарь в Вынь11 последней редакции запустится (так как там уже и 16бит приложения отменяют и прочие старости), если система безопасности винды не даст по рукам (а во времена 9х и линолеума про безопасность и разграничения доступа и не слыхивали).
Если этот инсталлятор не совсем кастомный (а в те годы очень любили закостылепедить что-то мегаупоротое).
Если приложуха не костылит на ВыньАПИ (а что бы без тормозов, там гоняли кучу грязных хаков), или нестандартную графику.

HemulGM
30.01.2026 14:35Система безопасности работает одинаково как для старых, так и для новых ехе. Она зависит не от ехе, а от системы как бы.
Кастомный инсталлятор - это обычное приложение, которое обычно наоборот менее всего зависит от чего-то стороннего при запуске.

aik
30.01.2026 14:35win16 отвалилось с переходом на 64 бита. А инсталяторы нередко были win16 даже у программ под win32, потому могут не ставиться. Если же выковырять программу мимо установщика, то вполне реально запустить.
А от системы безопасности винды помогает установка не в програм файлс, а в стороннюю папку с коротким именем на латинице.

ImagineTables
30.01.2026 14:35Какой линолеум? Двадцать лет назад вышла Vista. Так что, речь тут идёт о приложениях, написанных под XP SP2. Как раз одним таким приложением я пользуюсь в Win11 каждый день. Правда, ему не 20 лет, а 22 года. И оно тащит много зависимостей — WebView1 (IE6) через GUID, например.
P.S. Ниже ещё смешнее. Цива 1, которую я помню в детсаду на 286 (загрузка-заставка знатно тормозила), написанная под DOS, и выпущенная в сентябре 1991 — оказывается, двадцатилетней давности. Большая поломка совместимости действительно была, но в 2001 году, когда все с 9x переезжали на XP. Игры на Build'е запускались с глюками, да и вообще, досовские игры под саундпластырь. Только было это не 20, а 25 лет назад.

Siemargl
30.01.2026 14:35Недавно запустил на Win11 Visual C++1.5, 2.0, 4.2. Это 1993-1999г выхода примерно
Работает, компилируется, траблы только с пошаговым отладчиком.

XXXXPro
30.01.2026 14:35В Linux можно выполнять системные вызовы напрямую. Для этого нужно просто заполнить несколько регистров и сделать прерывание системного вызова.
В Windows системные вызовы напрямую не выполняются. Вместо этого требуется делать динамические привязки к библиотекам, которые уже будут выполнять системные вызовы за вас.Вообще-то в Linux в большинстве случаев системные вызовы делаются не напрямую, а через библиотеки типа glibc, musl и тому подобные. И как раз несовместимостью этих библиотек во многих случаях и вызваны проблемы с запуском старых бинарников.
А в wine проблем с совместимостью всё ещё хватает (первое, что сходу вспомнилось — это авторизация в лаунчере Battle.net от Blizzard). И зачастую, чтобы запустить ту или иную игру или старое Win-приложение, нужно чётко знать, какие библиотеки нужно доустановить с помощью winetricks. А без этого знания остаётся только сидеть и смотреть на невнятные сообщения об ошибках.

backfield9818
30.01.2026 14:35

AndrewStephanoff
30.01.2026 14:35А разве статическая линковка библиотек при сборке не решит эту проблему? Ладно, glibc, не получится, но musl кажется можно?

slonopotamus
30.01.2026 14:35следует создать такой дистрибутив Linux, который по умолчанию выполняет двоичные файлы Windows через Wine.
Непонятно зачем доя этого дистрибутив. Устанавливаем любой линукс с любой графической оболочкой, устанавливаем из менеджера пакетов Wine. Всё, экзешники запускаются дабл-кликом. Задача выполнена?

13werwolf13
30.01.2026 14:35буквально весь текст - чушь несусветная
попытки выдать преимущества за недостатки и недостатки за преимущества, глупые мифы.. полный бред..

OldMikl
30.01.2026 14:35Есть прекрасный проект DOSBIAN к сожалению только для Raspberry. Если бы родить аналогичный для x86, это бы позволило устанавливать винды под Linux и использовать всё накопленное обеспечение.

ArtyomOchkin
30.01.2026 14:35Из забавного, на Windows 10, х32 (22h2, x86-32 ЦП) прекрасно запускается Office '97 через встроенную NTVDM (х86-16) и даже обеде старый софт.
Интересно, работает ли это с Wine, надо будет проверить... Как помню, там только х64 и х32 версии работают. Хотя не исключаю возможности запуска программ под старые архитектуры. По крайней мере на Windows 11 есть опенсорсная реализация ntvdm под х16, а для х32 есть нативная реализация запуска (тем более, что многие старые компоненты в системе всё ещё х32).
Linux же остаётся хорошей вещью, своего рода конструктором, который надо аккуратно и относительно долго собирать-подгонять под себя и своё железо.
kenomimi
Зачем нужны старые бинари? Чтобы что? Всё есть в исходниках, а та малая часть софта, что поставляется в бинарях, чаще всего всё равно завязана на сервер, и работать перестанет уже после обнов на пару минорных версий.
В винде совместимость критически важна, поскольку исходники софта никто не шарил никогда, даже бесплатного, это большая редкость. В линуксах оно или есть в репе, или лежит на гитхабе - скачал и пересобрал, или лежит на сайте вендора в виде какой-нибудь из бинарных сборок.
mikleh
Играть в старые игры, например. Исходники - это хорошо, но их еще собрать надо, далеко не всякому пользователю это под силу.
ArtyomOchkin
Согласен, исходники - это действительно хорошо, но не всегда есть время и желание собирать то, что можно было бы просто сразу использовать...
Anselm_nn
можно подумать что старые исходники соберутся на новой системе с новыми библиотеками без проблем, например есть PAC (аналог mobaxterm), вот только на более менее новых системах для него один вариант AppImage
aik
Старому софту нужные старые библиотеки, иногда - старые компиляторы и т.п. Потому собрать старый софт - если это что-то уровня офисного пакета, а не "хелло ворлд" - может быть очень сложной задачей.