KolibriOS: просто дайте ей шанс полетать на вашем компьютере

Колибри :)В середине февраля 2007 года новость о релизе KolibriOS 0.65 облетела весь Интернет. Еще бы: первая операционная система на ассемблере, поддерживающая чтение разделов NTFS. У прочитавших эту новость сразу возникли вопросы: «Как появилась эта операционная система?», «Кто ее разрабатывает?», «Как ее установить?», «Что она предлагает пользователю и программисту?», «Каково ее будущее?». В статье даются ответы на эти вопросы.

Как появилась эта операционная система?
KolibriOS – это ответвление (fork) некогда очень популярной в России 32-битной операционной системы MenuetOS. MenuetOS была искусственно разведена на две ветки: открытую для 32-битных процессоров и закрытую для 64-битных. Этого искусственного разделения нет в KolibriOS, которая работает на 32- и 64-битных процессорах. KolibriOS распространяется согласно лицензии GPL, как и Menuet32.
Даже в кратком описании истории KolibriOS нельзя не упомянуть предшествовавшие ее появлению события, тем более что они довольно интересны.
Во второй половине 1990-х годов финский студент Вилле Турьянмаа писал графическую оболочку для DOS. Ему хотелось, чтобы его программы на Паскале выполнялись в многозадачном защищенном режиме и имели оконный графический интерфейс. Оболочка называлась MultiRun Program for IBM-PC. Программа обрастала возможностями и со временем превратилась в самодостаточную операционную систему (DOS уже не требовался), которая запускалась с дискеты. Называлась эта операционная система MrOS (скрин прилагается), а объем ееMrOS исходных текстов на Паскале составлял 25 тысяч строк. В дистрибутив входили три десятка программ типа часов, проигрывателя AudioCD, игр, синтезатора пианино, регулятора громкости... В последних версиях велась работа над загрузчиком исполняемых файлов формата ELF, но наступил миллениум, и программисты всего мира начали говорить о Java, XML, скриптовых языках и прочих технологиях.
Вилле понял, что его 16-битная ОС устарела и требуется что-то менять. С другой стороны, ему не нравилось медленное выполнение программ, написанных на интерпретируемых языках, наличие прослоек между программой и железом. Он решил написать самое быстрое ядро в мире, и единственным подходящим языком для этого оказался ассемблер. Такое радикальное изменение курса вызвало недоумение у его соратника по MrOS. Ян-Микаэль Брюммер начал проект Unix-подобной TabOS, хотя в дальнейшем он написал немного кода и для MenuetOS.
Через несколько месяцев был выпущен релиз MenuetOS 0.01. Название было придумано еще во времена MrOS, но Вилле приберег его для новой ОС. Оно произошло от слов Menu и Menuet, поскольку использованием ОС должно быть простым (как работа с меню программ) и веселым занятием (как танец). В то время она разрабатывалась с помощью ассемблера Nasm и ее интерфейс был похож на интерфейс оригинальной MrOS. Например, некоторые части интерфейса MrOS (иконка готической буквы M и рисунок розы на экране завершения работы) использовались в MenuetOS несколько лет. Сообщество разработчиков MenuetOS было очень маленьким до 5 сентября 2001 года, когда было опубликовано интервью на сайте OSNews. Операционная система с графическим интерфейсом, написанная на ассемблере и влезающая на дискету, – подобного мир не видел с начала 1990-х годов (PC/GEOS, на скрине). GeOSЛюди загружали эту ОС, разносили весть о ней по форумам, создавали посвященные ей сайты. Отметим, что российские сайты были сделаны буквально через неделю после интервью. События 11 сентября 2001 года отвлекли внимание от MenuetOS, но развитие продолжалось.
MenuetOS была еще сырым проектом, и в ней многого недоставало. К Вилле стали присоединяться разработчики. В начале 2002 года был портирован ассемблер FASM, и стало возможным компилировать ядро и программы прямо в MenuetOS,
Осенью 2004 года Иван Поддубный выпустил 3 беты дистрибутива RE#8, которые включили в себя новую подсистему отрисовки GUI и плеер wav-файлов для материнских плат со встроенным звуком. В это время Майк Хиббет оказался слишком занят на работе и вернул руководство Вилле в конце декабря.
Весной 2005 года Иван Поддубный выложил ядро, размер которого был уменьшен на 20% по сравнению с официальным при большей функциональности. Это ядро легло в основу дистрибутивов Kolibri 3 и Kolibri 3 SE, представивших улучшенный интерфейс пользователя (минимизацию окон и модифицированная панель задач), расширение набоREра системных функций и поддержку формата rtf.
В это время встал вопрос о лидере проекта. Вилле был занят развитием Menuet64 и не мог выпускать дистрибутивы, поэтому он предложил Ярослава Пельчара на роль лидера. После споров по ряду вопросов (почему Си-программист становится лидером ОС на ассемблере, почему разработчики из русскоязычного сообщества не могут претендовать на роль лидера) он был утвержден форумом. Все возлагали на него большие надежды после выпущенного им релиза 0.79pre1 и проведенного конкурса по написанию новых игр. Но он перешел в сообщество операционной системы Syllable через несколько месяцев.
Выпущенный в июне дистрибутив Kolibri 4 принес автоматическое определение мыши и дисков/разделов ЖД, а также новый загрузочный экран, позволяющий выбирать частоту вертикальной развертки монитора.
В июне 2005 года вышла Menuet64 0.01 и Вилле дал понять, что развитие этой ОС должно быть основной целью не только для него, но и для всего сообщества (хотя в то время 64-битных компьютеров ни у кого кроме него не было). Исходные тексты Menuet64 были закрыты, поэтому ведущих программистов сообщества Menuet32 она не привлекла. Была продолжена работа над дистрибутивом Kolibri. Развитие Kolibri раздражало Вилле, и он поругался с нашей командой, что привело к разрыву отношений.
Выход очередной версии Kolibri в октябре 2005 года стал знаковым: поддержка FAT12 и менеджмент памяти, улучшенный драйвер RAM-диска и новая семантика обращения к жестким дискам. Различие между ядром Kolibri и MenuetOS достигло 50% – признак того, что родилась новая операционная система! Эта версия получила название KolibriOS 0.50 в знак сохранения преемственности от дистрибутива Kolibri.
Изменения в версиях 0.52 и 0.53 касались улучшения загрузочного экрана, вывода шрифтов на экран, обработки мыши, графического интерфейса ОС. Появилась поддержка MIDI-файлов. В версии 0.58 (скрин) были серьезные изменения в работе с 0.5.8.0жесткими дисками (в том числе поддержка длинных имен файлов), появилась поддержка файловой системы CDFS и стандарта управления питанием APM. В версию 0.60 были включены улучшения работы в некоторых графических режимах, в работе с мышью и жесткими дисками, в ней также появилась поддержка вывода ASCIIZ-строк. Выход KolibriOS 0.63 был связан с внедрением поддержки внешних драйверов и динамических библиотек, поддержкой DMA для жестких дисков и формата музыкальных файлов mp3. В последний на текущий момент релиз 0.65 включена поддержка файловой системы NTFS (только чтение и запуск программ), нестандартных курсоров мыши и изменения в нескольких десятках программ.

Кто ее разрабатывает?
В настоящий момент KolibriOS развивается благодаря усилиям трех десятков человек, среди которых есть представители Белоруссии, Бельгии, Германии, Казахстана, Молдавии, России, Узбекистана, Украины, Эстонии и ряда других стран. Примерно треть из нашей команды разработчиков участвовала в разработке оригинальной MenuetOS. С версии 0.60 сборкой дистрибутива занимается Евгений «Diamond» Гречников. В июле 2006 года был открыт сайт http://kolibrios.org (администратор сайта – Михаил «mike.dld» Семеняко). Форум для русскоязычных пользователей находится на http://board.kolibrios.org.

Как ее установить?

Для установки подойдет любой компьютер класса Pentium, 16 Мб ОЗУ и видеокарта с поддержкой VESA. Для работы ОС ее образ должен быть загружен в память (в так называемый RAM-диск). Запакованный в архив образ формата img вместе с документацией можно скачать на сайте http://kolibrios.org. Пользователям Windows может понадобиться программа WinImage для управления файлами внутри образа (например, обновления ядра и добавления новых программ) – ее можно скачать на http://winimage.com. Существует множество вариантов загрузки: с винчестера (FAT- или NTFS-раздел), с дискеты, с компакт-диска, с flash-накопителя. Подробности настройки загрузочных устройств изложены в документации к ОС (файл install.txt). Также можно запускать KolibriOS в виртуальных машинах типа Bochs, Qemu, VMware.
Во время загрузки появится синий экран, где указываются некоторые настройки типа разрешения экрана. Измените значения параметров (если настройки по умолчанию не устраивают) и продолжайте загрузку. После загрузки появится рабочий стол. Для быстрого доступа к настройкам интерфейса можно использовать контекстное меню, появляющееся по щелчку правой кнопкой мыши на рабочем столе. Для настройки устройств раскрывайте главное меню: «Меню -> Система -> Настройка -> Настройка устройств». Можно просто щелкнуть курсором по букве S на панели задач для вызова программы «Настройка устройств» (Setup). Настройка устройств заключается в конфигурации некоторых параметров работы, касающихся звуковой карты, раскладки клавиатуры и т.п.
Для работы в KolibriOS важно знать, как выглядят пути к файлам. Путь к файлу b.bmp на первом разделе первого по индексу жесткого диска выглядит так: /hd0/1/b.bmp, на компакт-диске – /cd1/1/b.bmp, на дискете – /fd/1/b.bmp, а на RAM-диске – /rd/1/b.bmp.

Что она предлагает пользователю и программисту?
Для KolibriOS разработано более 250 программ. Конечно, это немного в сравнении с ОС, разработка которых началась еще в 80-90-х годах (Windows, Linux, BeOS, *BSD), но отсутствие программ как раз привлекает разработчиков, выступая в качестве хорошей возможности опробовать свои силы. Благодаря портированному DOSBox возможно запускать еще тысячи программ, написанных для DOS.
Офисных программ немного, но текстовый редактор 0.7.1.0TINYPAD является довольно продвинутым (многодокументный интерфейс, смена кодировки, подсветка синтаксиса, нумерация строк, компиляция исходных текстов прямо из редактора) в сравнении с аналогами из любых других ОС. Также есть возможность просмотра файлов формата rtf в программе RTFREAD. Естественно, есть календарь, калькулятор и англо-русский словарь. Можно просматривать архивы в форматах zip, tar.gz.
Для любителей мультимедийных развлечений есть возможность просмотра графических файлов форматов bmp, gif, jpeg, png и 3ds, прослушивания музыкальных файлов форматов mid, mp3, wav и обычных аудиодисков. Редактор графики ANIMAGE позволяет создавать и редактировать рисунки. KolibriOS оснащена отличным скринсейвером.
По непонятной причине для MenuetOS и KolibriOS больше всего разрабатывалось файловых менеджеров (не менее 7 программ). Сейчас наиболее часто обновляются менеджеры KFAR (аналог FAR) и KFM (аналог Total Commander). В скором времени KFAR будет поддерживать распаковку архивов в форматах zip и 7z.
Есть несколько десятков игр («Тетрис», «Арканоид», «15», «Сапер», «Шашки», «Сокобан» и др.), в том числе портированные версии Doom и Quake. Многие игры можно запускать в портированных DOSBox и ScummVM.
Существует несколько программ для идентификации, мониторинга состояния, тестирования компьютерного железа (процессора, материнской платы и других устройств).
Хотя сетевой стек пока еще дорабатывается (ведутся работы над поддержкой обработки прерываний от сетевых карт), но сетевых программ уже написано несколько десятков.
Есть даже две научные программы – таблица Менделеева и программа для мессбауэровской спектроскопии.
Разработчик может писать библиотеки, драйверы и программы не только на ассемблере, но и на языках высокого уровня типа С++, С, C--, Modula, Паскаль, Форт. Инструкции по использованию некотоpых компиляторов языков высокого уровня есть в этой статье. Есть компрессоры исполняемых файлов, hex-редакторы и средства отладки. Есть эмуляторы для запуска программ Kolibri/Menuet32 в Windows, что ускоряет процесс разработки.

Каково ее будущее?
Летом 2007 года было переписано ядро на использование плоской модели памяти с целью ускорения работы и стабильности приложений. Это изменение привело к невозможности запускать программы Menuet32 в KolibriOS, но мы мало что потеряли, поскольку Menuet32 практически не развивается.
Уже положено начало единой библиотеке элементов графического интерфейса, что ускорит разработку новых программ и их функциональность. В планах разработчиков: поддержка шрифтов TrueType; улучшение мультимедийных, офисных и сетевых программ; портирование компилятора языка Cи (уже есть наработки по Tiny C Compiler и Open Watcom); расширение функциональности в работе с файловыми системами; создание системного буфера обмена; поддержка USB и SMP.

Заключение
Несомненными преимуществами KolibriOS перед многими другими операционными системами на дискете являются: большое количество программ, возможности обращения к внешним дисковым накопителям и сохранения результатов работы, высокое быстродействие, настраиваемый и приятный интерфейс, открытость исходных текстов.
Ее можно рекомендовать программистам, желающим попробовать свои силы в создании ОС или изучении ассемблера. Наличие эмулятора DOS и набор интересных игр могут привлечь внимание детей, обучающихся использованию компьютера. Вместе с тем она достаточно функциональна и может использоваться для замены Windows в ряде задач. Одна из американских компаний уже несколько лет использует MenuetOS и KolibriOS на своих компьютерах.
Поскольку KolibriOS разрабатывается в основном разработчиками из СНГ и распространяется бесплатно, то проблем с ознакомлением с ОС и установлением контактов c сообществом у заинтересовавшихся не будет.

Сергей Кузьмин с небольшими исправлениями