Архитектор и Пифия

Томас Бушнелл, главный архитектор проекта Hurd, публично отрёкся от Ричарда Столлмана, точнее, от продвигаемой им лицензии GNU FDL (Free Documentation License). Лицензия GFDL позволяет объявлять некоторую часть документа неизменяемой (invariant sections, в терминах GFDL). Бушнелл заявил публичный протест, подробно аргументировав своё мнение о «несвободности» этой лицензии, за что и был отчислен из проекта. Трудно сказать, кто тут прав, а кто виноват. С одной стороны, Столлман, бог-отец-основатель проекта GNU, как никто другой должен понимать, что такое «свободная документация» (жираф большой — ему видней). С другой стороны, Debian, создавшая один из самых известных Linux-дистрибутивов и единственный на сегодняшний день Hurd-дистрибутив, не собирается использовать документацию под лицензией GFDL.
Известно, что Debian всегда относилась к GNU-идеологии более чем лояльно, без сожаления расставаясь с любым кодом, хотя бы только подозреваемом в несоответствии GNU Public License. Учитывая, что никто никого и не заставляет публиковать свои работы именно под GFDL (Столлман не возражает против использования GPL в этих целях), всё это выглядит очень странно. Здесь попахивает сведением личных счётов, или же просто грязным пиаром. В любом случае, страдают в первую очередь фанаты движения ГНУ. Кому верить?
Или, может быть, лучше спросить — кому выгодно?

Подружка для демо-мейкера

Целью проекта Amiga Research Operting System является создание переносимого и бесплатного (мозиллоподобная лицензия) клона AmigaOS 3.1, совместимого на бинарном уровне. Кроме того, разработчики стремятся к полной межплатформенной совместимости: исходники AROS-программ не должны требовать каких-либо изменений при перекомпилировании под другую архитектуру (на сегодняшний день поддерживаются x86, m68k, идёт работа над Sparc, Palm и PowerPC-версиями). AROS может работать как полноценная ОС, загружаясь с собственного диска\раздела, или же поверх Linux/FreeBSD/NetBSD/Solaris, как X11-приложение. Существует также эмулятор UAE (UAE Amiga Emulator), портированный на множество ОС, в том числе… AROS! Дело в том, что UAE обладает (пока что) гораздо лучшей двоичной совместимостью.

В 1993 году Amiga переживала трудные времена, перспективы были туманными, надежды — неопределёнными. Некоторые фанаты серьёзно задумывались над необходимостью самим обеспечить светлое будущее любимой машины. Немедленно была найдена первопричина всех бед — пропаганда, вернее, недостаточность оной. Нужно повысить привлекательность АмигаОС для пользователей и разработчиков, тогда Амига автоматически станет более распространённой и популярной. Было разработано несколько планов по достижению этих благородных целей. Согласно одному из них, AmigaOS должна стать более современной ОС (революция), другой предполагал избавление от накопленных ошибок (эволюция). Так, в ожесточённых, но бессмысленных спорах, родился проект AOS. После этого споров стало ещё больше, а смысла, соответственно — меньше.

Что в АмигаОС можно считать ошибочным, ненужным, избыточным? От чего нужно избавиться, как от пережитков прошлого, мешающих развитию ОС? Если добавлять новые функции — то какие? Что такое «современная ОС», и как её слепить из того, что есть? В юзенет-конференцию comp.os.aos в течение двух лет валились однотипные письма: «нужно (нельзя) делать так…», на которые следовали не менее однотипные ответы: «это невозможно (необходимо), потому что… и вообще, это уже обсуждалось, смотри в архиве… короче, ты не прав». Ни одной строчки кода не было написано (или, во всяком случае, опубликовано). Зимой 1995 года Aaron Diguilla, которому надоели эти затянувшиеся муки творчества, опубликовал RFC (Request For Comments — предложение к обсуждению), содержащий несколько вариантов создания минимального общего базиса, некоей отправной точки, фундамента проекта. В результате почти единогласно было решено начать с написания открытой АмигаОС, а там уж видно будет… Проект переименовали в AROS, работа закипела. мнтересно, что часть кода AROS была использована в MorphOS, а также… в более поздних версиях AmigaOS!

Под AROS недавно был портирован компилятор GCC 3.3.1, существующие библиотеки подгоняются под стандарт POSIX, идёт перенос TCP/IP-стека из BSD. Значение стандартизации AROS’а трудно переоценить, ведь когда этот процесс будет закончен, откроется доступ к огромному количеству уже написанных исходников, перенос утилит из nix-клонов упростится, спираль «софт — юзеры — разработчики — софт» раскрутится, наступит золотой век Амиги, расцвет культуры, науки и демосцены, а также мир во всём мире. В качестве побочного эффекта станет возможным компилирование исходников AROS с помощью AROS-версии gcc, то есть ОС станет полностью самоподдерживаемой и самодостаточной.

GUI OS: OpenSource

Маленькое, быстрое и открытое (лицензия GPL) ядро Visopsys и построенная на нём одноимённая графическая ОС разрабатываются с 1997 года. ОС работает в защищённом режиме процессора i386 (и выше), обладает простым, но привлекательным ГУм, является истинно многозадачной и поддерживает виртуальную память. Дистрибутив (это слово всегда ассоциировалось у меня с чем-то коммерческим, громоздким и неудобным, но слова «инсталляционный пакет» писать лень) включает в себя набор UNIX/DOS-подобных утилит, хотя Visopsys не является клоном какой-либо из существующих ОС. Устанавливается на дискету или жёсткий диск (для загрузки можно использовать LILO или GRUB).

За 6 лет своего существования ОС доросла до версии 0.3, которая может похвастаться большим количеством явных улучшений: уменьшен размер занимаемой кернелом памяти, расширен список поддерживаемых графических разрешений, весь ассемблерный код был переписан на С, убрано ограничение, не позволявшее загружать ОС с раздела, лежащего (хотя бы частично) за пределами первых 1024-х цилиндров жёсткого диска, добавлена возможность форматирования FAT12/16/32-разделов. Скрытых улучшений, касающихся структуры и архитектуры ядра, ещё больше. Дисковая подсистема (полностью асинхронный ввод-вывод, предварительное чтение, кэширование) и многие другие другие низкоуровневые компоненты были серьёзно переработаны, за счёт чего стали стабильнее и производительнее.

Утилита Disk Manager может делать практически всё, что умеют её аналоги из других ОС (fdisk), и даже больше. Например, копирование раздела на другой диск, что удобно для экстренного копирования\восстановления данных. Предполагается, что в ближайшем будущем функциональность этого продукта вырастет до уровня Partition Magic. Таким образом, можно будет использовать связку Visopsys + Disk Manager для создания удобной спасательной дискеты.

GUI OS: ClosedSource

Многозадачная операционная система Storm написана на ассемблере (NASM) и С (GCC). Цель: создание ГУм-ОС, маленькой и быстрой (где-то я это уже слышал). Минимальные требования: intel686 (Pentium Pro и выше), 2Mb RAM, видеокарта VESA2.0 (желательно 3.0) с 2Mb RAM, DIN/PS2-клавиатура, PS2-мышь. ШтормОС уже умеет двигать окна, смотреть BMP-файлы и даже больше… В настоящее время поддерживается до 4Гб оперативной памяти и файловая система FAT12 (забавное сочетание, правда?), всё остальное находится в различных стадиях разработки (драйвера клавиатуры, мыши, а также обработчик прерываний практически готовы). Разработчик выбрал имя Storm, потому что его собственный ник — Thunder (Гром). Разработка началась 3 июля 2002 года, и последняя версия на сегодняшний день — 0.14а. Пока что ОС не имеет определённой модели лицензирования, но открываться не собирается. Не знаю, для чего автору понадобилось закрывать код, если он всё равно не будет извлекать из него выгоду. Практика показывает, что наиболее жизнеспособным оказывается именно открытый код, а закрытость обычно имеет финансовую и\или юридическую основу. Но есть ещё более простой и по-человечески понятный вариант: кодер хочет полностью и единолично контролировать процесс написания своей программы. К сожалению, такие проекты умирают, как только наскучат своему создателю.

Каждому юзеру — по операционке!

У меня постепенно складывается впечатление, что каждый второй кодер считает своим долгом написать собственную ОС. Это даже не обязательно делать «с нуля» — обилие открытых ОС позволяет заимствовать многие решения из них. Действительно, зачем реализовывать два раза одно и то же? Разумеется, нужно соблюдать авторские права и неукоснительно выполнять условия лицензии. Если цель создания своей (или изменения существующей) ОС — изучение системного программирования, то достаточно исходников Linux или Minix, ну и хорошей книги по архитектуре операционных систем семейства UNIX. Я говорю «юникс», потому что это самая популярная на сегодняшний день ОС (если подсчитывать операционные системы, а не количество их пользователей). Но на пути начинающего ОС-девелопера, к сожалению, нет усыпанной цветами ковровой дорожки.
Исходники ядра Линукса содержат миллионы строк, и вряд ли они станут хорошим подспорьем для обучения программированию, тем более что качество и манера написания различных участков кода неодинаковы, как и их авторы. Minix изначально рассматривался как система для обучения, а потому он имеет заранее определённый, чётко ограниченный набор функций. Его создатель Эндрю Таненбаум не допускает существенного изменения Миникса, например, добавления в него виртуальной памяти или X Window (такие проекты существуют, но в оригинальный Minix они не вольются никогда).
Исходники Minix подробно (почти построчно) документированы… в книге Энди Таненбаума. В русском переводе она не существует, афаик, так что все бегом на Амазон.ком — покупать англоязычный вариант за 100 долларов. Вы побежали? Я — нет. К счастью, это не единственная книга по разработке ОС, можно и в онлайне найти грамотную инфу соответствующего содержания, иногда даже на русском. Но самая дерзкая и (как мне казалось) несбыточная моя мечта — это САМОдокументированная Юникс-ОС, исходники которой содержат настолько понятные и полные комментарии, что надобность в дополнительных источниках информации (почти) отпадает. Знакомьтесь: Fiwix.

GNU/Fiwix не является новой ОС со своими системными утилитами, библиотеками и компиляторами, это новое юниксоподобное ядро, а вся внешняя обвязка будет заимствоваться из ГНУ. Этим, а также многим другим, он похож на GNU/Linux. Более того — Fiwix является линукс-совместимым (с некоторыми ограничениями), так что многие ELF-бинарники, скомпилированные под Линуксом, должны запускаться и работать под Фивиксом. Ядро включает набор функций, соответствующий современным требованиям, предъявляемым к юниксоподобным операционным системам, разве что своппинга нет, менеджер процессов не поддерживает приоритеты, а драйвер IDE/ATA и файловая система Ext2 работают в режиме «только чтение». Но, как говорится — лиха беда начало. Основные возможности реализованы, осталось доделать всё остальное. Кстати, в драйвер клавиатуры намертво зашита испанская\каталонская раскладка клавиатуры, так что и не надейтесь писать под ней кириллицей ;). Видимо, до портирования kbd & console-tools Fiwix ещё не дорос… Первого декабря вышла новая версия — 0.1.2, которая является просто плановым релизом, а не показателем каких-либо существенных изменений. Автор (Jordi Sanfeliu AKA Mikaku) продолжает работу над менеджером виртуальной памяти.

Теги:

Оставить мнение

Check Also

Брутфорс в английской глубинке. Как криптостойкие шифры вскрывали до компьютеров

Ты наверняка слышал про тест Тьюринга и, возможно, машину Тьюринга. Однако помимо абстракт…