SkyOS — история «идеальной» ОС, которой так и не случилось

nicjs8lz9mthcafgernqi_-u7fi.png
Каждый сам выбирает идеальную операционную систему в соответствии со своими вкусами и предпочтениями. Для кого-то это Windows, для кого-то — macOS, кто-то использует подходящий дистрибутив Linux и вполне доволен его возможностями. Однако в конце 90-х ассортимент доступных операционных систем, особенно для платформы х86, был не слишком велик. Именно поэтому появившаяся на рубеже тысячелетий операционная система, созданная австрийским программистом Робертом Шелени при поддержке группы из трех энтузиастов, имела все шансы стать удобнее и надежнее Windows, вобрав в себя лучшие свойства других настольных систем того времени.

Старт проекта


В 1996 году Роберт Шелени решил создать собственный менеджер загрузки для своего домашнего 486-го компьютера. Этот менеджер позволил бы выбирать операционную систему для последующего запуска после включения питания машины. Позже он вспоминал, что написал это приложение на ассемблере буквально за один день. Однако Шелени решил не останавливаться на достигнутом и стал добавлять в программу все новые и новые функции, пока она не превратилась в прототип 16-разрядной операционной системы. Примерно по тому же пути несколькими годами ранее прошел один небезызвестный финский студент, постепенно дорабатывавший написанную им терминальную программу, шаг за шагом превращая ее в ядро операционной системы, которая чуть позже получила название Linux.

tuuojabqvrkrhkqoft6kuw2-8ne.png

Первая 16-разрядная версия SkyOS, увидевшая свет в 1997 году, была полностью написана на ассемблере. Распространялись она под открытой лицензией, и исходный код был доступен для свободной загрузки. Однако следующую версию, появившуюся годом позже, Роберт Шелени полностью переписал с нуля уже на Си. Это была 32-разрядная многопользовательская операционная система с монолитным ядром и UNIX-подобной архитектурой. Тем не менее, вторую версию все еще можно было назвать лишь прототипом — система запускалась из раздела FAT и не поддерживала ни виртуальную память, ни пользовательские задачи. Тем не менее, в версии 2 уже был реализован стек протоколов TCP/IP и имелся ряд консольных программ, созданных с помощью GNU Toolchain. Такие программы можно было переносить в SkyOS либо с небольшими модификациями, либо вообще без изменений.

Бета


Более-менее полноценной бетой SkyOS стала только третья версия системы. Здесь впервые была реализована виртуальная память и подкачка. SkyOS по-прежнему могла запускаться из разделов FAT12, FAT16 и FAT32 и пока еще не имела собственной файловой системы.

mqumfs9hmropfggyujdza2bmgsi.jpeg

Изначально SkyOS была системой с командной строкой. Графический интерфейс SkyOS появился позже — он был построен на базе оконного менеджера собственной разработки, который получил название SkyGI. Основную часть функций SkyGI Шелени реализовал в отдельной библиотеке, отвечавшей за формирование окон на экране, а часть обработки задач оконного менеджера брало на себя ядро операционной системы. Шелени старался добиться высокого быстродействия графического интерфейса, поэтому драйверы видеокарт для SkyOS тоже писал сам. Так, по словам разработчика, в режиме VGA пересчет всех видимых и скрытых областей одного окна в SkyOS занимал всего 0,2 мс, но Шелени так не удалось добиться высокого быстродействия при работе с драйверами VESA из-за архитектурных особенностей самих драйверов.

ujjyyztnfotbkpk6lnfg6k8czy8.jpeg

Как бы то ни было, уже третья версия SkyOS была многопользовательской и многозадачной операционной системой, со встроенной виртуальной машиной, используемой для вызова функций BIOS. Потоки ядра и потоки пользовательского режима были разделены в целях повышения безопасности. Помимо стандартных видеодрайверов VGA и VESA, ОС поддерживала «из коробки» драйверы жестких дисков IDE, ATA, клавиатуры, мыши и оптических накопителей ATAPI CD-ROM. То есть, системой уже можно было пользоваться, но с драйверами различных устройств вроде звуковых карт и всевозможной периферии на тот момент дела обстояли еще плачевно.

tuzqlae-rxcorgklppl3dgnuhy8.png
x2dpofkhns3bqhuont8eecxqdkk.jpeg

Тогда же, после выхода третьей версии SkyOS, Роберт Шелени закрыл исходный код операционной системы, изменив открытую лицензию на коммерческую. В одном из своих интервью он обосновывал это так: «Теперь я не хочу, чтобы SkyOS была с открытым исходным кодом. Я вложил в этот проект так много работы, что не желаю отдавать его бесплатно. Но я принимаю новых участников проекта. Если кто-то хочет писать код для SkyOS, он может получить исходники». Этот демарш вызвал поток обвинений со стороны и так не слишком обширной группы пользователей в нарушении условий лицензии GNU GPL. Тем не менее, никто так и не смог доказать ни одного факта подобного нарушения, тем более, значительную часть «позаимствованных» компонентов SkyOS Шелени серьезно переработал, а остальные написал сам.

Коммерческий проект


Основная задача, которую ставил перед собой Роберт Шелени в плане дальнейшего совершенствования SkyOS — это нативная поддержка исполняемых ELF-файлов Linux в его операционной системе. Для этого поверх ядра ОС Шелени решил реализовать слой эмуляции Linux, позволяющий без дополнительных инструментов запускать в SkyOS gcc и другие инструменты программирования, а также любые другие Linux-приложения. Такая совместимость, во-первых, позволила бы решить проблему с дефицитом прикладного ПО, а во-вторых, повысить популярность SkyOS в качестве доступной альтернативы Linux.

В более отдаленной перспективе Роберт Шелени рассматривал возможность добавления в архитектуру ОС второго слоя абстракции для поддержки Win32 API. Если бы ему удалось реализовать эту идею, SkyOS стала бы той самой «идеальной» операционной системой для большинства пользователей, которая открывала бы возможность без вспомогательного инструментария устанавливать и запускать прикладное ПО сразу для двух популярнейших системных платформ: Windows и Linux.

aexds6ap4plqydcnjyu4eg4crni.png

Версия SkyOS 4, вышедшая в 2003 году официально получила статус «беты», и начиная с этой версии для доступа к релизам пользователи должны были платить по 30 долларов за лицензию. В составе SkyOS 4 появилась собственная файловая система SkyFS (полностью реализована в 2004-м), которую Шелени разработал на основе форка OpenBFS. Помимо сохранившейся поддержки FAT12, FAT16 и FAT32, появилась возможность работать с разделами ISO 9660, а также была реализована поддержка виртуальных файловых систем procfs, devicefs и fifofs. Тогда же Шелени начал работу над следующей версией ОС.

dccab0qjvu0lbdpv5cv6vzrstlu.png
4z6kzfaqtmqk-lij3lkttndzzag.png
wxah4otnytufrdxtqczt6tx_kpk.png

В SkyOS 5.0, анонсированной в 2005 году, был полностью переработан графический интерфейс: в нем появились современные на тот момент видеоэффекты, тени и прозрачность. Также ОС научилась работать с USB, поддерживала многоядерные процессоры, мультимедиа и сторонние приложения, написанные для Linux и представленные в виде бинарных ELF-файлов. Под SkyOS портировали множество популярных программ: Mozilla Firefox, Thunderbird, OpenTTD, GTK+, AbiWord, Pidgin, в этой системе работал компилятор Free Pascal и запускались свободные версии некоторых игр, включая Quake. Как минимум, эта ОС успешно решала основные задачи, важные для пользователей того времени: просмотр веб-страниц, работа с электронной почтой, редактирование текстов, компиляция приложений и прослушивание MP3-файлов.

mww_i3rsngfbukuu1j3g6xsgx6g.png

Сам Роберт Шелени писал: «У меня нет точной цели для SkyOS. Она должна поддерживать как можно больше оборудования и быть в первую очередь совместимой с Linux на уровне двоичного кода. В ядре есть слои эмуляции, которые имитируют работающую систему Linux, поэтому приложения Linux могут запускаться нативно. […] Я думаю, что у SkyOS нет функций, которые не были бы реализованы ранее в другой операционной системе. Кроме того, я не хочу говорить, что некоторые функции выглядят лучше, чем в альтернативных ОС. Сначала нам нужно получить стабильную, широко поддерживаемую операционную систему. Затем я попытаюсь оптимизировать и реализовать ее лучшие возможности».

В этот период система привлекла большое количество пользователей, несмотря на то, что оставалась проприетарной. Ее графический интерфейс очень напоминал визуальное оформление Windows, что стало значительным плюсом для тех, кто привык к экосистеме Microsoft. А вот разработчиков по-прежнему оставалось мало: фактически, развитием системы занимался только сам Роберт Шелени и несколько программистов-энтузиастов.

Закат


«Получить широко поддерживаемую операционную систему», как планировал Шелени, к сожалению, не вышло: в первой половине «нулевых» новое оборудование для IBM-совместимых компьютеров появлялось настолько часто и в таком количестве, что Шелени просто не успевал писать для него драйверы. Дела с поддержкой «железа» шли все хуже и хуже. В 2009 году Роберт прекратил активную разработку SkyOS: последним релизом стала сборка 6947, выпущенная в августе 2008 года.

Чтобы решить проблему с драйверами, Роберт Шелени планировал заменить ядро собственной разработки на ядро Linux или NetBSD с одновременным переводом проекта SkyOS обратно под управление лицензии с открытым исходным кодом, однако эти планы так и не были реализованы. Разработка не возобновилась, а официальный сайт проекта SkyOS прекратил свое существование в 2013-м году.

Основными причинами закрытия этой операционной системы стали ограниченные ресурсы, которыми располагали ее создатели, и сложность конкуренции с открытыми проектами, такими как Linux. Еще работая над SkyOS, в 2000 году Роберт Шелени основал компанию Djinnworks Technologies, которая занялась разработкой игр, и этот стартап принес ему финансовый успех. Но даже став известным гейм-девелопером, Шелени продолжает считать SkyOS одним из самых важных и значимых проектов в своей жизни.

Статья поддерживается командой Serverspace.

Serverspace — провайдер облачных сервисов, предоставляющий в аренду виртуальные серверы с ОС Linux и Windows в 8 дата-центрах: Россия, Беларусь, Казахстан, Нидерланды, Турция, США, Канада и Бразилия. Для построения ИТ-инфраструктуры провайдер также предлагает: создание сетей, шлюзов, бэкапы, сервисы CDN, DNS, объектное хранилище S3.

IT-инфраструктура | Удвоение первого платежа по коду HABR


yum0upvqpmb1rcchboht0xncbsw.png

© Habrahabr.ru