4.6. Подготовка файлов для загрузки по TFTP

Если ваша машина подключена к локальной сети, то вы можете загрузить её по сети с другой машины через TFTP. Для этого на удалённую машину в определённое место вам нужно поместить загрузочные файлы и настроить поддержку загрузки вашей машины.

Вам нужно настроить TFTP сервер, а если машин много, то BOOTP сервер или DHCP сервер.

BOOTP — это IP протокол, который информирует компьютер о его IP адресе и где в сети получить загрузочный образ. DHCP (Dynamic Host Configuration Protocol) более гибок и обратно совместим с BOOTP. Некоторые системы могут быть настроены только через DHCP.

Для PowerPC, если вы имеете машину NewWorld Power Macintosh, лучше использовать DHCP вместо BOOTP. Некоторые из последних машин невозможно загрузить с помощью BOOTP.

Trivial File Transfer Protocol (TFTP) используется для загрузки загрузочного образа на клиентскую машину. Теоретически, можно использовать любой сервер на любой платформе, которая реализует эти протоколы. В примерах этого раздела мы используем команды из SunOS 4.x, SunOS 5.x (так называемый Solaris) и GNU/Linux.

4.6.1. Настройка BOOTP сервера

В GNU/Linux есть два BOOTP сервера: CMU bootpd и ISC dhcpd (на самом деле DHCP сервер); они находятся в пакетах bootp и dhcp.

Чтобы использовать CMU bootpd, во-первых, вы должны раскомментировать (или добавить) соответствующую строку в /etc/inetd.conf. Для этого в Debian GNU/Linux вы можете запустить update-inetd --enable bootps, затем /etc/init.d/inetd reload. Или же можно добавить следующую строку вручную:

bootps  dgram  udp  wait  root  /usr/sbin/bootpd  bootpd -i -t 120

Теперь вы должны создать файл /etc/bootptab. Внутри он напоминает хорошо знакомый и загадочный формат старых добрых BSD файлов printcap, termcap и disktab. Подробности смотрите на странице руководства bootptab. Для CMU bootpd вам нужно знать аппаратный адрес (MAC) клиента. Вот пример /etc/bootptab:

client:\
  hd=/tftpboot:\
  bf=tftpboot.img:\
  ip=192.168.1.90:\
  sm=255.255.255.0:\
  sa=192.168.1.1:\
  ha=0123456789AB:

Нужно изменить по крайней мере параметр «ha», который содержит аппаратный адрес клиента. Параметр «bf» содержит файл, который клиент должен получить по TFTP; подробности смотрите в Раздел 4.6.4, «Копирование TFTP образов в каталог TFTP сервера».

Настройка BOOTP в ISC dhcpd очень проста, так как он считает клиента BOOTP, как один из вариантов клиента DHCP. Некоторые архитектуры требуют сложной конфигурации для загрузки клиентов по BOOTP. Если у вас один из таких случаев, прочитайте раздел Раздел 4.6.2, «Настройка DHCP сервера». Если нет, то достаточно просто добавить директиву allow bootp в конфигурационный блок подсети, содержащей клиента и перезапустить dhcpd командой /etc/init.d/dhcpd restart.

4.6.2. Настройка DHCP сервера

Есть один свободный DHCP сервер — это ISC dhcpd. В Debian GNU/Linux он доступен из пакета dhcp. Вот пример его конфигурационного файла (обычно /etc/dhcpd.conf):

option domain-name "example.com";
option domain-name-servers ns1.example.com;
option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 7200;
server-name "servername";

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.200 192.168.1.253;
  option routers 192.168.1.1;
}

host clientname {
  filename "/tftpboot/tftpboot.img";
  server-name "servername";
  next-server servername;
  hardware ethernet 01:23:45:67:89:AB;
  fixed-address 192.168.1.90;
}

Замечание: новый (и предпочтительный) пакет dhcp3 использует /etc/dhcp3/dhcpd.conf.

В этом примере определён единственный сервер servername, который работает в качестве DHCP, TFTP серверов и шлюза сети. Вам почти наверняка нужно изменить опцию domain-name, а также имя сервера и аппаратный адрес клиента. Опция filename должна содержать имя файла, который нужно получить по TFTP.

После редактирования конфигурационного файла dhcpd, перезагрузите сервер командой /etc/init.d/dhcpd restart.

4.6.3. Включение TFTP сервера

Для запуска TFTP сервера вы должны убедиться, что tftpd включён. Обычно, это делается добавлением в /etc/inetd.conf строки вида:

tftp dgram udp wait nobody /usr/sbin/tcpd in.tftpd /tftpboot

Пакеты Debian сами создают такую строку при установке.

Загляните в этот файл и запомните каталог, который используется в качестве аргумента in.tftpd— он вам потребуется далее. Аргумент -l в некоторых версиях in.tftpd включает запись протокола всех обращений в системные журналы — это полезно для диагностики ошибок. Если вы изменили /etc/inetd.conf, вам нужно об этом сказать запущенному процессу inetd. На машине Debian выполните /etc/init.d/inetd reload; на других машинах определите ID процесса inetd и запустите kill -HUP inetd-pid.

4.6.4. Копирование TFTP образов в каталог TFTP сервера

Далее, поместите нужный загрузочный образ TFTP из Раздел 4.2.1, «Где искать установочные образы» в каталог загрузочных образов tftpd. Как правило, этот каталог называется /tftpboot. Вы можете сделать ссылку на этот файл для файла, который tftpd будет передавать для загрузки определённому клиенту. К сожалению, имя файла определяется TFTP клиентом и никак не стандартизовано.

На машинах NewWorld Power Macintosh вам нужно настроить системный загрузчикyaboot на загрузочный образ TFTP. Yaboot затем получит образы ядра и RAMdisk через TFTP сам. Для сетевой загрузки, используйте yaboot-netboot.conf. Просто переименуйте его в yaboot.conf в каталоге TFTP.