Plan9
С момента изобретения 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.
- ↑ Первая реализация каскадно-объединённого монтирования в linux появилась в 1993-м.