В ядре можно включить поддержку 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 где-нибудь в сети. Если вы загружаете ядро без параметра nfsroot, то RARP-сервер должен быть NFS-сервером. Обычно так и бывает. Для этого в ядро должна быть встроена поддержка RARP.
Для включения RARP выполните команду (и впишите ее в соответствующий скрипт в каталоге /etc/rc.d:
/sbin/rarp -s <ip-адрес> <ethernet-адрес>
где
- это IP-адрес рабочей станции
- это Ethernet-адрес сетевой карты рабочей станции
Пример: /sbin/rarp -s 131.131.90.200 00:00:c0:47:10:12
Вместо цифровой формы IP-адреса можно использовать имя машины, если сервер сможет из этого имени определить IP-адрес (если настроены /etc/hosts или DNS)
Для настройки BOOTP вам надо должным образом отредактировать файл /etc/bootptab. Смотрите man bootpd(8) и booptab(5).
Я не знаю Ethernet-адреса! Как его узнать?
Загрузитесь с диска с ядром, который вы сделали, и ищите строку с параметрами обнаруженной сетевой карты. Обычно она состоит из 6 шестнадцатеричных чисел - это и есть Ethernet-адрес карты.
Загрузите на рабочей станции любую операционную систему с TCP/IP. Затем выполните ping с сервера на рабочую станцию. Ищите в кэше ARP адрес станции командой: /sbin/arp -a