README

Брайан В. Керниган
bwk@research.bell-labs.com

Задача этого документа — помочь вам начать использовать операционную систему Plan 9. Он написан обычным пользователем Plan 9, который ни коим образом не имеет отношения к группе ее разработчиков. Документ нацелен на аудиторию пользователей с Unix прошлым.

Приступаем

Предполагается: (1) что вы или кто-нибудь, кому вы доверяете, прочитал, разобрался и выполнил процедуру установки Plan 9; (2) что вы хотя бы просмотрели обзорный документ Plan 9 от Bell Labs, в котором дается общее описание Plan 9. Также много полезных объяснений и примеров содержит документ Использование пространства имен в Plan 9. Также предполагается, что не далеко от вас находится первый том руководства по Plan 9, так как вам потребуется читать man-страницы команд, когда их названия будут появляться здесь.

Ваши действия после включения терминала зависят от того, как установлена ваша система Plan 9; детали различаются для автономной системы и терминала, соединенного с файловым сервером и CPU сервером. Далее речь идет как раз об этом.

Также как .profile выполняется оболочкой в Unix системах, когда вы начинаете сеанс работы, файл lib/profile выполняется оболочкой в Plan 9. Для создания пользовательского эккаунта используется команда newuser, которая создает домашний каталог $home, а в нем несколько подкаталогов (bin, bin/rc, lib и tmp), затем устанавливает файл профиля lib/profile. Последний выглядит примерно вот так:

Большинство интересных особенностей Plan 9 представлено именно в этом файле.

Оконная система 8½

Оконная система Plan 9 называется 8½; выбор terminal в операторе case профиля запускает 8½ командой

8½ обеспечивает меньшую «гибкость» и несомненно значительно меньшие возможности, чем xterm в X терминалах, но я, все же, предпочитаю использовать именно ее.

Оконная система обрабатывает весь текст на экране одинаково; с помощью мыши вы можете редактировать все что видите, у вас есть возможность редактировать и повторно использовать введенные команды, перенаправлять вывод или ввод программы и вновь использовать их, и т.п. Эта способность редактирования предыдущих команд освобождает от потребности их повторного ввода, и вам никогда не захочется вернуться назад к чему-нибудь вроде xterm.

8½ может работать рекурсивно: вы создаете новое окно, в нем запускаете 8½, и все что вы там делаете будет изолировано от среды. В системе 8½ нет аналога управлению виртуальными окнами, к примеру, как у VTWM и его огромного множества (или даже нескольких) иконок, но вы можете перемещать окно даже за пределы экрана, скрывать его, а затем вызывать из всплывающего меню, что само по себе является свободным эквивалентом иконизации.

В 8½ есть нечто вроде автозагрузки, т.е. вы даете запрос запускать файл с командами во время загрузки системы; большинство пользователей вставляют свои запросы в профиль:

Это свойство может быть полезным при установке часто используемых окон:

где x0,y0 и x1,y1 — координаты окна. Window создает окно в указанном месте, а затем запускает в нем команду. Для непосредственной вставки команд в файл может использоваться программа wloc, которая выводит имена и размещения всех окон в правильном формате. Нужным образом разместите окна программ, после этого запустите wloc и скопируйте (snarf) ее вывод.

Команды

Большинство стандартных команд Unix существуют в почти той же форме в Plan 9, это команды: cat, ls, cd, pwd, cp, mv, diff, grep и awk. Вы заметите незначительные различия в их поведении, но в большинстве случаев вам не стоит об этом беспокоиться.

Оболочка rc

Одной из главных программ любой операционной системы является оболочка, в Plan 9 используется оболочка под названием rc. Для запуска команд интерактивно она почти эквивалентна оболочкам Bourne или Korn, так что метасимволы вроде * и ? — ведут себя предсказуемо, простые перенаправления >, >> и | — также функционально одинаковы. Более простое использование кавычек: все заключается в одинарные кавычки; двойные кавычки и обратная косая черта не имеют специального назначения. Что увидеть одну кавычку, заключенную в кавычки, удвойте ее:

В программировании, rc имеет мало общего с sh, что досадно. В частности, у них различаются управляющие структуры if и for.

Все сценарии должны начинаться со строки:

Установка переменных окружения:

при чем кавычки могут опускаться, если значение не содержит пробелов. Переменные окружения доступны как $var: определенные переменные инициализируются в начале работы, включая user (ваше имя), home (ваш домашний каталог), и service, принимающая значение terminal, если вы работаете на терминале и CPU, если вы работаете на CPU сервере.

Каталоги и пути поиска

Одной из объединяющих идей в Plan 9 считается доступ ко всем ресурсам как к файловым системам. Основой ее является управление пространством имен, так что у вас появляется возможность выборки и размещения ресурсов, необходимых для использования.

Пространство имен управляется командами bind и mount. В частности, команда

в профиле связывает каталог $home/bin/rc с /bin, формируя союзный каталог. (Точнее, она делает /bin псевдонимом для этого союза.) Кроме текущего каталога, оболочка выполняет поиск программ только в /bin, реально же она проходит по всем каталогам, которые были соединены вместе. По соглашению, ваши собственные сценарии оболочки находятся в $home/bin/rc.

Когда вы начинаете сеанс роботы, несколько каталогов связываются с /bin, включая /rc/bin, содержащий сценарии оболочки, и /$cputype/bin, содержащий двоичные файлы для вашего типа процессора. Переменная cputype содержит информацию о типе процессора, который вы используете, типично это 386, sparc, mips или 68020. Когда вы запускаете программу вроде ls, производится поиск версии для вашего процессора в /bin и ее выполнение. Если вы впоследствии выполните команду cpu для доступа к CPU серверу, в этом процессе и запущенных им, переменная cputype будет содержать тип процессора CPU сервера и команда ls (вновь из /bin), которую вы запустите там, будет правильным двоичным файлом для этого процессора.

Механизм союзных каталогов заменяет путь поиска (переменная PATH) стандартных оболочек Unix. Насколько вы поняли, все исполняемые программы находятся в /bin. Введите

чтобы увидеть список имен всех доступных исполняемых программ.

Интересные файловые системы

Одной из главных идей Plan 9 является представление системных ресурсов и служб в виде файлов в иерархии каталогов. Она идет от Unix и еще лучше разработана в Linux, но Plan 9 заходит дальше всех. Файлами выглядят не только устройства, но и такие объекты, как серверы имен Internet.

Если вы посмотрите в каталог /dev, то увидите знакомые имена. К примеру, попробуйте выполнить

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

Вы заметите, что файлы типа cons и mouse появляются по несколько раз, это происходит из-за того что /dev является союзным каталогом и в нем присутствуют многочисленные совпадения одинаковых файлов. Первый /dev/mouse имеет отношение к текущему окну, следующий — к включаемому окну (вероятно, это весь экран). Введите

а затем попробуйте передвигать мышь внутри и вне текущего окна.

Окружение оболочки хранится в каталоге под названием /env; каждая переменная окружения хранится в файле. К примеру, введите

Запущенные процессы находятся в /proc; каждый процесс представляет собой каталог, а каждый файл такого каталога доступен процессу. Например, файл status содержит текстовую информацию о статусе процесса. Введите

чтобы получить список запущенных процессов.

Вы также найдете интересным каталог /net; все сетевые соединения управляются как файловые системы. Во всех этих случаях, сервис представляет собой интерфейс файловой системы для клиентов, хотя за его реализацией стоит отнюдь не традиционная файловая система.

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

Шрифты

Один аспект 8½, который вы можете изменить, — это шрифт отображения текста. В системе существует шрифт по-умолчанию, но обычно переменная font устанавливается явно в профиле:

Шрифт euro.9.font — это набор почти всех символов европейских языков, включая кириллицу, греческий язык и группу специальных символов. Существуют также другие шрифты, которые включают восточные языки и даже ряд размеров.

Plan 9 использует символьный набор Unicode, который позволяет системе и ряду программ комфортабельно работать с очень большим символьным набором. (Сравните 16 bit символов и 64 KB.) Так что если вы желаете редактировать файлы с языками, в которых используется больше символов, чем может позволить ASCII, или запускать grep или awk для них, тогда Unicode — это то, что вам нужно. У вас могут возникнуть проблемы при печати таких символов на стандартных принтерах, но на экране они выглядят отменно.

Редактирование

Стандартный текстовый редактор Plan 9 называется sam, его характеристики: хорош при редактировании нескольких файлов; обеспечивает синтаксис регулярных выражений, схожий с таковым в ed (который, к слову, также в наличии); возможность копирования и вставки текста между окнами 8½. Мышиные идиомы sam и 8½ одинаковые. Если есть сетевое соединение, он может редактировать файлы на других системах.

Между прочим, регулярные выражения в Plan 9 были приведены в порядок — все программы кроме rc поддерживают одинаковые регулярные выражения, которые достаточно близки к таковым в egrep Unix систем.

CPU сервер

В мире Plan 9 интерактивные программы вроде редакторов запускаются на терминале, а вычислительные программы вроде компиляторов — на CPU сервере, который работает быстрее и имеет более высокую полосу пропускания к файловому серверу. Команда cpu соединяет вас с CPU сервером и ваши вычисления выполняются быстрее, при этом все остальное остается без изменений. Удаленный вход в систему (не сохраняющий пространство имен, с которым вы работаете) и доступ к сетевой файловой системе (не изменяющий процессор) достаточно сильно отличаются. Строка

в профиле производит наследование CPU сервером всех ваших устройств (включая мышь, клавиатуру и экран), ассоциированных с вашим терминалом, так что они продолжают работать в окне CPU.

Соединение с Unix системами

Вероятно ваша система Plan 9 будет соединена какой-нибудь сетью с Unix системой (или системами). Команда con соединяет Plan 9 с другой системой (типично это Unix); команда rx предназначена для выполнения одной команды на другой машине (нечто вроде rsh в Unix).

Если вы взаимодействуете с Unix системой, есть возможность подмонтировать ее файловую систему в пространство имен Plan 9, таким образом файлы Unix стороны станут доступными в Plan 9. Команда

устанавливает соединение и монтирует файлы; после ее выполнения корневая файловая система объекта будет находится в каталоге /n/машина.

CPU серверы Plan 9 отвечают на запросы FTP, rlogin и telnet. Если вы желаете установить свои собственные привилегии доступа, тогда вам необходимо отвечать на вызовы, используя ключ SecureNet или эквивалентный ему; в противном случае, пользователь none получит большие привилегии, достаточные для доступа ко многим доступным глобально серверам и базам данных (см. раздел 7 руководства). Подобные ограничения присутствуют и когда вы получаете доступ к файловым серверам Plan 9 через NFS; в этом случае программа 9auth будет вести диалог вызов/ответ.

Если ваша система Plan 9 делит диск с MS-DOS, что возможно для архитектуры PC, то вы можете получить доступ к файловой системе DOS через каталог /n/c:, и другим дискам через /n/a:, и т.п. Это удобный способ получения информации в или из мира PC.

Резервирование и восстановление

Обычно состояние файловой системы Plan 9 подлежит записи каждый день (или около того); в нашей системе, оно сохраняется на оптическом диске. Если ваша система должным образом оснащена, то у вас есть возможность запуска другого сервиса, который делал бы доступным прошлое состояние файловой системы (только для чтения). К примеру, если вы дадите команду

то она подмонтирует эту файловую систему в каталог /n/dump. Таким образом, вы можете вернуться (командой cd) в прошлое:

При этом вы переместитесь в ваш домашний каталог, каким он был 1 апреля 1995 года. Это файловая система настоящая, так что все обычные команды работают нормально; вы можете сравнивать (команда diff) файлы, копировать старые версии в настоящее. В Plan 9 нет программ ни резервирования, ни восстановления, механизм взятия дампов включает и полностью заменяет их.

Программирование в Plan 9

В основном программирование в Plan 9 выполняется по стандарту ANSI C с поддержкой обычных инструментальных средств типа YACC. Программа make была полностью вытеснена mk, и, также как с оболочкой, требуется время, чтобы привыкнуть к ней.

Для каждого поддерживаемого типа процессора существует компилятор C (в названии используется одна буквенная мнемоника), а также версия, которая может выполняться на любом типе процессора. Mkfile нормально скрывает эти данные, каталог /sys/src/cmd содержит примеры, которые вы легко можете адаптировать.

Хотя существует поддержка ANSI C, библиотеки Plan 9 написаны не на нем и стандартные заголовочные файлы ANSI отсутствуют в системе. Компиляция программ в Plan 9 очень отличается от таковой в Unix, так что перед началом этой процедуры обязательно прочитайте документ «Как использовать компилятор Plan 9 C» (How to Use the Plan 9 C Compiler, /sys/doc/comp.ps).

Если вам нужно импортировать или экспортировать программу на языке C, то вам придется использовать среду ANSI/POSIX («APE»), которая и предназначена для этих целей. Она включает полный набор POSIX-совместимых библиотек и некоторые инструментальные средства POSIX. Драйвер компилятора называется pcc. Команда

связывает нужные файлы и запускает POSIX-совместимую оболочку.

Хотя эти средства POSIX и полезны для обмена программ с внешним миром, чтобы быть более продуктивными используйте (по возможности) исконные инструментальные средства Plan 9.

Выводы

Plan 9 это не Unix. Если вы думаете что это Unix, то часто будете удивляться (с отвисшей челюстью и широко открытыми удивленными глазами — прим пер.), потому что какие-то вещи здесь не доступны или работают совсем по-другому. Если же вы будете думать о ней как о новой операционной системе, то поймете, что многое работает очень гладко, и здесь есть поистине хорошие идеи, которые стоит использовать.

Copyright © 1995 Lucent Technologies. All rights reserved.
Copyright © 2003 Перевод Андрей С. Кухар.