Настройка сервера
Сборка ядра
В ядре можно включить поддержку RARP . Вам необходимо будет сделать это при
загрузке станции без параметров, передаваемых ядру. С другой стороны, он
вам не нужен, если клиент не находится в одной подсети с сервером.
Ядро для рабочей станции должно содержать, как минимум, следующее:
Встроенную в ядро поддержку файловой системы NFS. (Не обязательно
встраивать в ядро поддержку файловой системы ext2 - будет достаточно
модуля)
Должен быть включен параметр "Корневая NFS"
Ethernet-драйвер для сетевой платы рабочей станции должен быть встроен в ядро.
В зависимости от вашей конфигурации, вам, возможно, нужно будет встроить
поддержку RARP или
BOOTBP для корневой NFS. (Я имею в виду вопросы,
задаваемые make config после вопроса о поддержке файловой системы NFS)
Если станция будет загружаться без параметров ядра, то вам также надо
настроить корневое устройство 0:255. Создайте несуществующее устройство
командой mknod /dev/nfsroot b 0 255. После создания этого файла устройства,
вы можете указать на загрузочное устройство с ядром командой rdev <образ-ядра> /dev/nfsroot.
Создание корневой файловой системы
Копирование файловой системы
Внимание: несмотря на то, что этот способ может подойти вам, он очень
непродуктивен и неэффективен. Чтобы настроить корневую файловую систему для
клиентов, читайте "Мини-HOWTO: Корневые файловые системы NFS клиентов на
сервере
" автора Ofer Maor <ofer@hadar.co.il>.
После того, как вы решите, куда поместить корневое дерево, создайте его
(например) командой mkdir -p <каталог>,
а затем запустите команду tar cClf / - | tar xpCf
<каталог> -.
Если вы собираетесь загружать ваше ядро без LILO, тогда корневой каталог
должен быть следующим: /tftpboot/<IP-address>. Если вас такой каталог
не устраивает, вы можете изменить его в основном файле Makefile исходных
текстов ядра; найдите там строку вида: NFS_ROOT = NFS_ROOT = -DNFS_ROOT="\"/tftpboot/%s\"" После
изменения этой строки пересоберите ядро.
Изменения в корневой файловой системе
Удалите ненужные файлы и проверьте скрипты в каталоге /etc/rc.d. Некоторые
важные замечания:
Самая важная вещь - настройка eth0. Рабочая станция должна иметь, по
крайней мере, частично настроенный интерфейс eth0. Устанавливать IP-адрес
рабочей станции равным IP-адресу сервера - не самое умное решение. (Так
однажды случилось с автором в его ранних попытках)
Второй пункт, на который нужно обратить внимание - это файл /etc/fstab. Там
нужно указать все необходимые настройки файловых систем nfs.
ВНИМАНИЕ: Не путайте корневые файловые системы сервера и рабочей станции.
(Я исправил файл rc.inet1 сервера и долго удивлялся, почему рабочая станция
все еще не работает)
Экспортирование файловой системы
Экспортируйте корневой каталог сервера рабочей станции. Смотрите
exports(5). Скорее всего, после этого вам придется перезапустить
nfsd/mountd. В дистрибутиве RedHat это можно просто проделать командами
/etc/rc.d/init.d/nfs stop ; /etc/rc.d/init.d/nfs start .
Настройка RARP
Настройте RARP где-нибудь в сети. Если вы загружаете ядро без параметра
nfsroot, то RARP-сервер должен быть NFS-сервером. Обычно так и бывает. Для
этого в ядро должна быть встроена поддержка RARP.
Для включения RARP выполните команду (и впишите ее в соответствующий скрипт
в каталоге /etc/rc.d:
/sbin/rarp -s <ip-адрес> <ethernet-адрес>
где
- ip-адрес
- это IP-адрес рабочей станции
- ethernet-адрес
- это Ethernet-адрес сетевой карты рабочей станции
Пример: /sbin/rarp -s 131.131.90.200 00:00:c0:47:10:12
Вместо цифровой формы IP-адреса можно использовать имя машины, если сервер
сможет из этого имени определить IP-адрес (если настроены /etc/hosts или
DNS)
Настройки BOOTP
Для настройки BOOTP вам надо должным образом отредактировать файл
/etc/bootptab. Смотрите man bootpd(8) и booptab(5).
Выяснение Ethernet-адреса
Я не знаю Ethernet-адреса! Как его узнать?
Загрузитесь с диска с ядром, который вы сделали, и ищите строку с
параметрами обнаруженной сетевой карты. Обычно она состоит из 6
шестнадцатеричных чисел - это и есть Ethernet-адрес карты.
Загрузите на рабочей станции любую операционную систему с TCP/IP. Затем
выполните ping с сервера на рабочую станцию. Ищите в кэше ARP адрес станции
командой: /sbin/arp -a