На Хабре частенько говорят о дистрибутивах, так или иначе основанных на ядрах Linux или BSD. Но есть и совсем уникальные операционные системы, которые разрабатывались с нуля и полностью самодостаточны. Порой такие проекты создаются лишь одним человеком, яркий пример — TempleOS. Сегодня хочу рассказать о Visopsys, проекте визуальной операционной системы, которая уже 23 года разрабатывается Энди Маклафлином (Andy McLaughlin) в качестве хобби.

История Visopsys начинается в 1997 году. Британский разработчик Энди Маклафлин на тот момент был сильно увлечен изучением архитектуры x86 и низкоуровневым программированием. Ему хотелось досконально понимать работу операционной системы изнутри и то, как именно она взаимодействует с «железом».

Видя успешные примеры вроде Minix и Linux, Энди решил, что лучшим способом изучения станет создание собственной операционной системы с нуля, не полагаясь на чужие разработки. При этом цели ставились довольно амбициозные — автор хотел написать свое ядро и графическую оболочку.

Самая первая версия представляла собой просто эксперимент по загрузке и управлению памятью. Позже к этому стали добавляться драйверы, файловая система и базовый графический интерфейс. Последний, к слову, определил название Visopsys (Visual Operating System) — именно наличием GUI система выделялась на фоне других хоббийных ОС, которые чаще всего были текстовыми.

IA-32 стала единственной поддерживаемой архитектурой, а Intel Pentium — эталонным процессором. Сама система, без сюрпризов, разрабатывалась на языке C и частично на Assembler. Энди хотелось, чтобы она была простой и минималистичной, при этом изначально не предусматривалась кроссплатформенность. Зато с определенного момента она стала поддерживать вытесняющую многозадачность и виртуальную память.

Установка

Но хватит теории, давайте попробуем взглянуть на то, чего же удалось достичь за столь существенный срок работы над проектом. Для начала посетим официальный сайт и скачаем актуальный ISO-образ операционной системы. Запуск на реальном «железе», разумеется, более интересен, но вот снять скриншоты будет проблематично. Так что развернем ее на виртуальной машине при помощи гипервизора Oracle VirtualBox.

Сначала появляется окно приветствия, которое загружает инсталлятор:

Отвечаем утвердительно на вопрос о желании установить операционную систему Visopsys. Затем указываем целевой накопитель. В нашем случае это виртуальный жесткий диск объемом 2 Гб:

Нужно указать конкретный раздел, куда ставить ОС. У нас его пока нет, поэтому в списке пусто. Щелкаем на Partition disks…

Нас встречает следующая ошибка. Поскольку диск абсолютно пуст, то и метки (label) у него еще нет:

Тут используется обычная MBR, поэтому создаем один большой Primary-раздел под операционную систему и все данные:

Теперь нужно определиться с типом файловой системы. Список весьма велик, но рекомендуется выбрать FAT32. Понятное дело, что другие типы ФС менеджер также создаст, но при этом они не будут распознаваться Visopsys:

Применяем глобальное изменение разделов, нажав на кнопку Write changes, и делаем его активным с помощью Set active. Там же форматируем раздел в FAT32:

Утилита разметки на всякий случай переспросит и внесет изменения на диск. Также не забудьте записать Master Boot Record (MBR):

Теперь ее можно смело закрывать, нажав на крестик, и инсталлятор увидит созданный нами раздел:

Дело за малым — выбрать тип установки (базовые пакеты или все полностью), указать язык системы и подтвердить, что необходимо отформатировать раздел жесткого диска. После этого нажать Install:

Начнется копирование системных файлов на диск. Если получили ошибку с кодом 4, значит, забыли сделать раздел активным. На следующем этапе вас попросят ввести пароль суперпользователя admin:

После того как все шаги установки выполнены, можно перезагрузиться и сходу получить ошибку инициализации:

Ничего удивительного тут нет. Операционная система нестандартная, так что гипервизор не всегда отрабатывает корректно. Если же вам повезло и вы ставите ее на реальное «железо», то после загрузки увидите графический интерфейс.

Интерфейс

Вот такой рабочий стол встречает всех пользователей, которые смогли корректно загрузиться после установки. Здесь используется привычная концепция с верхней строкой. Левое меню Window остается неактивным, пока вы не откроете одно или несколько окон. В этом случае оно начинает отображать названия всех окон — как скрытых, так и находящихся перед пользователем на рабочем столе:

Кнопок управления окнами всего две, и расположены они в правой части строки названия. Левая сворачивает окно. Обратно его можно развернуть через вышеупомянутое меню Window. Крестик же полностью закрывает его и выгружает из памяти.

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

В роли панели управления здесь есть иконка Administration. Там собраны все утилиты, относящиеся к конфигурированию системы, в частности менеджер дисков, управление параметрами экрана, настройками сети, приложениями и пользователями.

Отдельного внимания заслуживает консоль. В ней отображаются все возможные ошибки и сбои при работе системы. Тут, например, видно, что возникла проблема с определением типа BIOS и это вызвало ошибку в коде. Также есть информационное сообщение о том, что DHCP-клиент не получил ожидаемого IP-адреса от маршрутизатора и из-за этого обновление конфигурации сетевой карты net0 завершилось неудачей:

Есть у Visopsys и собственная командная оболочка (shell). С помощью нее можно сделать гораздо больше, чем через GUI. Некоторые команды работают точно так же, как и в обычном Linux — например, cat file.txt выведет на экран содержимое текстового файла. Другие специфичны только для Visopsys:

В ней есть отдельно написанные утилиты, вроде fdisk для разметки дисков, и служебные инструменты, наподобие hexdump, позволяющие вывести содержимое любого файла в шестнадцатеричном виде:

Выглядит это весьма недурно для хоббийного проекта.

Приложения

Пора поговорить о том, как же можно использовать эту операционную систему. Сама по себе она хороша, но ведь главная задача любой ОС — запускать приложения. И вот с этим у Visopsys все довольно печально. Она поддерживает исполняемые файлы формата ELF (тот же самый, что и в Linux), но собраны они должны быть с использованием API Visopsys. Вы можете найти его внутри системы в файле /system/headers/sys/api.h или на сайте проекта.

Так что если вам захочется написать собственное приложение или портировать существующее, то это довольно трудоемкий процесс. Хоббийная ОС не может похвастаться большим количеством софта, но тем не менее в комплекте есть несколько заслуживающих внимания программ. Самое простое, что можно было там реализовать, это казуальные игры, такие как змейка:

Какой же набор стандартных приложений без калькулятора? Разумеется, он тут есть:

Но лично мне больше всего понравился редактор пиксельной графики. Вот так, например, выглядит мина из игры «Сапер»:

Что в итоге

В целом, Visopsys оставил очень приятное впечатление. Видно, что разработчик уделил много внимания каждому из компонентов. Действительно, по уровню проработки она сильно уступает большинству современных систем. Но если вспомнить, что все это сделано одним человеком, то становится очевидным колоссальный объем работы.

Visopsys не просто абстрактный набор связанных друг с другом программных компонентов, а целостная ОС, в которой есть ядро, графическая оболочка и собственный API. Visopsys не оставит равнодушным ни одного любителя низкоуровневого программирования, а также тех, кому интересна тема постройки операционной системы с нуля. Понятное дело, что она никак не может заменить Windows или Linux, но это хороший пример того, как всего лишь один человек способен спроектировать и воплотить в жизнь такую сложную идею.

Ну и напоследок стоит сказать, что Visopsys имеет открытый исходный код. Любой программист может внимательно изучить его и применить полученные знания в собственном проекте. Помимо этого, на сайте есть раздел для разработчиков, где вы найдете файлы с описанием используемых библиотек и API.

Единственный момент, о котором стоит упомянуть: последнее обновление системы было в 2023 году, а сообщения на форуме датируются второй половиной апреля 2025. Есть ненулевая вероятность, что текущая версия станет последней.

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


  1. maisvendoo
    25.06.2025 16:38

    Я плохо смотрел сайт, или у него реально нет репозитория?