WebView или история о том, как в KolibriOS браузер писался. Полет «Колибри». На что способна ОС, целиком написанная на ассемблере

KolibriOS является форком MenuetOS и не имеет связи ни с семейством UNIX, ни со стандартом POSIX. Система написана на свободно распространяемом многопроходном ассемблере fasm. Этот факт обеспечивает миниатюрность, высокую скорость и низкие требования к оборудованию. Загрузочный LiveCD занимает около 7-ми мегабайт, а основные компоненты способны уместиться и на дискете (1,44 МБ).

Но малый вес вовсе не означает отсутствие функционала. Здесь реализован пользовательский интерфейс на основе VESA, присутствует набор драйверов, браузер, текстовый процессор, графический редактор и просмотрщик, средства разработки, простенькие игры и множество других программ. Из файловых систем полностью поддерживаются FAT12, FAT16, FAT32, а частично (только чтение) - NTFS, ISO9660, Ext2, Ext3, Ext4.

Системные требования

  • CPU: Intel Pentium / AMD 5x86 / Cyrix 5x86 без MMX с частотой 100 MHz
  • RAM: 8 Mb
  • Видеокарта: поддерживающая VGA (режим 640*480*16) или Vesa
  • Клавиатура: AT
  • Мышь: COM или PS/2

Поддерживаемые загрузочные устройства

  • Floppy 3.5
  • IDE HDD LBA
  • CD/DVD
  • USB Flash

Из языков доступны английский, русский, итальянский и испанский.

Установка

  • На дискету:
  1. Скачиваем универсальный образ
  2. Записываем образ
  • из-под Linux:
    • dd if=kolibri.img of=/dev/fd0

  • из-под Windows:
    • rawrite2 -f kolibri.img -d A

  • На жёсткий диск (с использованием GRUB или GRUB2):
    1. Скачиваем универсальный образ
    2. Распаковываем его в папку kolibri в корне диска
    3. Настраиваем загрузчик
    • GRUB. В menu.lst добавляем строки:
      • label KolibriOS
        root (hd0,0 )
        kernel /kolibri/HD_Load/memdisk
        initrd /kolibri/kolibri.img

    • GRUB2. В grub.cfg добавляем строки:
      • title KolibriOS
        search --no-floppy --fs-uuid --set=root UUID
        linux16 /kolibri/HD_Load/memdisk
        initrd16 /kolibri/kolibri.img

  • На USB-флешку:
    1. Скачиваем универсальный образ
    2. Распаковываем его в любую папку
    3. Устанавливаем загрузчик
    • из-под Windows:
      • Запускаем файл HD_Load\USB_Boot\inst.exe
      • Копируем kolibri.img в корень флешки
    • из-под Linux:
      • Устанавливаем GRUB2 на флеш-карту: grub-install /dev/sdb
      • Последующие действия аналогичны установке на жёсткий диск
  • На CD-диск:
    1. Скачиваем Загрузочный LiveCD
    2. Записываем его на носитель
    На самом деле существует множество способов установки системы на жёсткий диск или флешку. Я указал лишь самые популярные и ориентированные на то, что уже имеется любой другой Linux-дистрибутив.

    И да, чуть не забыл: (hd0,0), UUID и /dev/sdb являются переменными. Поэтому Вам следует заменить эти значения на свои. Вот как их узнать:
    (hd0,0) . Первое число - номер винчестера. Второе число - номер раздела на искомом винчестере. Счёт ведётся с 0.
    UUID . Идентификатор для нужного раздела. Получить его можно командой ls -l /dev/disk/by-uuid в терминале любой Linux системы.
    /dev/sdb . Файл устройства в linux. Узнать его можно как из файлового менеджера, так и из консоли или утилиты разметки дисков. Имеет вид /dev/sdX для SATA-устройств и /dev/hdX для дисков, подключённых к IDE.

    Надеюсь, что с установкой Вы успешно разобрались.
    Если у Вас возникли какие-либо вопросы/проблемы, то задавайте их в комментариях.

    А сейчас пришло время осмотреться в KolibriOS.

    Скриншоты

    Примечание: нажмите на изображение для его увеличения


    Старт загрузки KolibriOS


    Выбор видеорежима из списка поддерживаемых






    Содержимое меню "Игры" > "Логические"


    Содержимое меню "Игры" > "Аркады"


    Содержимое меню "Демки" > "Трехмерные" (демонстрация возможностей графической системы)


    Содержимое меню "Графика"



    Содержимое меню "Разработка" > "Примеры"


    Содержимое меню "Система" > "Настройка"


    Содержимое меню "Система" > "Системные сенсоры"



    Содержимое меню "Система" > "Тестирование"


    Содержимое меню "Система" > "Спец. возможности"


    Содержимое меню "Обработка данных"


    Содержимое меню "Сеть" > "Серверы"



    Содержимое меню "Разное"





    Судоку, сапёр, шашки




    Системный монитор. Открывается нажатием на нечто красно е в трее



    Окно завершения работы

    Особый интерес вызывает интерфейс системы. Ведь её размер крайне мал и может возникнуть мысль, что интерфейс убог. Но это не совсем так. Здесь нужно рассматривать такие критерии как внешний вид и функциональность. Внешний вид порадовал: он воспринимается наравне с оконными менеджерами в Linux системах.

    Итоги

    Мне KolibriOS понравилась. Да, мало кто станет использовать её в качестве основной операционной системы. Но для меня она стала символом упорства, веры в свои силы и успех. Вот уже 9 лет ведётся разработка колибри на ассемблере fasm. Сделано уже многое, но проект продолжает жить и развиваться. Недавно, например, появилась поддержка USB. И каждый день(!) выходят ночные сборки, реализующие новые функции.
    Одним из самых главных недостатков является отсутствие привычных программ. А это не есть хорошо. Но зато можно

    Пожалуй каждый, кто интересуется KolibriOS, знает, что единственным способом выйти в глобальную сеть был и есть и посей день текстовый браузер написанный одним из наших разработчиков практически с нуля. Этот браузер пожалуй является одной из «достопримечательностей» ОС, и потому было решено поведать его историю: как он появился, развивался, и каковы планы на ближайшее будущее. Кому интересно, добро пожаловать под кат.

    Пост создавался в тесном сотрудничестве с автором программы Leency , и потому повествование идет от его лица.

    Не будь я таким наивным дураком, никогда бы не взялся писать браузер! Ещё diamond (@grechnik), умудренный опытом программист, говорил, что в жизни бы не решился на такую авантюру. Но я был молод и чувствовал, что на пороге великих открытий. Это неописуемое ощущение, как будто весь мир лежит у моих ног - стоит лишь протянуть руку и он весь твой. Потому первой программой, которую я решил написать был файловый менеджер аля Проводник Windows, а второй - браузер. Так сказать, “Hello World” занятие для слабаков, крутые программеры начинают с браузеров.

    Всё это несчастье началось тёплым июльским днём 2008 года, через полгода после того, как Костя Veliant сбросил мне исходники просмотрщика HTML, возможности которого, за исключением отсутствия поддержки сети, практически ровнялись текущему на тот момент браузеру Колибри HTTPC.

    Программа эта называлась просто «HTML Viewer in C--». Я начал с того, что адаптировал код программы под новую версию библиотеки (menuet.h-- → kolibri.h--), улучшил дизайн, добавил поддержку клавиш управления, скролл колёсиком. Из минусов - текст выводился в окно по одной букве:)

    Ниже скриншот первой версии 0.00001, вышедшей 20 июня 2008 года.

    Уже через 2 дня последовало обновление до версии 0.1 в списке изменений которой было:

    • более или менее полная поддержка тегов: b, strong, i, u, s, br, pre, title, li, p;
    • поддержка вложенных тегов;
    • полоса адреса (EditBox) от Lrz ;

    В версии 0.2 текст стал выводиться не побуквенно, а строчками, добавлено схлопывание двух и больше идущих подряд пробелов в один.

    Последующее развитие программы шло эволюционным путём: улучшалась поддержка тегов, заработала кнопка «Назад», появилась поддержка относительных путей, нескольких параметров тега, многоуровневых списков и некоторых других фич.

    Кстати, замечу, что всё это время программа была не браузером, а лишь отображала HTML страницы, отсюда и название HTMLv (HTML Viewer). Переломный момент случился в версии 0.48.5 за что спасибо barsuk "у:

    «Я взял HTTPC, отрезал отображение html и прикрутил динамическое выделение памяти под веб-страницу. Если эту штуку объединить с HTMLv, получится браузер.»

    Что и было сделано. Обрезанный HTTPC нарекли загрузчиком файлов и переименовали в downloader. А вот первые скриншоты страничек, загруженных браузером через downloader:

    Связка «HTMLv+downloader» работала адски стрёмно: если адрес страницы начинается с "http://", то HTMLv запускал downloader с параметром адреса страницы. Downloader скачивал файл, HTMLv смиренно ждал. Когда downloader заканчивал, то сохранял страницу в "/sys/.download" и закрывался. HTMLv палил этот момент и открывал сохранённую страницу.

    Да, это дико костыльно, но это работало! Это был первый реальный способ выйти в Интернеты с Колибри и с трудом прочитать там что-то. Это может показаться смешным, но это был важный психологический момент - теперь в Колибри есть окно в открытый мир.

    Кстати, о хаках… Кто знаком с Колибри, отлично знает, что в ней всегда существовала проблема со шрифтами: их системных всего два: моноширинный и… немоноширинный. В 90% используется моноширинный и размер буквы в нём равен 6х9 пикселей. Никакого полужирного и курсивного начертания. Но оно есть в браузере! Жирный шрифт - это две строки текста, наложенные друг на друга со смещением в один пиксель по оси Х. С курсивным всё несколько интереснее. Первая версия была реализована lev"ом в версии 0.63: вначале в окно выводился обычный текст, потом экран скринился в память и потом выводился заново в окно со смещением |||| → //////

    Новики последующих версий касались добавления меню ПКМ, поддержки якорей, системы кэширования изображений.

    Вот скрин тестовой страницы acid_0.1.html, которая долго использовалась для проверки браузера.

    Но чем дальше, тем больше складывалось впечатление, что я иду не по тому пути…

    С этим нужно было что-то делать. Помните начало статьи? «Потому первой программой, которую я решил написать был файловый менеджер аля Проводник Windows, а второй - браузер. Так вот, код Eolite был переписан эволюционным путём: шаг за шагом, кусочек за кусочком и со временем стал логичен, читабелен и прост. Код HTMLv же, по прежнему оставался неструктурированным и его сложно было модифицировать и поддерживать, а добавление новой фичи неизбежно приводило к множеству проблем. С горестью осознав этот момент, я взялся приводить его в порядок. Первой ласточкой в этом не легком деле стал HTMLv 0.99.

    В HTMLv 0.99 было реализовано рисование в буфер. Т.е. раньше строка текста выводилась следующим образом: в окно рисуется прямоугольник фонового цвета, поверх выводится текст. Теперь же в памяти создавался „рисунок“, заливался фоновым цветом, в него рисовался текст и линии и в конце концов в окно выводился этот самый готовый рисунок. Это увеличило скорость и даст новые возможности в перспективе.

    Версия 0.99.1 обрела поддержку тегов и, а также align=»center" и align=«right»

    В версии 0.99.31 случилось знаковое событие:
    С этой версии компонент WebView, отображающий содержимое страницы в HTMLv, вынесен в отдельный модуль и может быть скомпилирован в составе другого проекта на С--. Делалось это для отображения содержимого письма в почтовом клиенте Liza и с целью улучшения структуры кода.

    Начиная с версии 1.0 beta 1 программа была переименована в WebView. Сделано это было не зря, ведь программа за последние пару версий заметно подросла. В этой же версии по мимо нового имени программа получила:

    • нативную поддержку работы с сетью посредством HTTPlib написанной

    KolibriOS – это ответвление (fork) некогда очень популярной в России 32-битной операционной системы MenuetOS. MenuetOS была искусственно разведена на две ветки: открытую для 32-битных процессоров и закрытую для 64-битных. Этого искусственного разделения нет в KolibriOS, которая работает и на 32- и 64-битных процессорах. KolibriOS распространяется абсолютно свободно, согласно лицензии GPL, как и Menuet32.

    Даже в кратком описании истории KolibriOS нельзя не упомянуть предшествовавшие ее появлению события, тем более что они довольно интересны.

    Начало

    Во второй половине 1990-х годов финский студент Вилле Турьянмаа писал графическую оболочку для DOS. Ему хотелось, чтобы его программы на Паскале выполнялись в многозадачном защищенном режиме и имели оконный графический интерфейс. Оболочка называлась MultiRun Program for IBM-PC. Программа обрастала возможностями и со временем превратилась в самодостаточную операционную систему (DOS уже не требовался), которая запускалась с дискеты. Называлась эта операционная система 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. Операционная система с графическим интерфейсом, написанная на ассемблере и влезающая на дискету, – подобного мир не видел со времен PC/GEOS начала 1990-х годов. Люди загружали эту ОС, разносили весть о ней по форумам, создавали посвященные ей сайты. Отметим, что российские сайты были сделаны буквально через неделю после интервью. События 11 сентября 2001 года отвлекли внимание от MenuetOS, но развитие продолжалось.

    MenuetOS была еще сырым проектом, и в ней многого недоставало. К Вилле стали присоединяться разработчики. В начале 2002 года был портирован ассемблер FASM, и стало возможным компилировать ядро и программы прямо в MenuetOS.

    MenuetOS RE

    Осенью 2004 года Иван Поддубный выпустил 3 беты дистрибутива RE#8 (Russian Edition), которые включили в себя новую подсистему отрисовки GUI и плеер wav-файлов для материнских плат со встроенным звуком. В это время Майк Хиббет оказался слишком занят на работе и вернул руководство Вилле в конце декабря.

    Весной 2005 года Иван Поддубный выложил ядро, размер которого был уменьшен на 20% по сравнению с официальным при большей функциональности. Это ядро легло в основу дистрибутивов Kolibri 3 и Kolibri 3 SE, представивших улучшенный интерфейс пользователя (минимизацию окон и модифицированная панель задач), расширение набора системных функций и поддержку формата rtf.

    В это время встал вопрос о лидере проекта. Вилле был занят развитием Menuet64 и не мог выпускать дистрибутивы, поэтому он предложил Ярослава Пельчара на роль лидера. После споров по ряду вопросов (почему Си-программист становится лидером ОС на ассемблере, почему разработчики из русскоязычного сообщества не могут претендовать на роль лидера) он был утвержден форумом. Все возлагали на него большие надежды после выпущенного им релиза 0.79pre1 и проведенного конкурса по написанию новых игр. Но он перешел в сообщество операционной системы Syllable через несколько месяцев.

    Выпущенный в июне дистрибутив Kolibri 4 принес автоматическое определение мыши и дисков/разделов ЖД, а также новый загрузочный экран, позволяющий выбирать частоту вертикальной развертки монитора.

    В июне 2005 года вышла Menuet64 0.01 и Вилле дал понять, что развитие этой ОС должно быть основной целью не только для него, но и для всего сообщества (хотя в то время 64-битных компьютеров ни у кого кроме него не было). Исходные тексты Menuet64 были закрыты, поэтому ведущих программистов сообщества Menuet32 она не привлекла. Была продолжена работа над дистрибутивом Kolibri. Развитие Kolibri раздражало Вилле, и он поругался с нашей командой, что привело к разрыву отношений.

    KolibriOS

    Выход очередной версии Kolibri в октябре 2005 года стал знаковым (объявление на сайте того времени): поддержка FAT12 и менеджмент памяти, улучшенный драйвер RAM-диска и новая семантика обращения к жестким дискам. Различие между ядром Kolibri и MenuetOS достигло 50% – признак того, что родилась новая операционная система! Эта версия получила название KolibriOS 0.50 в знак сохранения преемственности от дистрибутива Kolibri.

    Изменения в версиях 0.52 и 0.53 касались улучшения загрузочного экрана, вывода шрифтов на экран, обработки мыши, графического интерфейса ОС. Появилась поддержка MIDI-файлов. В версии 0.58 были серьезные изменения в работе с жесткими дисками (в том числе поддержка длинных имен файлов), появилась поддержка файловой системы CDFS и стандарта управления питанием APM. В версию 0.60 были включены улучшения работы в некоторых графических режимах, в работе с мышью и жесткими дисками, в ней также появилась поддержка вывода ASCIIZ-строк. Выход KolibriOS 0.63 был связан с внедрением поддержки внешних драйверов и динамических библиотек, поддержкой DMA для жестких дисков и формата музыкальных файлов mp3. В релиз 0.65 включена поддержка файловой системы NTFS (только чтение и запуск программ), нестандартных курсоров мыши и изменения в нескольких десятках программ.

    Летом 2007 года было переписано ядро на использование плоской модели памяти с целью ускорения работы и стабильности приложений. Это изменение привело к невозможности запускать программы Menuet32 в KolibriOS, но мы мало что потеряли, поскольку Menuet32 практически не развивается.

    Уже положено начало единой библиотеке элементов графического интерфейса, что ускорит разработку новых программ и их функциональность. В планах разработчиков: поддержка нормальных шрифтов; улучшение мультимедийных, офисных и сетевых программ; портирование компилятора языка Cи (уже есть наработки по Tiny C Compiler и Open Watcom); расширение функциональности в работе с файловыми системами; создание системного буфера обмена; поддержка USB.

    Кто ее разрабатывает?

    В настоящий момент KolibriOS развивается благодаря усилиям трех десятков человек, среди которых есть представители Белоруссии, Бельгии, Германии, Казахстана, Молдавии, России, Узбекистана, Украины, Эстонии и ряда других стран. Некоторые участники нашей команды разработчиков в своё время участвовали в разработке оригинальной MenuetOS. До версии 0.58.1 сборкой дистрибутивов занимался Марат «Mario79» Закиянов, а начиная с версии 0.60 - Евгений «Diamond» Гречников. В июле 2006 года был открыт официальный сайт . Чуть позже форум, SVN-сервер, wiki и блог.

    Что она предлагает пользователю и программисту?

    Для KolibriOS разработано более 250 программ. Конечно, это немного в сравнении с ОС, разработка которых началась еще в 80-90-х годах (Windows, Linux, BeOS, *BSD), но отсутствие программ как раз привлекает разработчиков, выступая в качестве хорошей возможности опробовать свои силы. Благодаря портированому DOSBox возможно запускать еще тысячи программ, написанных для DOS.
    Офисных программ немного, но текстовый редактор TINYPAD является довольно продвинутым (многодокументный интерфейс, смена кодировки, подсветка синтаксиса, нумерация строк, компиляция исходных текстов прямо из редактора) в сравнении с аналогами из любых других ОС. Также есть возможность просмотра файлов формата rtf в программе RTFREAD. Присутствует редактор таблиц TABLE с поддержкой формул, программа для построения графиков. Естественно, есть календарь, калькулятор и англо-русский словарь. Можно просматривать архивы в форматах 7z, zip.

    Для любителей мультимедийных развлечений есть возможность просмотра графических файлов форматов bmp, gif, jpeg, png, tga, pcx, ico, cur и 3ds, прослушивания музыкальных файлов форматов mid, mp3, wav, xm и обычных аудиодисков. Редактор графики ANIMAGE позволяет создавать и редактировать рисунки. KolibriOS оснащена отличным скринсейвером, честно. :)

    По непонятной причине для MenuetOS и KolibriOS больше всего разрабатывалось файловых менеджеров (не менее 7). Сейчас наиболее часто обновляются менеджеры Eolite и KFAR (аналог FAR). Есть ещё KFM (аналог Total Commander), который больше не обновляется, однако, согласно последний заявлениям, автор немного разгребётся с остальными делами и примется за KFM. Что не может не радовать.

    Огромное количество небольших игр написано под KolibriOS: «КФара», «Косилка», всем знакомые и любимые «Тетрис», «Арканоид», «15», «Сапер», «Шашки», «Clicks» и другие, портированы такие игры, как Doom и Quake. Многие игры можно запускать в эмуляторах: XFCE (для Денди), DOSBox и ScummVM.

    Существует несколько программ для идентификации, мониторинга состояния, тестирования компьютерного железа (процессора, материнской платы и других устройств).

    Хотя сетевой стек пока еще дорабатывается, но сетевые программы уже есть.

    Есть даже две научные программы – таблица Менделеева и программа для мессбауэровской спектроскопии.

    Основной язык разработки FASM, выбор пал на него потому, что он является единственным активно развивающимся ассемблером, причём очень мощным и бесплатным. Но разработчик может писать библиотеки, драйверы и программы не только на ассемблере, но и на языках высокого уровня типа С++, С, C--, FreePascal, Форт и других. Инструкции по использованию многих компиляторов есть в этой статье . Есть компрессоры исполняемых файлов, hex-редакторы и средства отладки. Для ускорения разработки, есть эмулятор KbrInWin для запуска программ KolibriOS в Windows.

    Заключение

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

    Ее можно рекомендовать программистам, желающим попробовать свои силы в создании ОС или изучении ассемблера. В случае, если Windows перестанет загружаться KolibriOS поможет скопировать важные данные с разделов NTFS (EXT 2/3 или FAT) на другой раздел, притом что время загрузки у неё 5 секунд, а скорость копирования на 6-8% выше, чем в Windows. Наличие эмулятора Денди и DOS плюс набор интересных игр могут привлечь внимание детей, обучающихся использованию компьютера. Вместе с тем она достаточно функциональна и может использоваться для замены Windows в ряде задач. Одна из американских компаний уже несколько лет использует MenuetOS и KolibriOS на своих компьютерах, в России же KolibriOS используется на производстве .

    Израильская компания "Green Gadgets Ltd " планировала продавать ультрадешёвые компьютеры с Колибри на борту (подробнее в этой теме). Часть разработчиков получила гаджеты компании для адаптации системы под них, написания драйверов. Однако спустя год компания развалилась и Колибри полетела дальше...

    Есть даже крайне амбициозный проект встроить Колибри в BIOS материнских плат архитектуры AMD/HT. Подробнее об этом на вики и в этой теме . Первая версия этого проекта KolibriA уже закрыта, но дала автору ценные знания и уникальный опыт, без которых ему никогда не удалось бы получить хорошую работу в известной фирме, специализирующейся на разработке систем технического зрения. Не так давно он приступил к новому витку проекта KolibriB со свежими силами и накопленными знаниями.


    Поскольку KolibriOS разрабатывается в основном разработчиками из СНГ и распространяется бесплатно, то проблем с ознакомлением с ОС и установлением контактов c сообществом у заинтересовавшихся не будет. Пробуйте, исследуйте и заходите к нам на форум.

    Архив Интерактив

    KolibriOS умещается на дискету и загружается за несколько секунд. Для неё есть около 200 приложений, и разработчики видят несколько удачных применений своей системе.

    Мысль написать операционную систему целиком на ассемблере странна, но привлекательна. Её главные плюсы - исключительная производительность и малый объём исполняемого кода. Минусы тоже очевидны - сложность и жёсткая привязка к архитектуре компьютера. Тем не менее смельчаки всё же находятся.

    Самый известный проект такого рода - это MenuetOS и её ответвление KolibriOS , разрабатываемое по большей части в России. История этих операционных систем не лишена интриг и разногласий, и на то есть причины: во-первых, проект свободный (лицензия - GNU GPL второй версии), то есть его участники трудятся не за прибыль, а за идею. Во-вторых, такие решения, как выбор процессорной архитектуры, в силу особенностей проекта имеют драматический характер. Группа разработчиков, решившая сменить платформу, обречена на практически полную переработку исходного кода.

    По сравнению с другими операционными системами MenuetOS совсем молода. Она разрабатывается с 2000 года и успела стать известной в программистских кругах ( , к примеру, статью "Мал золотник, да дорог", написанную Яковом Уваровым для "Компьютерры" в 2005 году). KolibriOS ещё моложе - она отпочковалась от Menuet в 2004 году.

    За это время разработчики успели написать около 7,5 Мбайт кода на чистом ассемблере. Примерно такой же размер имеют исходники Linux, написанные преимущественно на Си, и это только ядро, тогда как в дистрибутив KolibriOS входит графическая оболочка и небольшой набор прикладных программ (смеха ради отметим, что, по оценкам , основанным на знаменитой "утечке" 2004 года, код Microsoft Windows 2000 занимал около 1,5 Гбайт).

    При этом "Колибри" - уже давно не "подтверждение концепции" и не игрушка, а вполне функциональная система, для которой пишут программы и которую действительно можно использовать для некоторого (пусть и не особенно широкого) круга серьёзных задач.

    "Компьютерра" побеседовала с двумя разработчиками KolibriOS - Дмитрием Переверзевым и Игорем Солодухой.

    - Что такое KolibriOS?

    Переверзев: "Колибри" - это маленькая операционная система с богатыми возможностями. Можно сказать, это такой современный DOS.

    - Как я понял, не просто маленькая, а вообще крошечная?

    Переверзев: Ядро занимает около 80 Кб. То есть сопоставимо с размером MS-DOS последних версий. А возможностей гораздо больше.

    - Какова история "Колибри"?

    Переверзев: В 2001 году финский студент Вилле Турьянмаа написал свою операционную систему на ассемблере. В 2004 году он решил, что тридцатидвухбитные компьютеры погибли, и перешёл на разработку MenuetOS 64 шестидесятичетырёхразрядной версии своей операционной системы. Сообществу это не понравилось, и оно продолжило разработку тридцатидвухбитной версии своими силами. И когда более половины кода было изменено, проект получил название "Колибри" в честь одной из русских сборок систем.

    - И кто этим занимался? Вы тогда уже тогда участвовали?

    Переверзев: Я пришёл в проект позже где-то на год. Тогда этим занимался Марат Закиянов. Собирал дистрибутивы системы.

    - Сейчас он тоже в команде?

    Переверзев: Да, сейчас он в команде, разрабатывает ядро, файловый менеджер (свой клон Total Commander), файловые диалоги и просмотрщик графики - замечательный zSea.

    - Каков сейчас статус разработки?

    Переверзев: Cейчас мы ожидаем выхода новой версии, но с номером ещё не определились. Прошлая была 0.7.7.0, а эта будет не то 0.8, не то 0.9. Считается, что по сравнению с прошлой версией изменений очень много. Например, появится поддержка устройств USB. Около года прошло со времени последнего релиза.

    - Какая вообще у вас команда? Сколько человек активно помогают?

    Переверзев: Сейчас около десяти очень активных разработчиков и около тридцати разработчиков, которые время от времени появляются на форуме.

    - А география какая? Разработчики в основном из России?

    Переверзев: В основном СНГ, хотя есть и из Бельгии разработчики, русскоязычные из Англии. Я сам из Ставропольского края.

    Какие у "Колибри" особенности по сравнению с другими системами, в том числе по сравнению с другими минималистичными системами?

    Переверзев: По сравнению с другими минималистичными системами "Колибри" самая минималистичная! К тому же из систем той же весовой категории "Колибри" самая функциональная. Например, есть неплохая система, Visopsys, она тоже компактная и умещается на дискету, но ничего не умеет.

    Какие главные отличия "Колибри" от "больших" операционных систем? Чего пока нет, и что из этого собираетесь добавить?

    Переверзев: Поддержка интернета очень важна в современном мире. TCP/IP и драйверы сетевых карт в "Колибри" уже есть. Сейчас мы работаем над браузером, все участники так или иначе что-то делают для его появления. Пока что есть только текстовый, с ограниченной поддержкой графики. Ему, конечно, ещё далеко до совершенства.

    Солодуха: Наличие браузера - это новые пользователи и популярность системы.

    Возможно, такая система вообще была бы популярна в качестве аналога Google ChromeOS - минимальная прослойка ОС плюс браузер. Как вы думаете?

    Переверзев: Вполне возможно, тем более что минимальная реализация Flash у нас уже есть. Не совсем полноценная, зато на ассемблере.

    - Какие ещё удачные применения вы видите?

    Переверзев: Встраиваемые системы, системы сбора информации и управления производством, тонкие клиенты. К тому же "Колибри" может быть неплохой ОС для устаревших компьютеров.

    Солодуха: Ещё системы, которые разрабатываются под своё "железо". Для них проектируют платы с нуля, для них сейчас пишется ветка "Колибри А".

    - Какие у Колибри плюсы, кроме легковесности и быстродействия?

    Солодуха: К примеру, "Колибри" можно загружать не только без диска, но и вообще без BIOS. Включаешь компьютер, и после теста оборудования сразу появляется "Колибри". В любом случае загрузка занимает три-четыре секунды после включения.

    - Какие архитектуры сейчас поддерживаются?

    Переверзев: Сейчас только процессоры x86, то есть начиная с 486 и до последних Core i7. Но только в тридцатидвухразрядном режиме.

    - Шестидесятичетырёхразрядная версия существует, или она так и погибла?

    Переверзев: MenuetOS 64 существует, но очень сильно отдалилась от своего предка.

    - Её другая команда разрабатывает?

    Переверзев: Её вообще разрабатывает один человек. Все тот же студент, но уже далеко не студент, наверное. У нас же сейчас есть эксперименты по запуску на многоядерных системах. Тридцатидвухбитное ядро системы запускается на тридцатидвухбитном ядре, а второе ядро процессора работает в шестидесятичетырёхбитном режиме. Вот так вот, по-хитрому.

    Солодуха: Да, аппаратно такое возможно.

    - У вас ведь ещё real-time-версия есть?

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

    Солодуха: И сейчас уже очень малое время отклика. У нас на форуме можно посмотреть на результаты теста одной и той же программы, работающей напрямую с оборудованием, в Windows XP и в "Колибри". В "Колибри" выходит гораздо быстрее. Сейчас для реализации настоящей "риалтаймовости" нужно обеспечить гарантированное время отклика.

    - Как у "Колибри" с поддержкой различных чипсетов (в том числе видео)?

    Переверзев: VESA поддерживают все современные видеокарты, а ещё у нас есть порт линуксового драйвера ATI, и он поддерживает даже последние видеокарты ATI. Он, конечно, тяжеловат - 100 с лишним килобайт занимает, но позволяет использовать любые видеорежимы и даже аппаратное ускорение. К тому же регулярно обновляется.

    - А из периферии что поддерживается?

    Переверзев: С периферией тоже неплохо - есть поддержка USB, то есть клавиатуры и мышки работают.

    - Что ещё планируется добавлять в обозримом будущем?

    Переверзев: Трудно сказать, тут всё зависит от личного времени разработчиков.

    Солодуха: Cейчас, например, на форуме появился человек, который вроде бы хотел реализовать Unicode, по крайней мере, поднимал такой вопрос.

    - А сейчас какая кодировка?

    Переверзев: Сейчас в системе де-факто 866, изменённая для поддержки русского, украинского, эстонского, латышского и ещё нескольких языков. Но в файловой системе используется Unicode, так что потихоньку переходим на него.

    - Кстати, какие файловые системы поддерживаются?

    Переверзев: FAT12, 16 и 32 - для записи и чтения, плюс ISO 9660 (это компакт-диски), и на чтение поддерживается NTFS, Ext2 и Ext3.

    - Как в "Колибри" реализована многозадачность?

    Переверзев: Можно создавать потоки, а вот процессов как таковых нет. Процесс - это множество потоков с общим адресом пространства.

    - А защищённая память?

    Солодуха: Есть стандартная для архитектуры x86 защита страниц.

    - Межпроцессорное взаимодействие как-то реализовано?

    Переверзев: Есть IPC и есть расшаренная память. То есть можно создать образ общей памяти и обмениваться данными между приложениями. Есть ещё общесистемный буфер обмена.

    - Вы упомянули, что для "Колибри" существует около двухсот программ...

    Переверзев: На самом деле их гораздо больше. Двести актуальных, которые хорошо работают.

    - Что это за программы?

    Переверзев: По статистике, больше всего игр - больше ста.

    - Какие игры?

    Солодуха: По большей части небольшие логические игры.

    - Портированные с каких других систем?

    Солодуха: Нет, это написанные для "Колибри".

    Переверзев: На самом деле, написать игру гораздо проще, чем сделать что-то серьёзное вроде текстового или графического редактора. Поэтому программисты часто пробуют свои силы на небольших играх.

    Солодуха: Есть аналоги игр с других систем - "сапёры", пасьянсы и так далее. Они написаны для "Колибри" с нуля. Но есть и полезные программы - несколько файловых менеджеров, включая клон Windows Explorer, клон Far Manager и Total Commander.

    - Из известных игр что-нибудь портировали?

    Переверзев: Есть Quake и Doom. Из эмуляторов есть DOSBox и эмулятор Nintendo. Кстати, в DOSBox можно запустить Windows 98 - я пробовал. Есть реализация языка Lua самой последней версии - 5.2. Есть рендер шрифтов Freetype и Mesa 3D - реализация библиотек OpenGL. Очень важная вещь: есть кодеки ffmpeg. Интересный факт: на несильной машине запускали двадцать-тридцать видеороликов одновременно, и загрузка процессора не превышала 50 процентов. В "Колибри" вообще оказалось довольно сложно загрузить процессор полностью.

    - На чём в основном пишут программы?

    Переверзев: На ассемблере.

    - На высокоуровневых языках вообще не пишут?

    Переверзев: Иногда пишут или портируют что-нибудь на Си или Паскале. Есть несколько программ на Lua.

    Солодуха: Я ещё могу вспомнить, что кто-то из ребят пишет на таком языке, как Sphinx C--.

    Переверзев: Кстати, это любопытный язык. Это такой Си, каким он мог бы когда-то быть. Когда-то давно Си был транслятором в ассемблер, а C-- им и остался, просто добавился синтаксический сахар в стиле языка Си. На нём написано много интересных программ.

    - Я слышал, была реализация Python.

    Солодуха: Есть tinypy, но программ на нём пока нет, и на нём не выйдет запустить произвольную программу на Python без изменений. Там нет некоторых важных особенностей языка - к примеру, генераторов и кортежей.

    - Виртуальные машины есть? Не было ли идей, к примеру, портировать Java?

    Переверзев: Сейчас ведутся разговоры о целесообразности этого. В принципе, технически это возможно. Вообще эталонную реализацию Sun я даже компилировал сам в "Колибри", но лицензия не позволяет её кому-нибудь показывать.

    - Есть ли какие-нибудь идеи о коммерческом применении "Колибри"?

    Солодуха: Мы сотрудничаем с израильской компанией Green Gadgets, которая выпускает компьютеры eBox и Edubook. Основной профиль компании - это маломощные гаджеты, которые могут работать даже от батареек. Например, eBox-3300, на котором мы показывали "Колибри", потребляет всего около 4,5 Ватт. У него нет ни жёсткого диска, ни вентиляторов, он совсем бесшумный.

    KolibriOS является форком MenuetOS и не имеет связи ни с семейством UNIX, ни со стандартом POSIX. Система написана на свободно распространяемом многопроходном ассемблере fasm. Этот факт обеспечивает миниатюрность, высокую скорость и низкие требования к оборудованию. Загрузочный LiveCD занимает около 7-ми мегабайт, а основные компоненты способны уместиться и на дискете (1,44 МБ).

    Но малый вес вовсе не означает отсутствие функционала. Здесь реализован пользовательский интерфейс на основе VESA, присутствует набор драйверов, браузер, текстовый процессор, графический редактор и просмотрщик, средства разработки, простенькие игры и множество других программ. Из файловых систем полностью поддерживаются FAT12, FAT16, FAT32, а частично (только чтение) - NTFS, ISO9660, Ext2, Ext3, Ext4.

    Системные требования

    • CPU: Intel Pentium / AMD 5x86 / Cyrix 5x86 без MMX с частотой 100 MHz
    • RAM: 8 Mb
    • Видеокарта: поддерживающая VGA (режим 640*480*16) или Vesa
    • Клавиатура: AT
    • Мышь: COM или PS/2

    Поддерживаемые загрузочные устройства

    • Floppy 3.5
    • IDE HDD LBA
    • CD/DVD
    • USB Flash

    Из языков доступны английский, русский, итальянский и испанский.

    Установка

    • На дискету:
    1. Скачиваем универсальный образ
    2. Записываем образ
    • из-под Linux:
      • dd if=kolibri.img of=/dev/fd0

    • из-под Windows:
      • rawrite2 -f kolibri.img -d A

  • На жёсткий диск (с использованием GRUB или GRUB2):
    1. Скачиваем универсальный образ
    2. Распаковываем его в папку kolibri в корне диска
    3. Настраиваем загрузчик
    • GRUB. В menu.lst добавляем строки:
      • label KolibriOS
        root (hd0,0 )
        kernel /kolibri/HD_Load/memdisk
        initrd /kolibri/kolibri.img

    • GRUB2. В grub.cfg добавляем строки:
      • title KolibriOS
        search --no-floppy --fs-uuid --set=root UUID
        linux16 /kolibri/HD_Load/memdisk
        initrd16 /kolibri/kolibri.img

  • На USB-флешку:
    1. Скачиваем универсальный образ
    2. Распаковываем его в любую папку
    3. Устанавливаем загрузчик
    • из-под Windows:
      • Запускаем файл HD_Load\USB_Boot\inst.exe
      • Копируем kolibri.img в корень флешки
    • из-под Linux:
      • Устанавливаем GRUB2 на флеш-карту: grub-install /dev/sdb
      • Последующие действия аналогичны установке на жёсткий диск
  • На CD-диск:
    1. Скачиваем Загрузочный LiveCD
    2. Записываем его на носитель
    На самом деле существует множество способов установки системы на жёсткий диск или флешку. Я указал лишь самые популярные и ориентированные на то, что уже имеется любой другой Linux-дистрибутив.

    И да, чуть не забыл: (hd0,0), UUID и /dev/sdb являются переменными. Поэтому Вам следует заменить эти значения на свои. Вот как их узнать:
    (hd0,0) . Первое число - номер винчестера. Второе число - номер раздела на искомом винчестере. Счёт ведётся с 0.
    UUID . Идентификатор для нужного раздела. Получить его можно командой ls -l /dev/disk/by-uuid в любой Linux системы.
    /dev/sdb . Файл устройства в linux. Узнать его можно как из файлового менеджера, так и из консоли или утилиты разметки дисков. Имеет вид /dev/sdX для SATA-устройств и /dev/hdX для дисков, подключённых к IDE.

    Надеюсь, что с установкой Вы успешно разобрались.
    Если у Вас возникли какие-либо вопросы/проблемы, то задавайте их в комментариях.

    А сейчас пришло время осмотреться в KolibriOS.

    Скриншоты

    Примечание: нажмите на изображение для его увеличения


    Старт загрузки KolibriOS


    Выбор видеорежима из списка поддерживаемых






    Содержимое меню "Игры" > "Логические"


    Содержимое меню "Игры" > "Аркады"


    Содержимое меню "Демки" > "Трехмерные" (демонстрация возможностей графической системы)


    Содержимое меню "Графика"



    Содержимое меню "Разработка" > "Примеры"


    Содержимое меню "Система" > "Настройка"


    Содержимое меню "Система" > "Системные сенсоры"



    Содержимое меню "Система" > "Тестирование"


    Содержимое меню "Система" > "Спец. возможности"


    Содержимое меню "Обработка данных"


    Содержимое меню "Сеть" > "Серверы"



    Содержимое меню "Разное"





    Судоку, сапёр, шашки




    Системный монитор. Открывается нажатием на нечто красно е в трее



    Окно завершения работы

    Особый интерес вызывает интерфейс системы. Ведь её размер крайне мал и может возникнуть мысль, что интерфейс убог. Но это не совсем так. Здесь нужно рассматривать такие критерии как внешний вид и функциональность. Внешний вид порадовал: он воспринимается наравне с оконными менеджерами в Linux системах.

    Итоги

    Мне KolibriOS понравилась. Да, мало кто станет использовать её в качестве основной операционной системы. Но для меня она стала символом упорства, веры в свои силы и успех. Вот уже 9 лет ведётся разработка колибри на ассемблере fasm. Сделано уже многое, но проект продолжает жить и развиваться. Недавно, например, появилась поддержка USB. И каждый день(!) выходят ночные сборки, реализующие новые функции.
    Одним из самых главных недостатков является отсутствие привычных программ. А это не есть хорошо. Но зато можно