О блоге

Все новые материалы размещаются на Блогосайте alv.me. Старые - в процессе переноса.

17.08.2008

AtheOS: история и перспективы

2001 г

Вступление

В последнее время в Рунете наблюдается нечто вроде Menuet-бума - всплеск интереса к маленькой (размером в одну дискету) и быстрой (так как написанной целиком на ассемблере) операционной системе, имеющей, тем не менее, встроенный графический интерфейс. Разработанная соотечественником Линуса, Вилле Турьянмаа (http://www.menuet.org), она еще очень молода (менее полутора лет от роду), и не может рассматриваться в качестве работоспособной ОС. Думаю, внимание к ней привлекает именно компактность и оригинальность реализации. Ну и то, что это - удачный вариант для изучения устройства операционной системы вообще.

Однако в связи с этим мне захотелось вспомнить о другом проекте, не менее (если не более оригинальном), достигшем стадии практической применимости, но, тем не менее, не получившем широкой известности. Это - AtheOS, разработка норвежского программиста Курта Скавена (Kurt Skauen - за точность транскрипции не ручаюсь), которую он проводил на протяжении пары лет, вплоть до конца 2001 года (фактически столько же, сколько разрабатывался и Menuet).

Об AtheOS

Как известно, подавляющее большинство открытых и свободных операционных системах генетически (или - парагенетически) связаны с Unix. Так, BSD-клоны, в сущности, ни что иное, как Unix, очищенный от проприетарного Unix-кода. Linux исторически - попытка воспроизведения функциональности Unix-систем, вообще таковой код не используя. И даже Hurd, в котором декларируется отход от принципов Unix-архаики, подчинен единой идее - сделать все, как в Unix, но иначе, - в соответствие с известным рекурсивным высказыванием Ричарда Столлмена: GNU - GNU is Not Unix.

Возникает вопрос - все ли в мире Open Sources прямо и непосредственно происходит от Unix? Как выясняется, не совсем. И примером этому - некая свободная альтернативная операционная система, названная ее создателем AtheOS (об этимологии этого слова могу только гадать - но у меня оно ассоциируется и со славным городом Афинами, и с Афиной Палладой).

К слову - создателем ее от начала и до конца выступал один-единственный человек, упомянутый во вступлении Курт Скавен. И местопребыванием она до недавнего времени имела http://www.atheos.cx (почему в прошедшем времени - станет ясным в конце заметки). Сайт этот, что показательно, около четырех лет функционировал под ее собственным управлением (плюс Apache, разумеется). Причем функционировал весьма устойчиво (хотя попасть на него можно было не всегда - но это скорее являлось следствием всякого отсутствия сторонней поддержки, чем слабости системы).

Согласно заявлению автора, AtheOS - своего рода tabula rasa (цитирую - "new clean desktop OS"), разработанная с нуля. То есть - не потомк Unix, в отличие от BSD, и не реинкарнация ее, подобно Linux. Репером разработчика была скорее именно POSIX-совместимость, хотя и ее он не считал для себя обязательной.

AtheOS функционирует на любых Intel-совместимых процессорах (32-разрядных, конечно), причем с очень эффективной поддержкой мультипроцессорных архитектур. В отличие от MenuetOS, AtheOS написана почти целиком на Си - ассемблерная часть ядра составляет чуть больше 20 Кбайт. И потому теоретически она повязана с Intel-архитектурой не больше, чем любая иная POSIX-совместимая система.

Одна из отличительных особенностей AtheOS - поддержка в ядре графического интерфейса пользователя, основанного на архитектуре клиент-сервер, но отличного, тем не менее, от оконной системы X, привычной всем пользователям Unix. Вместе с тем поддерживается и стандартный интерфейс командной строки в лице типичных Unix'овых Shell'ов (штатно - bash, но и zsh был на эту ОС портирован). Ну и вообще декларируется поддержка, хотя и не полная, всяческих стандартов (типа POSIX).

Получение

В общем, все сказанное вызывает (у меня - вызвало) желание ознакомиться с системой вживе. Разумеется, первое действо для этого - получение системы. Единственный к тому путь - скачивание с сайта разработчика. Хотя теоретически AtheOS зарегистрирована (или была зарегистрирована) и на SourceForge, вот только никаких файлов там обнаружить не удастся.

AtheOS - не MenuetOS, и в одну дискету не очень вписывается. Основной ее комплект (для последней по времени версии, 0.3.7) включает:

  • образы двух загрузочных дискет;
  • образ дискеты с данными, под коими имеется ввиду базовый набор компонентов;
  • собственно систему в виде единого тарбалла объемом около 20 Мбайт;
  • небольшую, но вполне внятную документацию, посвященную описанию инсталляции системы и параметров загрузки ядра (kernel-parameters.txt).

Кроме этого, на сайте (в отдельном каталоге) имелся набор дополнительных пакетов (также в виде tgz-архивов), пока несколько ограниченный, но оригинальный по подбору: средства разработки (gcc, automake и подобные), web-сервер Apache, редактор emacs, основные Unix-утилиты типа grep, gawk и т.д., включая даже Midnight Commander. Однако о них я скажу позднее.

Установка

Для установки системы требуется винчестер со свободным (ненужным) разделом (или не разбитым дисковым пространством), какой-либо носитель с файловой системой FAT (раздел диска или, например, Zip) и три ненужные дискеты. На FAT-носитель помещается базовый файл, на дискеты, посредством rawrite (в DOS/Windows) или dd (в Unix/Linux), - образы загрузочных дискет и дискеты с данными.

Далее втыкаем первую загрузочную дискету в привод, выставляем в BIOS Setup соответствующие параметры загрузки и перезагружаемся. В процессе загрузки сначала запрашивается вторая загрузочная дискета, а затем, после перехода в графический (VGA) режим - дискета с данными. На экране появляется цианидово-зеленое (почти как в Windows) рабочее поле с единственным окном терминала, в котором запущена командная оболочка bash (точно такая же, как в Linux).

Все последующее - не просто, а очень просто. Для начала в bash запускается программа DiskManager (одноименной командой, именно таким образом, с различением регистров) и на пустом пространстве целевого диска выделяется раздел под родную файловую систему afs (разумеется, если не жалко, можно уничтожить какой-либо из существующих разделов).

Программа создания разделов, как и все в этой системе, работает в графическом режиме (текстовый режим отсутствует как класс) и весьма удобна в обращении. Нужно только помнить, что номенклатура накопителей в AtheOS, согласно доброй утвердившейся традиции, отличается от любой другой (принятой, например, в Linux, Free- или OpenBSD). Так, IDE-диски маркируются, подобно Linux'у, как hda, hdb и так далее, разделы на них - цифрами от нуля и выше.

Однако диски и прочие носители, включая zip, не имеют статических номеров (как в Linux и, по умолчанию, во FreeBSD) и именуются в порядке подключения, сначала - на основном IDE-контроллере, потом - на дополнительном, типа FastTrack, буде таковой случится в системе. То есть если мы имеем ситуацию (как это было в моем случае), когда первый винчестер подключен к первому основному IDE-разъему, Zip-привод (со вставленным носителем) - ко второму, а второй винчестер - к первому разъему RAID'а, они получат следующие имена: hda, hdb, hdc соответственно. Если удалить Zip-диск из привода и перезагрузиться, оставшиеся винты будут именоваться hda и hdb, соответственно. Это необходимо будет иметь в виду позднее, при конфигурировании загрузчика.

И еще: забегая вперед, замечу, что структура каталогов в AtheOS значительно отличается от принятых в большинстве Unix-систем. В частности, файлы устройств в каталоге /dev расписаны по подкаталогам (/dev/disk, /dev/net и т.д.). Впрочем, это похоже на Linux при задействованной файловой системе устройств (devfs). Знание этого понадобится очень скоро.

Теперь требуется собственно создать файловую систему afs, то есть отформатировать пожертвованный ей раздел. Делается это, как ни странно, командой format с указанием раздела в качестве аргумента, файловой системы и (не обязательно) метки как параметров. Полная форма команды:

$ format /dev/disk/bios/hdX/# afs [Label]

где hdX - имя дискового устройства, а # - номер раздела на нем. Обращаю ваше внимание на полный путь к файлу. Детали и примеры можно посмотреть в файле /ahteos/install.txt, с помощью обычной команды less.

Теперь в корневом (виртуальном, разумеется) каталоге следует создать две точки монтирования - для FAT-устройства с базовым файлом (поскольку, как я уже сказал, размер его всего 20 Мбайт, в качестве такового вполне подойдет zip-привод) и для afs-раздела, куда будут помещаться файлы системы. Делается это незамысловато - командой mkdir. Столь же своеобычно, командой mount, подмонтируем к ним требуемые нам разделы.

Остальное - прямо, без извилин: переходим в каталог afs-раздела (опять же привычно, командой cd) и командой tar с соответствующими опциями распаковываем туда базовый файл. Очевидно, что среди опций должна присутствовать, наряду с -x, также и -z, например:

tar -xvpzf /dos/atheos-base-0.3.0.tgz

если /dos - точка монтирования FAT-носителя. И про опцию -p не след забывать, ибо она сохраняет оригинальные атрибуты доступа и принадлежности для распаковываемых файлов.

Загрузка системы

На этом установка AtheOS закончена, осталось только обеспечить загрузку новообретенной системы. Собственно, это единственный момент, который может доставить какие-либо сложности - да и том только при нестандартном подключении накопителей.

У меня, например, больше всего времени ушло на правку конфигурационного файла загрузчика - ведь я устанавливал систему с Zip'на на диск, подключенный к RAID-контроллеру (в обычном IDE-режиме, разумеется). А вследствие описанной выше системы номенклатуры накопителей именование его все время менялось.

Но в принципе и здесь все просто. Загрузчиком системы по умолчанию является GRUB. И потому посредством стандартного текстового редактора (в качестве коего здесь выступает jed - к счастью или несчастью, но никакого vi тут нет и в помине) правится, в соответствие с собственными реалиями, его конфигурационный файл ≈ в момент инсталляции он будет по адресу /afs/boot/grub/menu.lst, где /afs - точка монтирования одноименной файловой системы.

Здесь не место в подробностях описывать принципы конфигурирования GRUB - скажу только, что в сопроводиловке содержатся все необходимые для этого сведения.

Затем система перезагружается (обязательно с помощью комбинации из трех пальцев, но никак не Reset'ом) с первой дискеты и при появлении меню GRUB'а переводится в режим его редактирования. Тут следует указать новый корневой раздел, после чего командой setup имя диска изменения записываются в MBR (или в загрузочный сектор afs-раздела, если какой-либо иной общий загрузчик уже используется). После этого, вынув дискету, можно (надеюсь) нормально загрузить AtheOS.

Впрочем, если это не удастся (например, из-за перенумерации носителей после извлечения Zip'а, как это имело место быть в моем случае) - ничего страшного. Проходим заново полный цикл загрузки (с трех дискет), в окне терминала подмонтируем существующий afs-раздел и вносим должные изменения в файл menu.lst. Размонтируем для страховки afs-раздел, после чего повторяем процедуру начальной загрузки и переинсталлируем GRUB заново. Ручаюсь, со второй попытки все придет в норму.

Интересно, что размонтирование осуществляется, как ни странно, командой unmount. Впрочем, размонтирование файловых систем автоматически происходит и при корректном (таковым здесь считается комбинация из трех пальцев) выходе из системы.

Однако положим, что все прошло без сучка и задоринки. И посмотрим, что же мы получили в итоге. А заодно - проверим справедливость авторских претензий на оригинальность.

Возможности

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

А потом перед глазами возникает тот же циановый рабочий стол с сиротливо приютившимися слева пиктограммами для запуска программ: файлового менеджера, браузера, терминала, утилиты настройки (Prefs) и пары-тройки системных мониторов (загрузки CPU и памяти). Запускаются эти программы двойным щелчком мыши; впрочем, никакие щелчки мышью на рабочем поле последствий не возымеют. Правда, поддерживается скроллинг для мышей с колесиком.

Выход из графического режима не предусмотрен. Можно только перезапустить рабочий стол или пользовательский сеанс (некоторыми вариантами команды kill). Ну а выход из системы - все теми же тремя пальцами.

Штатный набор приложений выглядит бедновато, не только количественно, но и функционально. Браузер позволяет худо-бедно просматривать html-страницы (с замечательной быстротой, но не самым удобным образом), файловый, с позволения сказать, менеджер - перемещаться по дереву каталогов (прочих функций управления файлами пока не просматривается). Конечно, из дополнительного набора можно установить Midnight Commander, но и он выглядит как-то не очень привлекательно.

К слову - установка дополнительных пакетов осуществляется в два приема: сначала пакет распаковывается из архива стандартными tar и (или) gzip, а потом регистрируется в базе данным утилитой pkgmanager (можно предположить, что в дальнейшем это планируется производить в одно касание).

В отличие от всех прочих Unix-подобных систем, дополнительные пакеты устанавливаются каждый в свой подкаталог каталога /usr, а не раскидывают свои файлы по древу многочисленных bin'ов, lib'ов и прочих man'ов. Лучше это или хуже - судить не возьмусь, но для пользователя Windows - по крайней мере привычней.

Что еще остается добавить? Утилита Prefs позволяет настроить разрешение экрана и глубину цвета, выбрать экранные шрифты (в качестве системных используются шрифты True Type) и раскладку клавиатуры - они представлены для большинства европейских языков, хотя русского среди них нет. Нет и кириллических экранных шрифтов. Однако, как ни странно, при лазании по дереву каталогов обнаруживается русская locale.

Это вселяет надежду, что кириллизация AtheOS - задача не безнадежная. Правда, формат файлов клавиатурных раскладок остался для меня непонятным, но, вероятно, при веской мотивации разобраться в этом реально. А ttf-шрифты в какой-либо кириллической кодировке можно просто переписать в соответствующий каталог.

Предварительный итог

В нынешнем своем виде AtheOS не может рассматриваться как всамделишняя ОС для практической деятельности. Впрочем, судя по номеру текущей версии, она на то и не претендует. И к тому же резонные люди утверждают, что использование ее как платформы рабочей станции программиста - вполне возможно уже сейчас.

Однако главное, что AtheOS вызывает чувство симпатии - своей быстротой и компактностью, аккуратностью интерфейса, заложенным потенциалом. Многие сравнивают ее с BeOS (встречалось даже мнение, что Курт пытался написать клон последней). Сопоставляли ее и с легендарной AmigaOS. Грешным делом, мне не довелось видеть ни той, ни другой. И потому у меня свои ассоциации - с QNX, вернее - ее графическим интерфейсом Neutrino.

Что же касается утверждения автора об отсутствии связи AtheOS с Unix что - же, он постарался, чтобы его систему нельзя было бы спутать с Linux или FreeBSD. Однако несомненно, что идеологически он следовал именно пути Unix, а не, скажем, традициям DOS или Windows.

Эпилог Post Factum

Большая часть написанного выше - ныне уже история (и, соответственно, настоящее время в тексте следует заменить на прошедшее - благо в германских языках таковых много). Разработки Курта прекратились в начале 2002 г., последнее обновление сайта датировалось осенью 2003-го. Да и то, это было сообщение о том, что его сервер находится в дауне. Правда, потом он еще долгое время был доступен. И скачать AtheOS оттуда - было вполне реально. Однако со временем и сайт прекратил свое существование: по указанному выше адресу можно видеть только сообщение о непродлении регистрации. Вот почему все сказанное выше с точки зрения грамматики следует воспринимать в прошедшем времени.

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

Так что столь интересный и потенциально многообещающий проект можно было бы считать мертвым и не возвращаться к нему (большая часть этой заметки написана в декабре 2001 г.).

Я и не вернулся бы, если б не чувство обиды - с уходом чего-то хорошего (а программный проект, прекративший развитие, можно считать ушедшим) становится как-то пусто. И я продолжал время от времени наведываться на http://www.atheos.cx в надежде увидеть какие-то подвижки на сайте. Пока вдруг по наитию не запустил слово AtheOS в паре-тройке поисковиков.

И тут в очередной раз обнаружилось, что приключения никогда не кончаются, по крайней мере - в мире Open Sources (надеюсь, вы догадались, что AtheOS распространялась по лицензии GPL?). Так вот, увядание проекта вызвало, видимо обиду не только у меня: на одном только SourceForge я обнаружил пять проектов, выводящих свою генеалогию из разработки Курта.

Правда, по настоящему действующим можно было назвать только один - Syllable (так и просится на язык наше, русское - "сила, б...я!"). Но зато это было настоящее развитие, хотя и под другим именем (причины смены названия на сайте обсуждаются, но я в них вникать не стал). А именно: текущей ее версией выступает 4.3, которая была создана в декабре 2002 г., и косметически подновляется с завидной регулярностью. Причем число портированных пакетов уже превысило полсотни (общим объемом под сотню мегабайт), и среди них не только средства разработки, но и пользовательские приложения.

Некоторое время система получения и установки Syllable была такой же, как и ее прототипа - то есть с трех загрузочных дискет (причем образ одной из них регулярно оказывался битым). Но некоторое время назад на сайте обнаружился образ загрузочного CD - работа продолжается...

Так что хочется верить - история AtheOS еще не окончена. И не исключено, что со временем она разовьется в полноценную систему, вполне достойную места на пользовательских десктопах. Ну а я в скором времени рассчитываю вернуться к этой теме и рассказать, что же привнесли в систему преемники Курта. До недавнего времени этому мешала банальная причина - отсутствие дисковода. Но теперь, с появлением iso'шки, препятствия к новой пробе отпали.

И последнее: об AtheOS с точки зрения программиста можно прочитать в статье Андрея Зубинского Таланты и кризис. Правда, я на нее наткнулся только после собственного знакомства с системой.