Inferno OS Wiki
Advertisement

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

При установке сети Plan 9, файловый сервер должен быть установлен одним из первых, сразу же после установки автономного CPU/аутентификационного сервера. Установка — довольно легкая, если вы знаете что делаете и понимаете что происходит.

Заметьте также, что этот документ описывает установку автономного сервера. Новый (январь 2003 года) файловый сервер описан в документе Установка Fossil.

Здесь собрана информация из разных источников, от нескольких man-страниц, установочных инструкций 2-й версии Plan 9, документа Файловый сервер Plan 9Кена Томпсона (Ken Thompson), заметок из списка рассылки 9fans, до исходников из каталога /sys/src/fs.

Все, кто интересуется файловыми серверами могут найти много информации в online. Читайте man-страницы fs(4)fs(8) и fsconfig(8), документ Файловый сервер Plan 9 Кена Томпсона, документ Установка Plan 9 из 2-й версии системы. Архив списка рассылки 9fans находится по адресу:http://lists.cse.psu.edu/archives/9fans/.

Установка файлового сервера Plan 9 состоит из таких этапов:

  • создание файла plan9.ini, описывающего аппаратное обеспечение файлового сервера
  • создание загрузочной дискеты с ядром файлового сервера
  • настройка параметров сети и инициализация файловой системы
  • установка аутентификационной информации в nvram или загрузочной дискете
  • заполнение сервера данными и пользовательской информацией
  • загрузка системы в «нормальном» режиме

Для начала, подключите машину, которой предназначено быть файловым сервером, к сети. Эта машина будет загружать специальное ядро, и ее работой будет хранение файлов. Она не сможет работать как CPU и аутентификационный сервер. В Bell Labs, магнитный диск файлового сервера обычно используется для кеширования содержимого WORM накопителя. Тем не менее, накопитель WORM является дорогой вещью и не все могут позволить себе его. К счастью, существует опция для использования всего или части магнитного диска как «псевдо-WORM», который все еще обеспечивает использование резервных возможностей файлового сервера.

(Мною была найдена модель 80EX за $300 на ebay 9 ноября 2002 года, а также новые 80EX здесь за $6,007.75)

Файловый сервер владеет большим поддерживаемым списком устройств, чем «нормальное» ядро. Для файловой системы подходят диски и SCSI, и IDE. К сожалению, для файлового сервера доступно очень мало драйверов. Лишь 23 .c файла в каталоге /sys/src/fs/pc.

Ядро файлового сервера поддерживает сравнительно несколько SCSI контроллеров. Ограничения VGA контроллеров нормального ядра более терпимы при работе с файловым сервером, потому что файловому серверу кроме очень простой консоли отображать ничего не нужно.

После того как вы выбрали машину, создайте plan9.ini, который описывал бы ее. Кроме того, определите все данные, даже те, которые будут определятся автоматически (особенно SCSI контроллеры; к примеру, мой не был определен, и все-же чтение plan9.ini(8) помогло мне). Также, необходимо явно указать опцию размещения NVRAM раздела nvr= в plan9.ini, эта опция различается между ядром файлового сервера и нормального ядра. Опция «monitor» не требуется; если она все же была указана, то будет проигнорирована системой.

Типичные записи схожи с этой:

ether0=type=i82557
scsi0=type=ncr53c8xx
nvr=fd!0!plan9.nvr
bootfile=fd!dos!9pcfs

(Запись bootfile может использовать новый синтаксис <устройство>!<название раздела>!<файл> по сравнению с более старым <устройство>!<номер раздела>!<файл>, поскольку запись bootfile интерпретируется программой 9load, nvr используется ядром файлового сервера.)

После того как вы создали plan9.ini, следующий шаг — создание ядра файлового сервера и запись его на загрузочную дискету.

ЗАМЕЧАНИЕ: если вы получили ошибку компоновщика, которая говорит «key_setup: etherga620reset: not defined», используйте replica/pull для получения последних исходных текстов или скачайте последний образ CD. Ошибка в mkfile сейчас исправлена. В ранней версии mkfile отсутствовала зависимость etherga620.

Для создания ядра файлового сервера для ПК, загрузите автономный CPU и аутентификационный сервер. Перейдите в каталог /sys/src/fs/emelie и отредактируйте файлы 9pcfs.c (особенно FIXEDSIZE и localconfinit()) и dat.h для установки RBUFSIZE (размера блока), выполните команду mk. Результатом будет созданное новое ядро, находящиеся в файле 9pcfs. Смотрите /sys/src/fs/README и документ Томпсона за более детальной информацией. В двух словах, 16 KB блоки более быстрые, но менее пространственно-эффективны чем 4 KB блоки.

Теперь вставьте в дисковод отформатированую дискету и введите

pc/bootfloppy /dev/fd0disk /path/to/fs/plan9.ini

предполагается, что вы используете первый дисковод в системе и что команда bind -a '#f' /dev была выполнена ранее.

Далее подмонтируйте дискету и скопируйте на нее файл ядра 9pcfs.

Вот пример всего процесса, я начинаю с консоли CPU/аут сервера:

cd /usr/cross/sys
ed plan9.ini
...
cd /sys/src/fs/plan9pc
mk
(вставка дискеты в дисковод)
bind -a '#f' /dev
pc/bootfloppy /dev/fd0disk /usr/cross/sys/plan9.ini
a:
cp 9pcfs /n/a:
unmount /n/a:

В результате вы должны получить загрузочную дискету файлового сервера, готовую к работе.

Теперь извлеките дискету и вставьте ее в дисковод машины файлового сервера, загрузитесь с нее. После нескольких минут загрузки и нескольких сообщений об ошибках, система должна понять что контрольная сумма NVRAM является не корректной (что хорошо, поскольку pc/bootfloppy инициализирует NVRAM файл на дискете с блочной стоимостью в ноль) и выдать приглашение «config: ».

Сейчас вы должны настроить основные параметры системы, включая сеть и файловую систему. Эта процедура хорошо описано в man-странице fsconfig(8) и я не буду останавливаться на ее деталях. В основном, вы определяете имя сервиса, который файловый сервер идентифицирует, — используя команду service, конфигурацию IP, — используя команды ip, ipmask и ipgw, IP адрес — команда ipauth, место хранения конфигурационной информации — команда config, параметры файловой системы — команда filsys, дамп устройство — команда dump, инструкции инициализации файловой системы — команда ream, вот и все. Вам, возможно, понадобится сохранить ваш список конфигурационных команд где-нибудь, чтобы повторить их. Впрочем, команда printconf выводит все постоянные состояния (кроме команд типа ream).

Вы должны указать хотя бы одну файловую систему в main. Когда вы находитесь в конфигурационном режиме все ваши команды не выполняются, они записываются, и будут выполнены только после выхода из конфигурационного режима. Чтобы выйти из этого режима наберите end. Если вы допустили ошибку, то можете безопасно перезагрузить машину и исправить ее перед выполнением end. Наконец, команда config крадет блок из устройства и прячет в нем всю конфигурационную информацию. Тем не менее, если этот блок в самом начале устройства (помните, устройство может быть разделом в этом контексте), будет безопаснее чтобы файловая система не использовала первый блок.

Например, вот команды, которые я вводил для настройки моего файлового сервера, использующего IDE диск как «псевдо-WORM» и SCSI диск для кеша.

service lance
ip 192.168.2.12
ipgw 192.168.2.1
ipmask 255.255.255.0
ipauth 192.168.2.11
config w0
filsys main cw0fh0
filsys dump o
ream main
end

Теперь файловый сервер должен проинициализировать диски и загрузится. Если система падает, это вероятно из-за неправильной спецификации аппаратных средств в plan9.ini или конфигурации. Система выдаст panic если она не сможет найти диски. Проверьте вашу конфигурацию и попробуйте загрузиться вновь.

Если у вас есть дополнительный магнитный диск, создайте «другую» файловую систему на файловом сервере для хранения чего-либо, не занимая пространство WORM. Например, свой диск я использую для хранения архивов, которые я скопировал из web, таким образом возможно восстановление данных при необходимости, но для этого нужно хранить данные локально, по крайней мере временно.

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

На данном этапе, файловый сервер находится в специальном административном режиме, который позволяет клиентам обходить нормальную проверку разрешений, а также позволяет им модифицировать собственность на файлы (что невозможно когда система находится в «нормальном» режиме). Система будет удостоверять пользователей через сервер аутентификации и она должна знать какие пользователи существуют. Теперь у нас возникла проблема курицы и яйца; система хочет удостоверять пользователей, но она не имеет файла /adm/users для того, чтобы знать какие пользователи вообще существуют. Тем не менее, мы не можем подмонтировать новый файловый сервер, чтобы добавить файл /adm/users. К счастью, у нас есть команда users default для создания основного набора пользователей, достаточного для установки системы на новую машину. Введите ее сейчас:

users default

А теперь вернитесь к автономному CPU и аутентификационному серверу, подмонтируйте новую файловую систему и загрузите из нее дистрибутив. Когда вы устанавливали автономный CPU и аутентификационный сервер, дистрибутив системы был загружен на локальный диск и сейчас он находится в каталоге /dist. Чтобы загрузить дистрибутив на новый файловый сервер, используйте wrap/inst с опциями -ovr.

Если ваш автономный CPU/аутентификационный сервер загружается, используя ключ пользователя, которого не существует в наборе по-умолчанию (скажем,tom), тогда вам следует создать этого пользователя посредством команды newuser перед загрузкой дистрибутива:

newuser tom

(даже если файловый сервер сейчас не может записать /adm/users, newuser, как оказывается, создает нового пользователя в своей внутренней таблице).

Предположим, что вы использовали ту же установку, что и я, тогда выполните следующие команды в консоли автономного CPU/аут сервера:

srv il!lance
mount -c /srv/il!lance /n/lance
cd /dist
wrap/inst -ovr /n/lance plan9.9gz
(используйте  wrap/inst для любых других пакетов, напр., TeX)

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

Файлы /rc/bin/cpurc, /rc/bin/termrc, и /lib/ndb/local являются хорошими кандидатами для настройки:

cd /n/lance/rc/bin
ed termrc
...
ed cpurc
...
cd /n/lance/lib/ndb
ed local
...

unmount /n/lance

После того, как система установлена и административные файлы настроены, можете приступать к добавлению новых пользователей посредством командыnewuser в консоли файлового сервера. Смотрите fs(8) за более детальной информацией о сведениях пользователей и управления группой. Если вы создали пользователя, тогда вам следует также создать его почтовый ящик, посредством команды create.

Вот пример создания пользователя (cross):

newuser cross
newuser sys +cross
create /mail/box/cross cross upas 775 d
create /mail/box/cross/mbox cross upas 662 al

Первая строка создает пользователя cross и добавляет его в /adm/users. Вторая строка добавляет его в группу sys. Третья и четвертая строки создают почтовый ящик для cross. (За дополнительной информацией смотрите mail(1) и fs(8).)

Это почти все, что вам нужно. Вы можете продолжать работать с файловым сервером или же перезагрузить сервер посредством команды halt.

Теперь система загружается в «нормальном» режиме без загрузочной дискеты, где обход разрешений отключен. Поздравляю, ваш файловый сервер теперь полностью установлен и готов к работе.

Если сейчас, когда у вас есть файловый сервер, вы хотите сделать автономный CPU/аутентификационный сервер бездисковым, сделайте так, чтобы он загружался из файлового сервера. Вы можете это сделать, используя загрузочную дискету с plan9.ini и ядром CPU сервера. (Конечно вы можете использовать также и жесткий диск для хранения этих файлов.) Вот мой plan9.ini, который я использую для загрузки бездискового CPU сервера:

bootfile=sdC0!9fat!9pcdisk
bootargs=il -g 212.128.4.1 ether /net/ether0 212.128.4.205 255.255.255.0
fs=212.128.4.206
auth=212.128.4.205

Как видите, вы можете использовать bootargs для настройки вашего шлюза, ip адреса, ip маски, ip адреса файлового сервера и ip адреса CPU сервера. К примеру, последний IP адрес является адресом CPU сервера.

После того, как я получил бездисковый CPU сервер, у меня перестал работать auth/changuser, поскольку bootes не имеет прав на запись файлов /adm/keys*или /adm/netkeys*. Я удалил эти файлы (в любом случае они были нулевого размера) и создал новые, в консоли файлового сервера:

remove /adm/keys
remove /adm/keys.who
remove /adm/netkeys
remove /adm/netkeys.who
create /adm/keys bootes adm 660
create /adm/keys.who bootes adm 660
create /adm/netkeys bootes adm 660
create /adm/netkeys.who bootes adm 660

Я не уверен, что это хорошая политика, но зато работает.

Copyright © 2003 Перевод Андрей С. Кухар. Последняя модификация 22.08.2003

Advertisement