С момента изобретения UNIX, программисты Bell Labs не сидели сложа руки, и одним из плодов их работы стала распределенная операционная система Plan 9. Plan 9 зародился в конце 1980 годов, как новая система призванная решить проблемы UNIX которые разработчики посчитали «слишком глубокими для того, чтобы исправлять». Эта новая операционная система несла в себе несколько инноваций, оказавших влияние на последующие системы. Но до недавнего времени Plan 9 находился под коммерческой лицензией, связывавшей пользователей.

Bell Labs и небольшое сообщество программистов продолжали улучшать и развивать Plan 9. Лицензия смягчалась из года в год, и в 2003 году Plan 9 был наконец-то выпущен под свободной лицензией. Коммерческая ветвь, известная как «Inferno», теперь также доступна под бесплатной лицензией. Давайте взглянем на «4-ю редакцию» Plan 9 и посмотрим, что же в ней такого привлекательного?


Начало

править

Дистрибутив занимает 65 Мб запакованного ISO-образа, который можно использовать как live-CD. Если у вас возникли проблемы во время загрузки с CD, вы можете проверить на сайте генератор загрузочных флоппи-дисков для подходящего аппаратного обеспечения. Инсталляция весьма спартанская, но тем не менее хорошо организованная и более-менее дуракоустойчивая (Рис. 1). Инсталлятор проверяет текущий статус после каждого шага. Графика работает для видеокарт с поддержкой Vesa. Если вы предпочитаете не экпериментировать с полной инсталляцией прямо сейчас, можете поиграться в виртуальной машине. Смотрите раздел «Виртуальный Plan 9» для инструкций. Если вы заинтересовались, вы также можете попробовать установить user-space набор важнейших инструментов [3].

«Более последователен, чем UNIX»

править

Базовая концепция Plan 9 в том, что это — распределенная операционная система не похожая на UNIX, где сетевая функциональность расширена такими механизмами, как удаленный вход в систему и сетевая файловая система. В Plan 9 сетевая поддержка встроена в функционал операционной системы. Например, все ресурсы теоретически могут быть прозрачно распределены в сети Plan 9. Система скрывает от пользователя, что ресурсы не являются локальными. Plan 9 поддерживает не только файловые серверы, но также и серверы авторизации и CPU-серверы. Возможно использовать Plan 9 для создания грид-систем, таких как 9grid.


Plan 9 основан на парадигме UNIX о том, что «все является файлом». Опираясь на огромную коллекцию дополнений, Unix впитывал в себя все больше изменений, которые шли вразрез с исходными принципами. Примером этого является ужасный механизм интерфейса сокетов, используемый для функций чтения и записи и отличный от обычных файлов. Plan 9 кладет этому конец, предоставляя интерфейсы файло-ориентированной системы, например, /net/tcp и /net/udp сетевых интерфейсов. Большинство системных служб следуют серверному принципу и взаимодействуют через файл-ориентированные интерфейсы. В Plan 9 нет обычной программы FTP. Вместо этого ftpfs монтирует FTP-сервер в ваш каталог /n/ftp. Сервер 9660fs ответственен за монтирование дисков CD. Plan 9 был первой операционной системой, осуществившей поддержку файло-ориентированной системы управления процессами proc. В Plan 9 основную сетевую функциональность осуществляет протокол 9P, в состав которого входит около 30 управляющий сообщений. Реализация 9P в Линукс была добавлена в основное ядро начиная с версии 2.6.14, этим были устранены любые препятствия во взаимодействии Linux и Plan 9.

Пространство имен

править

Plan 9, взяв файл-ориентированный дизайн, продвинулся дальше с концепцией пространства имен. Традиционно UNIX управлял своими ресурсами в едином пространстве имен, в котором /dev/tty1 всегда представлял собой один и тот же терминал. В противоположность этому, приложения Plan 9 имеют свое собственное пространство имен, так что /dev/window будет указывать на собственное окно приложения. Другая важная особенность — это монтирование с объединением. Это дает возможность упростить управление ресурсами, такими как файлы и каталоги, путем монтирования нескольких каталогов в единую точку. Это делает возможным монтирование каталогов с исполняемыми файлами, расположенными на сервере, в локальный каталог /bin, что делает ненужным трюки с переменной PATH. Линукс совсем недавно позаимствовал такой дизайн перекрывающихся файловых систем Union-FS[1].

Графика и Rio

править

В противоположность X11 в UNIX, Plan 9 напрямую интегрирован с графическим окружением, и это чрезвычайно упрощенная модель. Лежащая в основе модель взята из системы Oberon Никлауса Вирта, на которой был сделан интерфейс системы Xerox Cedar. Десктоп Plan 9 предоставляет простую программную модель с файло-ориентированным интерфейсом и элементарными операциями. Например, простое cat /dev/screen > output создает снимок экрана приложения. Однако реализация графической подсистемы Rio более сложна, она включает в себя параллельные процессы и нити которые взаимно обращаются друг к другу. Rio может показаться отклонением от правил, модель строчно-ориентированного терминала, которая отбрасывает в прошлые дни, когда принтеры действительно служили для отображения пользовательского ввода. Линукс также несет это строчно-ориентированное наследие в виде многочисленных терминальных приложений таких как Xterm и консоль KDE. Это позволяет совершать ввод в любой позиции окна: пользователь просто выбирает команду и пользуется мышью для выполнения. Как продвинутая оконная система, Rio создает интенсивную нагрузку на все доступные кнопки мыши. Программа Acme — это необычная комбинация оболочки, редактора и оконной системы. Acme следует принципу, которого мы коснулись, но добавляет элементарные меню в терминальные окна и перенаправляет вывод в новые под-окна (Рис. 2). В X11 реализация Acme продублирована Wily, основанного на библиотеке 9lib [6]. Несмотря на почтенный возраст, Rio может обслуживать многоязычные программы, поскольку основан на наборе символов Unicode. Plan 9 использует кодировку UTF-8, созданную командой программистов Plan 9 под руководством Роба Пайка.

Безопасность

править

В Plan 9 не существует супер-пользователя root, и поэтому там нет SUID-программ, служащих причиной бесконечных проблем с безопасностью в UNIX. Следуя подходу, подобному Kerberos, распределенная система Plan 9 не передает по сети пароли, используя вместо этого зашифрованные тикеты. Один из способов создания пользовательского аккаунта - запуск файлового сервера fossil путем набора con /srv/fscons и ввода команды uname user user. Новые пользователи могут инициализировать свое окружение при первом логине командой /sys/lib/newuser. Конечно, в Plan 9 есть средства разработчика для языка C. Компилятор для архитектуры x86 назван 8с, линкер 8l, а программа-сборщик mk. Для того, чтобы скомпилировать новое ядро этими инструментами, администратор системы переходит в каталог /sys/src/9/pc и редактирует соответствующий конфигурационный файл, который называется по-разному в зависимости от окружения: в простейшем случае это pc; pcauth в случае сервера авторизации; pcf в случае fossil сервера и т. д. После конфигурирования ядра администратор может его скомпилировать и установить, дав команду mk CONF=pcf install. Ядро находится в загрузочном разделе 9fat, доступ к которой может быть получен командой 9fat:. Там же находится и конфигурационный файл plan9.ini.

  1. Первая реализация каскадно-объединённого монтирования в linux появилась в 1993-м.