OS Free Вики

На данный момент создано 18 статей.

**osFree** — проект с открытым исходным кодом, посвящённый созданию клона операционной системы IBM OS/2. Также, возможно параллельное сосуществование API различных операционных систем, построенных поверх одного и того же микроядра.

Идеей проекта является воссоздание и постепенная замена подсистем OS/2 на аналоги с открытым исходным кодом. Цель состоит в повторении функционала OS/2 Warp 4 (Merlin).

Система работает поверх микроядра L4 и l4env.

Микроядро может служить основой для параллельных API, реализованных поверх него. Эти API могут существовать независимо, имея минимальную общую базу, состоящую из самого микроядра и некоторого набора общих сервисов (называемых personality-нейтральными сервисами). Это позволяет иметь независимую (non-layered) реализацию параллельных API.

## Совместимость с OS/2

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

Совместимость с OS/2 планируется только на уровне API. Совместимость на уровне драйверов не планируется, т.к. по мнению разработчиков драйверы OS/2 все больше устаревают. Согласно своей идее, osFree может работать поверх множества ядер, таких как L4, Linux, Windows, etc. В результате, можно использовать подсистему драйверов этих ядер.

Поддержка всей 16-битной части OS/2 не планируется, так как существует не так уж и много приложений, которые являются чисто 16-битными. Для большинства смешанных 16/32-разрядных приложений разработчики планируют сделать автоматическую замену 16 битных вызовов на чисто 32-битный API. Как результат, получатся чисто 32-битные приложения (вместо многолетней практики использования “смешанных” 16/32 приложений).

**Первоочередной задачей проекта является поддержка запуска большинства *консольных* приложений OS/2 под OS/2 Server.**

**Обратите внимание!** Для запуска программы в последней опубликованной версии (0.0.4.7) нужно указать в консоли полный путь до приложения (например, *c:\scanenv.exe*). В транке этот недочет уже исправлен.

## "Индивидуальные ОС"

В основе системы, будет микроядро L4 как база. Поверх L4 планируется построить следующие *OS personalities* (индивидуальные ОС):

* **Нейтральная personality** - базовое ОС API. Это набор серверов и библиотек, предоставляющие разные сервисы. Все другие personalities построены поверх Нейтральной Personality. API нейтральной personality можно сравнить с Native NT API – они почти функционально эквивалентны.
	+ Фреймворки:*l4env*, *l4re* и *Genode*
* **OS/2 personality** - должна предоставлять полное (или подмножество) OS/2 API.
	+ *Пишется разработчиками osFree*

Серверы OS/2 personality:

* *Os2fs* - файловый сервер. Реализует файловые API и врапперы для l4vfs для поддержки семантики файловой системы OS/2. (вводятся буквы дисков, файловый доступ к пайпам в ветке \pipe\.., устройствам в \dev\.. и т.п.
* *Os2exec* - сервер для загрузки исполняемых файлов и DLL различных форматов. Также реализуются различные API для работы с исполняемыми модулями. Поддержка исполняемых форматов отделена от самого сервера, и выделена в отдельную библиотеку. Т.е., есть например, lx.ixf для поддержки исполняемых файлов формата LX. Предполагается написать аналогичный драйвер elf.ixf для формата ELF – аналогично OS/2 Warp (PowerPC edition), будет рализована поддержка EXE и DLL формата ELF. Как известно, формат LX заточен под платформу Intel и хотя он хорошо оптимизирован под ее возможности, но для других платформ его использование может быть проблематичным. Формат ELF напротив, абстрагирован от платформы, поддерживает как 32-битный, так и 64-битный вариант.
* *Os2srv* - главный сервер OS/2 personality. Координирует запуск других серверов OS/2 personality, при старте системы обрабатывает файл config.sys и запускает остальные серверы. При запуске задаются пути поиска программ и библиотек, запускаются другие серверы через оператор *runserver=*, затем запускаются OS/2 программы (не серверы) через *run=* (асинхронно) и *call=* (синхронно) и, наконец, запускается программа, прописанная как *protshell=*.
	+ Как и в обычной OS/2, protshell это программа, запускающая оболочку, стартующую пользовательский интерфейс системы. В случае OsFree это программа *minicmd.exe*.
* *Os2app* - это не сервер, а специальное приложение l4env, которое представляет собой своеобразный враппер для OS/2 приложения. Каждое OS/2 приложение запускается в контексте своей копии os2app. При запуске minicmd.exe, например, стартуется os2app, которому передаются параметры командной строки: *'–stdin /dev/vc0 –stdout /dev/vc0 –stderr /dev/vc0 c:\minicmd.exe'*. – Таким образом, в командной строке передается, к какой консоли цепляться в качестве *stdin/stdout/stderr* и какое OS/2 приложение запускать.
* **Linux personality** - должна предоставить полную функциональность ядра Linux. Будет использован дистрибутив на ядре L4Linux.
	+ *Судя по скриншотам, в качестве Linux-personality используется Debian 3.0 на ядре L4*
* **MVM/DOS personality** - среда для запуска множества виртуальных машин с немодифицированными ОС. Данное направление очень перспективно для разработчиков, хотя и имеет меньший приоритет, чем разработка OS/2 personality, поэтому они возможно, воспользуются наработками других проектов, например QEMU, DosBox, DosEmu, FreeDOS.
	+ *Пока отсутствует*
* **Win16 personality**
	+ *Пока отсутствует*
* **Win32 personality** - должна предоставлять частичный или полный набор Win32 API. Если получится паравиртуализировать ReactOS (есть идея насчет написания HAL-а, работающего поверх l4env/l4re), то разработчики будут использовать этот результат для поддержки Win32 API. В противном случае, будут использованы результаты проекта WINE.[1]

**Q:** Теоретически, как сложно написать такой HAL для L4?

**A:** Это около года работы до выпуска работоспособной альфа\бета версии, если за дело возьмутся человек пять программистов уровня Алексея Брагина и Алекса Ионеску.
[2]

* *Пока отсутствует*

При желании, вы можете сюда добавить нужную вам personality.

## Компоненты

В настоящее время проект osFree предоставляет к тестированию ряд следущих компонентов:

* Загрузчик ядра
* Сервер OS/2 Personality
* Утилиты командной строки
* Интерпретатор языка Classic REXX
* Процедуры ввода-вывода
* Подсистема мультимедиа

## osFree

* План работ
* Компоненты
* Используемые проекты
* Экраны
* FreePM
* L4
* Скриншоты

## Помощь

* Получение исходных кодов
* Сборка
* Отладка
* Отправка отчетов

## OS/2

* Presentation Manager
* IFS
* Петиции к IBM

## Статьи

* OS/2: между прошлым и будущим — Компьютерра
* Презентация демо osFree
* Open Source и OS/2, [3]
* Микроядро L4 как основа ядра ОС

## Ссылки

* Официальный сайт
* Баг-трекер
* Группа в Telegram
* Changelog
* Скачать
	+ **osfree-demo-0.0.4.7 - build r1040**
	+ Неофициальное зеркало (osfree-demo-0.0.4.7-cc-edition.7z и др.)
* Сообщество в vk