Как превратить Linux в Windows. android.. android. appimage.. android. appimage. apple.. android. appimage. apple. elf.. android. appimage. apple. elf. freebsd.. android. appimage. apple. elf. freebsd. linux.. android. appimage. apple. elf. freebsd. linux. reactos.. android. appimage. apple. elf. freebsd. linux. reactos. timeweb_перевод.. android. appimage. apple. elf. freebsd. linux. reactos. timeweb_перевод. win32.. android. appimage. apple. elf. freebsd. linux. reactos. timeweb_перевод. win32. windows.. android. appimage. apple. elf. freebsd. linux. reactos. timeweb_перевод. win32. windows. Блог компании Timeweb Cloud.. android. appimage. apple. elf. freebsd. linux. reactos. timeweb_перевод. win32. windows. Блог компании Timeweb Cloud. операционные системы.. android. appimage. apple. elf. freebsd. linux. reactos. timeweb_перевод. win32. windows. Блог компании Timeweb Cloud. операционные системы. Системное администрирование.

Тезис: следует создать такой дистрибутив Linux, который по умолчанию выполняет двоичные файлы Windows через Wine.

❯ Рабочее окружение Linux нестабильно

Если я найду файл в формате .exe, которому 20 лет, я по-прежнему смогу запустить его на современной Windows. Попробуйте проделать подобное с двоичным файлом Linux, которому всего год. Совершенно не гарантированно, что он запустится, в зависимости от того, какие обновления успели произойти. Также не гарантируется, что заработает даже сегодняшний двоичный файл Linux, если собрать его в одном дистрибутиве, а попытаться запустить на разных других дистрибутивах. Возникает ровно такая же проблема, связанная с версиями установленных библиотек.

Притом, что системные вызовы Linux как таковые очень стабильны и надёжны, такого не скажешь об установленной поверх них библиотеке на c. Пользовательское пространство в Linux практически полностью основано на libc, следовательно, эта проблема совместимости бинарников распространяется и на весь Linux.

❯ Проблема, связанная с распространением двоичных файлов

По причине проблем, упомянутых выше (а также других проблем), в Linux не отлажен процесс распространения двоичных файлов. Существует четыре (да, четыре!) основных способа распространять бинарники, и у каждого из этих способ есть свои проблемы:

  1. Сырой бинарник. Если бы этот вариант работал, то никаких других решений бы не требовалось.

  2. Образ приложения (AppImage). Полностью самодостаточный артефакт, где в составе бинарника привязаны все необходимые зависимости.

  3. Flatpak. Менеджер пакетов, в котором для каждого приложения предоставляется песочница.

  4. 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-канале 

Перейти ↩

Автор: Albert_Wesker

Источник

Rambler's Top100