Создаем корневой каталог клиента

Создаем корневой каталог клиента

Создаем минимальную файловую систему, необходимую для загрузки

Копируем необходимые исполняемые файлы.

Несмотря на то, что мы подключаем все с сервера, существует минимум, который необходимо скопировать каждому клиенту. Во-первых нам необходим "init", наша система не сможет ничего запустить до запуска "init" (это автор выяснил в результате долгих и мучительных поисков ;-). Итак, во-первых, вам надо скопировать файл /sbin/init в каталог sbin вашего клиента, и для того, чтобы заработал rc.S, надо скопировать /bin/sh в каталог bin клиента. Также для того, чтобы подключить все, что надо, скопируйте /sbin/mount в каталог sbin клиента. Это минимум, предполагающий, что первая строка в вашем файле rc.S содержит команду mount -av. Однако, я советую скопировать еще немного файлов: update, ls, rm, cp и umount, чтобы у вас был минимальный набор средств в том случае, если будут проблемы с подключением. Также, если вы решите оставить включение swap до подключения файловых систем, необходимо будет скопировать программу swapon.

Так как большинство этих программ по умолчанию созданы с использованием динамических связей, вам также будет нужна большая часть каталога /lib:

bash# cp -a /lib/ld* /lib/libc.*
/lib/libcursses.* /client/hostname/lib

Лучше будет создать жесткие ссылки на эти файлы, вместо их копирования. Прочтите комментарии к этому в разделе 2.1 этого Howto.

Заметьте также, что вся приведенная выше информация предполагает, что сетевые параметры передаются ядру при загрузке. Если вы планируете использовать rarp или bootp, то вам для этого, возможно, также понадобятся соответствующие программы.

В общем случае, вам понадобится минимум файлов, который позволит сконфигурировать сеть и запустить скрипт rc.S до точки, где он подключает остальную файловую систему. Убедитесь в том, что вы проверили файлы /etc/init и rc.S, и уверены, что там нет "сюрпризов", которые потребуют доступа к другим файлам до подключения файловых систем. Если таковые есть, найдите эти файлы и либо скопируйте их тоже, либо удалите соответствующие части файлов init и rc.S.

Создаем каталог etc и настраиваем клиентов

Создаем клиентские каталоги etc

Несмотря на то, что мы создаем отдельные каталоги etc для каждого клиента, большинство файлов в них мы все-таки разделим между клиентами. Вообще, разделение файлов etc с каталогом /etc сервера - это плохая идея, поэтому я советую создать каталог /clients/etc, в котором будет информация, необходимая клиентам. Для начала просто скопируйте каталог /etc сервера в каталог /clients/etc.

Вы должны добавить в этот каталог все не-машинно-уникальные файлы конфигурации, например motd, issue , и т.п. и те файлы, которые одинаковы для всех клиентов.(т.е. inittab или fstab)

Наиболее важным изменениям подвергнется ваш каталог rc.d. Во-первых, вам надо будет изменить файл rc.inet1 для того, чтобы он соответствовал локальной настройке. Я передаю все мои сетевые параметры ядру через LILO/Loadlin, поэтому я почти все удалил из файла rc.inet1. Единственное, что я там оставил - это ifconfig и route для локальной машины. Если вы используете rarp или bootp, то придется настроить его соответственно.

Во-вторых, отредактируйте ваш файл rc.S. Сначала уберите оттуда все части, ответственные за проверку дисков fsck, так как fsck запускается при загрузке сервера. Затем найдите строки, в которых подключаются ваши файловые системы. Они должны выглядеть примерно так:

mount -avt nonfs

Ключ -t nonfs присутствует здесь потому, что обычные машины сначала запускают rc.S и только потом конфигурируют Ethernet в скрипте rc.inet1. Так как эта строка не подключает NFS-разделов, то ее можно удалить. Поменяйте ее на mount -av. Если вам надо запустить rarp/bootp для настройки сети, сделайте это в rc.S (или запустите соответствующий скрипт из rc.S) до команды mount и убедитесь в том, что ваши каталоги bin и sbin содержат все необходимые файлы.

После того, как выполнится команда mount -av, вы получите работоспособную файловую систему. Создайте общий fstab, чтобы скопировать его позднее каждому клиенту. Ваш файл fstab должен выглядеть примерно так:

Заметьте, что ключевое слово default может не работать в некоторых версиях команды mount. Вам возможно придется сменить его на rw или ro, или убрать все части default 1 1.

Также убедитесь, что ваш файл /etc/exports на сервере выглядит примерно так:

В отличие от первой строки, которая должна быть отдельна для каждого хоста, остальные строки могут содержать маску хостов для того, чтобы использоваться для всех ваших машин (например, pc*.domain - однако помните, что * подходит для всех строк, не содержащих внутри себя точку). Я предполагаю, что вы сделаете большинство каталогов только для чтения, но это зависит от вас. Флаг no_root_squash указывает на то, что пользователи root на клиентских машинах будут иметь настоящие права root-а также и на nfsd. Читайте man exports(5). Если вы хотите, чтобы пользователи на клиентских машинах могли запускать passwd, убедитесь что каталог /etc имеет разрешение на запись. Однако, я бы этого вам не советовал.

Отметьте также еще одну вещь, касающуюся файла rc.S. В дистрибутиве Slackware по умолчанию файлы /etc/issue и /etc/motd создаются заново каждый раз, как система запускается. Эта функция ДОЛЖНА быть запрещена, если эти файлы подключаются в режиме "только для чтения" с сервера, я бы посоветовал отключить эту функцию в любом случае.

И последнее. Если вы хотите, чтобы на клиентской машине был тот же набор пользователей, что и на сервере, вы должны выбрать между 1) использованием NIS (Желтые Страницы - прочтите yp-howto), и поэтому у каждого клиента будут свои файлы /etc/passwd и /etc/group, так как он получает их с NIS-сервера. 2) В большинстве случаев, обычной символьной ссылки будет достаточно. Таким образом, вам придется сделать ссылку /clients/etc/passwd на файл /etc/passwd, жесткую или символьную - какую вы предпочитаете (и не как то по-другому, так как клиенты не подключают каталог /etc сервера). Проделайте то же самое для файла /etc/group.

Создаем каталог etc клиента

В общем случае, большинство файлов в каталогах etc клиентов будут представлять из себя символьные ссылки на соответствующие файлы в каталоге /server/etc. Однако, некоторые файлы различны для каждой машины, и некоторые просто должны быть там, пока загружается ядро. Минимум файлов, который вы должны иметь в клиентском каталоге etc приведен ниже:

resolv.conf
hosts
inittab
rc.d/rc.S
fstab

В то время, как эти 5 файлов могут быть одинаковыми у всех клиентов, вы можете создать жесткие ссылки или просто скопировать их. Однако, я рекомендую создать отдельные файлы rc.S и fstab для каждого клиента. Вам также может понадобиться отдельный файл etc/HOSTNAME для каждого клиента. Я лично советую иметь отдельные rc.d-файлы для каждого клиента, так как конфигурация и оборудование могут различаться.

Для каждого клиента добавьте в fstab соответствующую строку, касающуюся swap :

Остальные файлы каталога /etc клиента могут представлять из себя или жесткие ссылки на файлы /clients/etc* или символьные ссылки на файлы каталога /server/etc (который является точкой подключения каталога /clients/etc).

Убедитесь в том, что ваша машина правильно распознает (resolve) хосты, с помощью named или через etc/hosts. Не очень плохая идея - хранить IP-адрес сервера в файле etc/hosts, нежели полагаться на распознавание (resolving). Если вы будете полагаться только на named, проблема с named не даст загрузиться вашим клиентам.



Наш баннер
Вы можете установить наш баннер на своем сайте или блоге, скопировав этот код:
RSS новости