KolibriOS

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 15:51, 6 июня 2019.
KolibriOS
YR5Mey3H4us.jpg
Разработчики: KolibriOS Project Team
Выпущена: Отделилась от MenuetOS в 2004 году[1]
Постоянный выпуск: 0.7.7.0 (13 декабря 2009 года)[2]
Состояние разработки: Регулярно выпускаются ночные сборки
Написана на: flat assembler
Платформа: x86, x86-64
Тип ПО: Операционная система для PC
Лицензия: GNU GPL
Веб-сайт kolibrios.org

KolibriOS — операционная система для PC. Колибри отделилась от MenuetOS в 2004 году, и с тех пор разрабатывается сообществом программистов преимущественно из стран постсоветского пространства. Её основной дистрибутив умещается на дискету (1,44 Мб). Встроена полная поддержка файловых систем FAT12/16/32, для чтения доступны NTFS, ISO 9660, Ext2/3/4. Ядро и большинство программ написаны на ассемблере FASM.

История

KolibriOS – это ответвление некогда очень популярной в России 32-битной операционной системы MenuetOS. MenuetOS была искусственно разведена на две ветки: открытую для 32-битных процессоров и закрытую для 64-битных. В KolibriOS отсутствует это искусственное разделение. Она работает и на 32- и 64-битных процессорах. KolibriOS, как и Menuet32, распространяется абсолютно свободно, согласно лицензии GPL. В обновленную версию Колибри встроена полная поддержка файловых систем FAT16–32 / ext2 — ext4, а также может поддерживать другие популярные файловые системы (NTFS, XFS, ISO-9660) в режиме чтения. В ней появилась поддержка USB и сетевых карт, был добавлен стек TCP/IP и звуковые кодеки.[Источник 1]

Предшествующие события

Во второй половине 1990-х годов финский студент Вилле Турьянмаа писал графическую оболочку для DOS. Ему хотелось, чтобы его программы на Паскале выполнялись в многозадачном защищенном режиме и имели оконный графический интерфейс. Оболочка называлась MultiRun Program for IBM-PC. Программа обрастала возможностями и со временем превратилась в самодостаточную операционную систему. Называлась эта операционная система MrOS.

Однако со временем Вилле понял, что 16-битная ОС устарела. Тогда он принял решение написать самое быстрое в мире ядро. Единственным подходящим для этого языком был ассемблер. Через несколько месяцев был выпущен релиз MenuetOS 0.01.

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

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

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

Возможности

Для KolibriOS разработано более 250 программ. Конечно, это немного в сравнении с ОС, разработка которых началась еще в 80-90-х годах (Windows, Linux, BeOS, *BSD), но отсутствие программ как раз привлекает разработчиков, выступая в качестве хорошей возможности опробовать свои силы. Благодаря портированому DOSBox возможно запускать еще тысячи программ, написанных для DOS.

Имеется возможность просмотра файлов формата rtf в программе RTFREAD. Присутствует редактор таблиц TABLE с поддержкой формул, программа для построения графиков. Естественно, есть календарь, калькулятор и англо-русский словарь. Можно просматривать архивы в форматах 7z, zip, доступены просмотр графических файлов форматов bmp, gif, jpeg, png, tga, pcx, ico, cur и 3ds, прослушивание музыкальных файлов форматов mid, mp3, wav, xm и обычных аудиодисков. Редактор графики ANIMAGE позволяет создавать и редактировать рисунки.

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

Установка

Минимальные системные требования для установки KolibriOS:

  • ЦП: Pentium, AMD 5×86 или Cyrix 5×86 без MMX с частотой 100 МГц;
  • ОЗУ: 8 Мбайт;
  • Видеокарта: VESA-совместимая с поддержкой режима VGA (640 × 480 × 16).

Обеспечение KolibriN10

Последняя версия KolobriOS имеет ряд позитивных изменений и обновлений программ, относительно предыдущей версии, таких как изменения в ядре, в драйверах, библиотеках, обновление программ. Также появились новые программы.

Изменения в ядре

Были проведены следующие изменения в ядре:

  • Множество улучшений в шрифтах:
  1. поддержка Юникода
  2. возможностью пропорционального масштабирования
  3. новый большой системный шрифт
  4. поддержка сглаживания (выключить, включить обычное, субпиксельное)
  • Слияние ветки kolibri-process с «транком» (основной веткой). В рамках ветки kolibri-process разрабатывалась новая модель процессов и потоков, более схожая с моделью больших ОС.
  • Повышена скорость загрузки на некоторых конфигурациях
  • Сетевая подсистема:
  1. Возможность работы с любой из установленных сетевых карт (ранее использовалась первая обнаруженная сетевая карта)
  2. Реализованы RAW-сокеты
  3. Добавлена возможность установки TTL через setsockopt
  4. Теперь Колибри пытается подключиться к DHCP серверу, только если кабель физически подключен (и переподключиться, если переподключен кабель, пока поддерживается не всеми драйверами). Предыдущие версии пытались подключиться всегда, что при не подсоединённом сетевом кабеле посылало ненужные пакеты и «забивало» буфер.
  5. Также исправлены обнаруженные утечки памяти, исправление множества багов (в драйверах сетевых карт, в утилитах)
  • Звуковая подсистема Infinity: исправления для кольцевого буфера (до этого, некорректно проигрывались звуковые файлы, записанные с определённой частотой дискретизации)
  • Реализация слоев отображения окон, позволяет сделать окно позади или поверх всех
  • Дисковых кэш: поддержка секторов с размером отличным от 512 байт
  • Расширены функции получения состояния мыши.
  • Поддержка HPET
  • Новая системная функция ф77 — user-space блокировки для синхронизации в приложениях (мьютексы, семафоры, условные переменные, read-write блокировки и т.п.)
  • Новый загрузчик приложений
  • Добавлена возможность сохранения/восстановления контекста процесса при помощи инструкций xsave/xrstor
  • Добавлена возможность использования инструкций AVX/AVX2 и AVX512, в демку Firework добавлены соответствующие оптимизации
  • Добавлена поддержка загрузки KolibriOS из 64-битного UEFI

Изменения в драйверах

Были проведены следующие изменения в драйверах:

  • Поддержка записи и основных функций файловой системы в драйвере NTFS
  • Чистка кода и исправление багов в драйверах файловых систем EXT2, FAT
  • Поддержка Юникода при работе с файловыми системами
  • Поддержка всех IDE — контроллеров (ранее поддерживались только PCI 01018x)
  • Обновление драйверов для видеокарт Intel и ATI
  • Конвертация всех драйверов в формат PE. Формат PE позволяет упростить загрузку драйверов и подключение библиотек в Колибри, по сравнению с форматом COFF, используемым ранее. После успешной конвертации, была удалена поддержка драйверов в COFF формате.
  • Добавлена поддержка 16bpp видео-режимов (для старых видеокарт и дешёвых встроенных x86-систем, где отсутствует поддержка 24/32bpp — в частности, используется в 86duino с vortex86 VGA)
  • Драйвер GPIO для 86duino
  • Драйвер COM-мыши: поддержка третьей кнопки
  • Исправлена поддержка драйвера SoundBlaster16 поломанная в r3727
  • USBHID: перевод USB media keys в соответствующие PS/2 коды

Изменения в библиотеках

В библиотеках произошёл ряд изменений:

  • TinyGL — воссоздание библиотеки на ассемблере
  • KMenu — новая библиотека с реализацией главного и контекстного меню
  • ColorDialog — новая библиотека для выбора цвета
  • BoxLib — большой шрифт в EditBox, возможность использовать копирование/вырезание/вставку во всех EditBox'ах, исправление ошибок. Новый компонент ToolTip
  • LibImg — добавлено сохранение файлов в PNG, изменение размера картинки со сглаживанием
  • Console — добавлена поддержка скролла мышью во всех консольных приложениях
  • c_layer — "обертки" библиотек Колибри для Си-подобных языков
  • InputBox — библиотека, реализующая компонент InputBox: всплывающее окно со вводом текста
  • KFonts — библиотека для вывода шрифтов KF формата
  • Rasterworks — шрифтовая библиотека с поддержкой Unicode и разных стилей начертания

Обновление программ

Были проведены следующие обновления программ:

  • Oberon-07 — обновлен компилятор языка Oberon. Разрешен экспорт структурных переменных (только для чтения). Расширены и исправлены библиотеки для KolibriOS: добавлены модули для работы с доской отладки и диалогами ("Open" и "Color"), усовершенствованы процедуры загрузки динамических библиотек, сделан единый модуль для работы с файловой системой. Полная поддержка таблиц. Использование kf-шрифтов.
    Рисунок 1 - Интерфейс программы TextEdit
  • Dicty 2.0 — новая версия словарика-переводчика: "живой" поиск, переработка файлов баз словарей (без потерь информации размер словарей уменьшился на 30%), улучшен код и GUI.
    Рисунок 2 - Скриншот программы uPDF 1.2
  • TextEdit — обновление текстового редактора с подсветкой синтаксиса. Из изменений: переделан GUI, добавлено меню, улучшена цветовая схема, поле ввода текста активно по умолчанию, используются новые системные шрифты большего размера. Добавлено выделение подсвеченного слова при двойном клике на нем (см. рисунок 1).
  • uPDF 1.2 — программа для чтения файлов в формате PDF (см. рисунок 2).
  • fNav — обновление файлового менеджера.
  1. добавлено контекстное меню
  2. управление горячими клавишами
  3. возможность копирования файлов размером более 4Gb
  4. переименование доступно на ФС, поддерживающих эту функцию
  5. отображение размеров физических и логических дисков
  • TmpDisk — отображение размера созданных дисков, показ сообщения с предупреждением перед удалением /tmp0
  • View3DS — поддержка ASC формата, растягиваемое окно.
  • AC97snd — исправление ошибки в обработке ID3-тегов, пересекающих границу в 64 Кб (что приводило к зависанию системы на некоторых MP3-файлах)
  • MTDBG — поддержка всех инструкций int 3 (пользовательская точка остановки выполнения), уменьшена перерисовка окна, улучшена цветовая схема, теперь окно растягивается.
  • FLI Player — оптимизация работы.
  • ScrShoot — поддержка 16bpp режима.
  • Calc — использование увеличенного шрифта, починен ввод с клавиатуры и работа горячих клавиш. Обработка клавиш клавиатура расширена, теперь: буквы A-F используются при наборе HEX чисел, Enter позволяет получить результат, а Delete очищает ввод. Обновление дисплея происходит при каждом нажатии знака операции +-/*
  • End — новый дизайн.
  • Tinypad — масштабирование шрифта, исправление багов;
  • Notify — Добавлена поддержка контроллеров; множественные исправления и оптимизации; больше не перехватывает фокус у вызвавшей её программы.
  • Appearance — увеличенный шрифт, контекстное меню, поиск по первой букве, возможность открытия папки с обоями.
  • Animage — обновлен и доработан интерфейс; использование нового компонента меню (kmenu.obj); множественные оптимизации, доработки и исправления багов.
  • CPUID — добавлен код для использования значения расширенной модели (Extended Model) при определении кодового имени процессоров Intel, уменьшен размер программы, исправления в интерфейсе.
  • Netsurf — попытка нормального портирования GET/POST — запросы; поддержка изображений JPEG, PNG, GIF.
  • Игровой центр — появились категории.
  • Run — запускалка файлов, новая более более удобная версия с поддержкой комбинаций клавиш и кнопкой выбора файла с помощью диалога.
  • KIV — сохранение данных о примененном фоне в eskin.ini для его восстановления после перезагрузки.
  • Palitra — сохранение данных о примененном фоне в eskin.ini для его восстановления после перезагрузки.
  • IRCc — улучшение стабильности работы и очистка данных в момент выхода
  • Board — нажатие клавиши F2 открывает boardlog.ini в Tinypad
  • CPU — исправлена утечка кнопок
  • TinyC — портирована более новая версия, исправления в библиотеках
  • @icon — исправления и большой шрифт
  • Mp3Info — обновление старой программы, показывает информацию об mp3-файле.
  • searchap — вместо мониторования папки /kolibrios/ с задержкой в 5 секунд, предпринимается две попытки: первая без задержки и вторая, в случае провала первой, с задержкой
  • Table — табличный редактор, аналог Excel в Колибри, получил серьезное обновление UI и исправление множества ошибок

Новые программы

Последняя версия KolibriOS имеет ряд новых программ:

  • FB2 Reader — программа для чтения файлов формата FB2. Поддерживаются кодировки UTF-8, Windows-1250, Windows-1251, Windows-1252, cp866, форматированный текст, выравнивание по ширине, оглавление, ссылки, примечания, картинки, поддержка тэга "description", навигация по ProgressBar, частичная поддержка таблиц. Поддерживается настройка цветовой схемы, режимы день/ночь, изменяемый размер шрифта. Сохранение настроек и места остановки в файле history.dat рядом с программой (см. рисунок 3).
    Рисунок 3 - Интерфейс программы Bf2read.png
  • Pixie 2 новая версия аудиоплеера с поддержкой больших шрифтов и функций зацикливания и воспроизведения в случайном порядке. Поддержка форматов MP3, WAV и XM.
  • Volume – системный регулятор громкости. Специально для Pixie была написана программа @Volume — общесистемный микшер громкости. Управление: горячие клавиши в системе: Ctrl+Alt+Left (громкость ниже) и Ctrl+Alt+Right (громкость выше), а так же Ctrl+Alt+Home/Down (включение/выключение тишины). При открытом окне громкость так же меняется с помощью Left,PgDown(громкость ниже), Right,PgUp(громкость выше), Up/Down,Home/End (включить/выключить звук).
  • Software widget — это универсальный настраиваемый виджет, который сейчас используется, как Game center и Control panel. Настройки берутся из INI файла и в их число входит название окна, его размеры, расстояние между элементами. В состав элемента входит иконка и её подпись.
  • SysPanel — системная панель, аналог Панели Управления в Windows.
  • PanelsConfig — утилита для настройки таскбара (нижняя панель) и докбара.
  • ClipView — программа для просмотра содержимого буфера обмена. В отличии от Windows, где в буфере может хранится только один слот одновременно, в Колибри он многоуровневый. Данные о слотах представлены в виде таблицы, можно удалить последний слот или все, сделать аварийный анлок. Также доступен предпросмотр данных слота в виде текста и HEX.
  • @open — утилита для открытия файлов по ассоциациям с диалогом «открыть с помощью» (в дальнейшем все программы будут использовать ее для открытия файла согласно ассоциациям).
  • И другие программы.[Источник 3]

Источники

  1. Полет «Колибри». На что способна ОС, целиком написанная на ассемблере. // Хакер. URL: https://xakep.ru/2017/09/06/polet-kolibri/ (дата обращения: 06.04.2019)
  2. Обзор KolibriOS: с первых дней и до сегодня. // KolibriN. [2008-2019]. URL: http://kolibri-n.org/inf/let_it_fly/ (дата обращения: 06.04.2019)
  3. Что нового в KolibriN10. // KolibriN. [2008-2019]. URL: http://kolibri-n.org/review (дата обращения: 06.04.2019)

Примечания

  1. По данным официального [1].
  2. Последняя версия KolibriOS на момент написания данной статьи [2].