Предупреждение :
Этот документ находится в разработке, и его пока не следует считать официальным.
|
Организация сетевой загрузки с системы Gentoo Linux
1.
Введение
Примечание:
В настоящее время этот документ ориентирован только на системы типа SPARC, и
ожидается, что установка сервера сетевой загрузки будет происходить на уже
существующей машине Gentoo Linux.
|
Этот документ описывает, как установить среду сетевой загрузки для компьютеров
на базе Sun Microsystems SPARC или UltraSPARC. Он предполагает, что имеется
работающий компьютер с установленной системой Gentoo Linux для использования в
качестве сервера сетевой загрузки.
Оба компьютера, сервер сетевой загрузки и клиент сетевой загрузки, должны быть
расположены в одной подсети, т.к. протокол ARP в большинстве не пересылается
между двумя различными подсетями.
Здесь мы приводим общий обзор того, что происходит во время сетевой загрузки;
-
Машина-клиент посылает перевернутый запрос ARP (RARP) чтобы получить IP-адрес.
-
Машина-сервер возвращает ответ машине клиенту с IP-адресом.
-
Машина-клиент пытается загрузить загрузочный образ с сервера RARP, используя
протокол tftp.
-
Как только образ загружен, клиент сетевой загрузки загружает образ.
На основании этого обзора нам необходимо будет установить программное
обеспечение для демонов Reverse ARP и tftp.
2.
Установка и настройка программного обеспечения
Демон Reverse ARP
В настоящее время существуют 2 демона reverse ARP. Это net-misc/iputils
(установленного как часть системного профиля) и net-misc/rarpd.
Примечание:
Установка net-misc/rarpd перезапишет rarpd и rarpd manpage, установленных вместе
с net-misc/iputils
|
Настройка общих rarpd элементов: /etc/ethers
Независимо от того, какой rarpd вы выберете для использования, нужно будет
настроить файл /etc/ethers. Этот файл указывает на то,
каким хостам rarpd должен отвечать на запрос и какому адресу отвечать.
Форматом файла /etc/ethers является MAC адрес сетевой карты
сетевой загрузки сервера и имя хоста. Эти два параметра разделены пробелом, и
каждая запись должна быть на отдельной строке. Следующий пример написан для
хоста, названного sparc-netboot.gentoo.org:
Листинг 2.1: Пример файла /etc/ethers |
08:00:20:77:1f:3e sparc-netboot.gentoo.org
|
Примечание:
Если данный MAC адрес начинается с нуля или является 0, можно этот нуль не
указывать (т.е. 08:00:20:77:1f:3e превратится в 8:0:20:77:1f:3e).
|
Если вы добавляете хосты в файл /etc/ethers, перезапускать сервис
rarpd не нужно, т.к. файл проверяется каждый раз при получении запроса.
Разрешение хостов: /etc/hosts
Так как каждая запись в файле /etc/ethers имеет имя хоста, сервер
сетевой загрузки должен иметь возможность преобразовать имя хоста в его IP-адрес.
Это может быть выполнено 2 путями: с помощью файла /etc/hosts или
с помощью имени сервера используемого сервером сетевой загрузки.
Записи в файле /etc/hosts для разрешения имени хоста выглядят
аналогично тем что уже скорее всего существуют с момента установки Gentoo на
сервер сетевой загрузки. Для хоста sparc-netboot.gentoo.org используемого в
нашем примере, предположим, что его IP-адрес: 10.0.1.15. Соответственно, записи
в файле /etc/hosts будут выглядеть так:
Листинг 2.2: Файл /etc/hosts |
10.0.1.15 sparc-netboot.gentoo.org
|
Примечание:
В зависимости от среды, вам, возможно, потребуется проконсультироваться с
сетевым администратором, чтобы получить соответствующий IP-адрес или адреса для
сетевой загрузки хоста.
|
Если вы воспользуетесь именем сервера, тогда администратор сервера должен
будет добавить запись для имени хоста, в нашем случае sparc-netboot.gentoo.org,
чтобы тот указывал на соответствующий IP-адрес. Пожалуйста, проконсультируйтесь
со своим администратором сервера DNS и/или документацией по программному
обеспечению DNS сервера о том, как добавить такую запись.
Примечание:
Если файл /etc/hosts и имя сервера имеют запись для сетевой
загрузки хоста, файл /etc/hosts будет использоваться первым (при
условии что порядок файла /etc/nsswitch.conf не был изменен с того,
который принят по умолчанию).
|
Настройка net-misc/iputils rarpd
В первую очередь, необходимо определить параметры, которые будет
использовать rarpd. Мы рассмотрим только те параметры, которые дадут
возможность запустить демона rarpd. Так как в настоящее время не существует
сценария init.d для версии net-misc/iputils демона rarpd, должна быть добавлена
строка в файл /etc/conf.d/local.start если вы хотите запускать
сервис rarpd во время загрузки. Приведем пример такой строки:
Листинг 2.3: Файл /etc/conf.d/local.start |
/usr/sbin/rarpd -v -e eth0
|
Приведем описание параметров указанных в команде выше (так как это описывается
на странице правки):
- -v быть многословным
-
-e не проверять на присутствие загрузочного образа, отвечать, если reply if
MAC адрес разрешается в действительный IP-адрес используя
базу данных /etc/ethers и DNS
-
eth0 представляет интерфейс, к которому должен привязываться rarpd
Чтобы узнать больше про остальные параметры, смотрите раздел 8 страницы справки
для rarpd
Настройка net-misc/rarpd
В первую очередь нужно установить rarpd с помощью следующей команды:
Листинг 2.4: Установка rarpd |
# emerge net-misc/rarpd
|
Затем, параметры для rarpd должны быть установлены в файле
/etc/conf.d/rarpd. Для конфигурации соответствующей описанной выше
для net-misc/iputils rarpd, установите параметры в файле
/etc/conf.d/rarpd чтобы они выглядели примерно так:
Листинг 2.5: Файл /etc/conf.d/rarpd |
RARPD_OPTS="-v -i eth0"
|
Приведем описание параметров указанных в команде выше (так как это описывается
на странице правки):
-
-v быть многословным. Показывать запросы, на которые демон отвечает.
-
-i Привязать к указанному интерфейсу. По умолчанию rarpd привязывается к
интерфейсу по умолчанию для локальной системы, если он доступен.
Чтобы узнать больше про остальные параметры, смотрите секцию 8 страницы справки
для rarpd, а также воспользуйтесь командой rarpd --help.
Демон tftpd
Существует три возможности для демона tftp, net-misc/atftp,
net-misc/netkit-tftp и net-misc/tftp-hpa. Вам нужно установить только один.
Настройка общих элементов tftpd
каждый демон tftp потребует каталог, из которого он будет обслуживать файлы для
клиентов tftp. В этом документе мы будем использовать каталог с именем
/tftpboot. Этот каталог будет являться корневым (/) для клиентов
при получении запросов. В дополнение мы настроим систему, чтобы она запускала
демон tftp без пользователя и группы пользователей.
Если выбранный каталог не существует, он должен быть создан с помощью команды
mkdir. Команда для нашего примера /tftpboot следующая:
Листинг 2.6: Создание каталога /tftpboot |
# /bin/mkdir /tftpboot
|
Затем нам необходимо изменить владельца каталога /tftpboot так чтобы его
владельцем стал пользователь nobody и группа nobody:
Листинг 2.7: Смена владельца |
# chown nobody:nobody /tftpboot
|
Демон atftp
Сначала установите пакет net-misc/atftp как показано ниже;
Листинг 2.8: Установка atftp |
# emerge net-misc/atftp
|
После установки пакета net-misc/atftp, он должен быть настроен. Если вы хотите
получить сервисы tftpd во время загрузки, должна быть добавлена строка в файл
/etc/conf.d/local.start, т.к. демон atftp не имеет своих файлов
сценариев init.d, inetd или xinetd. Если вы хотите использовать inetd или
xinetd для контроля за сервисом tftpd, обратитесь к соответствующей странице
справки.
Ниже приведен пример строки для демона atftpd в файле
/etc/conf.d/local.start:
Листинг 2.9: Файл /etc/conf.d/local.start |
/usr/sbin/in.tftpd -v --daemon /tftpboot
|
Описание вышеуказанных параметров rarpd (взято со страницы справки):
-
-v Увеличить или установить уровень записи в файл регистрации. Отсутствие
аргументов увеличит текуще значение на 1. Значением по умолчанию является
LOG_NOTICE, смотрите страницу правки syslog(3) для объяснения уровня записи
в файл регистрации. Возможные значения варьируются от 0 (LOG_EMERG) до 7
(LOG_DEBUG)
-
--daemon Запускается как демон. Не пользуйтесь этим параметром, если atftpd
запускается с помощью inetd.
Чтобы узнать больше про остальные параметры, смотрите секцию 8 страницы правки
для rarpd
Демон netkit-tftp
Сначала установите пакет net-misc/netkit-tftp как показано ниже;
Листинг 2.10: Установка netkit-tftp |
# emerge net-misc/netkit-tftp
|
Затем установите sys-apps/xinetd если он еще не установлен; после этого нужно
будет настроить пакет netkit-tftp. Пакет netkit-tftp должен запускаться с
помощью xinetd, однако примера сценария загрузки не предоставляется. Ниже
приведен пример конфигурационного файла xinetd:
Листинг 2.11: Пример файла /etc/xinetd.d/tftp |
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
group = nobody
server = /usr/sbin/in.tftpd
server_args = /tftpboot
only_from = 10.0.1.0
disable = no
}
|
Примечание:
Этот пример конфигурационного файла xinetd для tftp использует строку "disable
= no", которая включает сервис по умолчанию. Данный пример вступает в
противоречие с правилами конфигурационных файлов xinetd системы Gentoo,
принятыми по умолчанию, в соответствии с которыми параметр disable
устанавливается в "yes".
|
Описание параметров приведенных в примере выше; параметры могут быть изменены;
user пользователь in.tftpd запросы которого обрабатываются
group группа пользователей in.tftpd запросы которой обрабатываются
server_args корневой каталог для демона tftp откуда будут поставляться файлы
only_from сообщает xinetd каким хостам разрешено соединение с помощью tftp
Дополнительная информация по конфигурационным файлам xinetd может быть найдена
в секции 5 страницы правки для xinetd.conf
Если запущен сервис xinetd, можно послать ему сигнал HUP, чтобы он перечитал
свой конфигурационный файл:
Листинг 2.12: Посылка сигнала HUP в xinetd |
# /bin/killall -HUP xinetd
|
Если сервис xinetd не запущен, запустите его с помощью команды init.d;
Листинг 2.13: Запуск xinetd |
# /etc/init.d/xinetd start
|
Для более полной информации изучите секцию 8 страницы правки для in.tftpd
Демон tftp-hpa
Сначала установите пакет tftp-hpa, используя следующую команду;
Листинг 2.14: Установка tftp-hpa |
# emerge net-misc/tftp-hpa
|
Пакет tftp-hpa содержит файлы конфигурации init.d и conf.d. Проверьте что
переменные INIITFTPD_PATH и INITFTP_OPTS в файле
/etc/conf.d/in.tftpd имеют значения показанные ниже:
Листинг 2.15: Файл /etc/conf.d/in.tftpd |
INTFTPD_PATH="/tftpboot"
INTFTPD_OPTS="-s -v -l ${INTFTPD_PATH}"
|
Демон tftp может быть запущен с помощью сценария init.d;
Листинг 2.16: Запуск in.tftpd |
# /etc/init.d/in.tftpd start
|
Чтобы получить информацию об остальных параметрах, смотрите секцию 8 страницы
правки о tftpd.
3.
Подготовка образа tftpboot для использования клиентом
Убедитесь что у вас есть образ, который будет использоваться для сетевой
загрузки. Для образа сетевой загрузки системы sparc или sparc64, проверьте ваше
локальное зеркало исходных файлов Gentoo в каталоге
experimental/sparc/tftpboot
на соответствующий образ. Мы предположим, что планируется загружать хост на
базе sparc64, используя образ
gentoo-sparc64-1.4_rc4-20040102.tftpboot.
После того как вы получите выбранный образ, скопируйте его в каталог
/tftpboot:
Листинг 3.1: Копирование образа |
# cp gentoo-sparc64-1.4_rc4-20040102.tftpboot /tftpboot
|
Теперь когда клиент сетевой загрузки производит запрос tftp, он ищет файл
который имеет имя в виде шестнадцатеричного номера его IP-адреса, и на
некоторых платформах имеет расширение .ARCH. Шестнадцатеричный
номер должен использовать заглавные буквы.
Руководство о том, как преобразовать десятичное в шестнадцатеричное, можно найти
по адресу http://www.permadi.com/tutorial/numDecToHex/.
Для особо ленивых или нетерпеливых существует конвертер по адресу
http://dan.drydog.com/hextemp.html
Примечание:
Каждое число в IP-адресе (например 10 в 10.0.1.15), нужно будет преобразовать в
шестнадцатеричное, а не преобразовывать адрес как единое число
|
Так для IP-адреса в нашем примере, 10.0.1.15, давайте посмотрим на его
шестнадцатеричный эквивалент:
Листинг 3.2: Пример IP-адреса |
десятичное число 10 0 1 15
шестнадцатеричное число 0A 00 01 0F
|
Поэтому для выбранного нами клиента сетевой загрузки sparc64, он будет искать
файл с именем 0A00010F когда он загружается с помощью tftp.
В то же время на системах sparc, имя файла будет 0A00010F.SUN4M, 0A00010F.SUN4C
или 0A00010F.SUN4D в зависимости от типа sparc системы.
Дополнительно, если вы очень, очень леивы (как я), вы можете произвести сетевую
загрузку хоста, чтобы получить имя файла для поиска клиентом из файла
регистрации сетевой загрузки.
Убедитесь что оба демона rarpd и tftpd, которые были выбраны, запущены, затем
загрузите хост как описано ниже в "Сетевой загрузке клиента".
После того как будет дана команда boot net, клиент не будет реагировать. Затем
на сервере сетевой загрузки, проверьте системный журнал и найдите строчку для
in.tftpd.
Пример такой строки с сервера сетевой загрузки с запущенными sysklogd и
tftp-hpa выглядит примерно так:
Листинг 3.3: Строчка в журнале для сервера сетевой загрузки |
Jan 3 22:48:59 stargazer in.tftpd[8368]: RRQ from 10.0.1.15 filename 0A00010F
|
Имя файла показано выше после "filename" в строке файла журнала, который в
данном случае должен называться 0A00010F.
Для того, чтобы отслеживать какой образ сетевой загрузки используется, и чтобы
позволить нескольким компьютерам использовать один и тот же образ сетевой
загрузки, можно использовать ссылку на созданный нами файл с шестнадцатеричным
именем. Чтобы создать такую ссылку, используя параметры нашего примера: хост
sparc64 host и образ gentoo-sparc64-1.4_rc4-20040102.tftpboot,
воспользуйтесь следующей командой:
Листинг 3.4: Сборка файлов образа |
# /bin/ln -s /tftpboot/gentoo-sparc64-1.4_rc4-20040102.tftpboot \
/tftpboot/0A00010F
|
Сейчас у нас все готово для сетевой загрузки!
4.
Сетевая загрузка клиента
Из OpenBoot PROM (OBP) на машине SPARC, введите команду;
Листинг 4.1: Загрузка OBP |
ok boot net
|
для отдельных машин существуют другие подходы:
Листинг 4.2: Альтернативная загрузка OBP |
ok boot net-tpe
|
Примечание:
Если ваша система не позволяет войти в OBP во время загрузки, нужно будет
нажать клавиши Stop и A, или послать сигнал прерывания через серийную консоль
до того момента как система начнет загружать систему. Если ваша система не
может найти систему, она должна пытаться загружаться через сетевой интерфейс
(т.е то что мы хотим) или вернуться к подсказке OBP.
|
Эта команда начнет процесс сетевой загрузки. Должна появиться постоянно
изменяемая строка шестнадцатеричных цифр. Когда считывание образа закончится,
управление перейдет к ядру и начнется процесс загрузки системы. В случае
установочного образа вашего sparc64 компьютера, вы увидите подсказку оболочки и
сможете начать процесс установки.
5.
Тестирование
Построение предварительно необходимого программного обеспечения
Если сервер сетевой загрузки -- система Gentoo/LINUX, и возникнут проблемы с
установкой пакетов rarpd и tftpd, пожалуйста, обратитесь по ссылкам
http://forums.gentoo.org и http://bugs.gentoo.org чтобы
проверить, не встречались ли данные проблемы у кого-то ещё. Если этого не
происходило или решение не работает, пожалуйста, создайте новый отчет об ошибке
по адресу http://bugs.gentoo.org.
Я дал команду boot net, но похоже, что система зависла.
Предположительно это происходит потому, что файл, который система пытается
считать с сервера tftpboot, недоступен. В системе SPARC вы, скорее всего,
увидите следующее сообщение:
Листинг 5.1: Загрузка системы зависла |
Rebooting with command: boot
Boot device: net File and args:
|
Проверьте и убедитесь, что файл, который необходим клиенту, существует в
каталоге /tftpboot. Вы можете проверить имя запрашиваемого файла,
посмотрев в системный журнал. Как только файл появится на своем месте, клиент
будет пытаться его считать. Иногда, если файл отсутствовал изначально, сервер
заморозит процесс загрузки при появлении файла. Чтобы разрешить эту проблему,
перейдите обратно к подсказке OBP, и повторите команду "boot net". Хост должен
начать считывать образ tftpboot и загружать систему.
Я пытаюсь провести сетевую загрузку, но получаю только сообщения "Timeout
waiting for ARP/RARP packet".
Это может происходить по нескольким причинам;
-
Убедитесь, что существует строка в файле /etc/ethers для
данного клиента. Если неверен MAC адрес и/или сервер сетевой загрузки не
может разрешить имя хоста для клиента, он не сможет ответить с требуемой
информацией.
-
Проверьте возможность потока сообщений RARP свободно проходить через
сетевой концентратор или коммутатор, к которому подключены сервер и клиент
сетевой загрузки. Если запросы клиента не могут достигнуть сервера, или
наоборот, хост не сможет продолжать.
-
Никто не отвечает на запросы RARPD, потому что не запущены прослушивающие
сервисы. Проверьте, что запущен сервис rarpd.
-
Клиент не считает, что у его сетевой платы есть соединение с сетевым
концентратором / коммутатором, к которому она подключена. Проверьте, что
на сетевой карте и порту на сетевом хабе или переключателе горит лампочка
link. Если лампочка link включена, проверьте чему равно значение переменной
tpe-link-test? в OBP с помощью команды; printenv tpe-link-test?. Вы
должны получить нечто типа tpe-link-test? false true. Первая
колонка представляет имя параметра, вторая показывает текуще значение
параметра, и третья колонка показывает значение по умолчанию для данного
параметра. В примере выше можно увидеть, что текущим значением переменной
является "false", что означает что клиент не проверяет, или клиент и
сетевой концентратор или коммутатор могут создать link до того как послать RARP
запрос. Очень часто это создает проблему.
Чтобы изменить значение переменной tpe-link-test? из подсказки OBP, введите
следующую команду:
Листинг 5.2: Изменение значения переменной tpe-link-test |
ok setenv tpe-link-test? true
tpe-link-test? = true
|
Это указывает на то, что значение переменной tpe-link-test? является "true".
Попытайтесь произвести сетевую загрузку клиента сейчас.
Текст этого документа распространяется на условиях лицензии
Creative Commons
- Attribution / Share Alike.
|