Добрый день! Мы рады видеть всех на этом семинаре
Наша цель сегодня - объяснить, почему и как разрабатываются программы для Колибри.
====
Давным-давно, в далекой галактике существовала свободная операционная система MenuetOS, написанная на ассемблере финном Вилле Турьянмаа. Через несколько лет, в 2004 году, он прекратил разработку Menuet. Вскоре разработка была продолжена силами сообщества. Один из русских дистрибутивов Menuet того времени назывался Kolibri. В октябре 2005 года ядро Колибри отличалось от ядра Menuet более чем на 50%; Колибри окончательно отделилась и отдалилась от Menuet, и стала самостоятельной.
====
Теперь несколько любопытных фактов:
*Ядро системы полностью написано на ассемблере, и в скомпилированном виде занимает менее 128 килобайт (Колибри отлично подходит для демосцены

.
*Минимальные требования - Pentium I, 8 мегабайт ОЗУ и VGA-видеокарта.
*Исходные коды ядра и большей части драйверов занимают около 30 тысяч строк кода на ассемблере, это примерно в 500 раз меньше, чем ядро Linux.
*При размерах, сопоставимых с размерами, например, ядра MS-DOS, Колибри предоставляет гораздо больше возможностей: имеется поддержка видеокарт VESA, жестких дисков и дискет с FAT12/16/32, NTFS и ext2/3, компакт-дисков с файловой системой CDFS; есть TCP/IP стек и драйвера нескольких распространенных сетевых карт. В экспериментальной версии ядра ведется работа над поддержкой USB.
*Имеются драйвера для звуковых карт AC'97 и HD Audio, видеокарт AMD/ATI.
*Колибри можно загружать без BIOS, прошив как payload проекта coreboot (пока что работает в qemu и на некоторых AMD).
*Ядро системы оценивается проектом ohloh ("Оло") почти в 300 тысяч долларов.
Ядро - это еще не вся система. На сегодняшний день для Колибри написано более 200 серьезных программ: на ассемблере, Си, Паскале, Луа, Питоне. Имеются порты DosBox, Quake, Doom, MESA, FFMpeg, Cairo, Freetype 2, Lua, TinyPy, FCEU. Я считаю, что в разумные сроки можно перенести в Колибри основные программы проекта GNU, но не вижу в этом большого смысла. Программы, разрабатываемые с учетом философии Колибри, как правило получаются значительно компактнее и быстрее, чем утилиты GNU.
====
Зачем Колибри? Максимальное быстродействие, минимальный размер, графический интерфейс, близость к "железу".
Быстродействие:
Среднее время загрузки Колибри с CD-диска или флешки - около двух секунд.
Возьмем две одинаковые программы на ассемблере, выполняющие пустой цикл 4 миллиарда раз. Одна написана для Колибри, другая - для Windows. Возьмем чистую установку Kolibri и чистую установку Windows. Угадайте, на 1.8-гигагерцовом Целероне какая из двух программ отработала быстрее на 18% по результатам тестов?
По мнению Википедии, Колибри является операционной системой реального времени, то есть гарантирующей отклик в течение определенного интервала времени. Для основного дистрибутива это, к сожалению, не так (из-за дисковой подсистемы и других проблем), но существует бранч Kolibri-A для встраиваемых систем, где с этим всё в порядке (по крайней мере, будет).
Минимальный размер:
Уже много лет основной дистрибутив Колибри представляет собой образ дискеты размером 1.44 мегабайта.
"Время дискет прошло. Вместо магнитного носителя пришла пора использовать электронный. Встречайте! NOR Flash memory! (В народе именуемая, ласково, биосом)". "Требования к размеру от этого нисколько не изменились: в BIOS так же мало места, как и на дискете".
Сколько места на вашем жестком диске занимает операционная система и ее программы? Даже Puppy Linux вряд ли займет меньше 50 мегабайт, а "взрослые системы" требуют 2 и более гигабайт. На нетбуках, неттопах, тонких клиентах и других устройствах с ограниченным количеством дисковой памяти место, занимаемое системой - это серьезная проблема. Компьютер с Колибри можно использовать как текстовый редактор, mp3-плеер, среду разработки на ассемблере или клиент VNC, выделив на жестком диске на систему и ее программы менее 2 мегабайт.
Графический интерфейс:
Колибри всегда была графической. Ядро Колибри представляет простой API для работы с окнами, графикой и устройствами ввода. Кроме того, имеется де-факто стандартная библиотека оконных компонентов boxlib, и несколько других, менее распространенных. Это облегчает программирование дружелюбных к пользователю программ.
Программирование аппаратуры:
Разработчик, используя Колибри, может легко получить полный доступ к оборудованию - портам COM, LPT, PCI, а в экспериментальной версии ядра - и к USB (OHCI, UHCI). Учитывая, что перезагрузка системы занимает несколько секунд, а средства отладки неплохо развиты, можно тестировать правки драйверов устройств на реальном "железе", не испытывая никаких неудобств. Учитывая все вышесказанное, становится понятно - Колибри является перспективной системой для "слабых" компьютеров, нетбуков, медиаплееров, систем сбора/обработки информации и АСУП. Несколько лет назад вряд ли возможно было представить какой-нибудь медиаплеер с x86-м процессором, сегодня это реальность (например, Logitech Revue).
====
У любой операционной системы есть свои минусы. И у Колибри известно несколько минусов:
*Приложения Колибри могут делать с железом практически все, что угодно. Это может быть в будущем серьезной угрозой для безопасности компьютера.
*Еще один аспект безопасности: все запущенные процессы выполняются с одними и теми же правами, причем система является однопользовательской.
*Документация по многим аспектам работы ядра отсутствует или очень поверхностная. Это компенсируется отзывчивым сообществом разработчиков. Впрочем, прикладные программисты имеют в своем распоряжении исчерпывающую документацию по всем системным функциям и внушительный набор примеров кода.
*Колибри - не UNIX и не POSIX! (Хотя не очень ясно, минус это или все же плюс).
====
Как можно реализовать свои мечты в Колибри?
На сегодняшний день в Колибри стабильно работает только один компилятор - fasm. Зато можно пользоваться кросс-компиляторами для Колибри - gcc и freepascal, недавно появились порты brainfuck, lua и tiny python.
Есть библиотеки для работы с файловой системой, растровой графикой (bmp, gif, jpeg, png), векторной графикой, ini-файлами, архивами, звуком, сетью; имеется эмулятор терминала с поддержкой escape-последовательностей. Из портированных библиотек, напомню, имеются mesa, cairo, freetype2, zlib.