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

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

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

DHCP (Dynamic Host Configuration Protocol) более гибок и обратно совместим с BOOTP. Некоторые системы могут быть настроены только через DHCP.

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

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

Одним из свободных DHCP серверов является ISC dhcpd. В Debian GNU/Linux он доступен из пакета isc-dhcp-server. Вот пример его конфигурационного файла (обычно /etc/dhcp/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.img";
  server-name "servername";
  next-server servername;
  hardware ethernet 01:23:45:67:89:AB;
  fixed-address 192.168.1.90;
}

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

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

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

Чтобы сервер TFTP заработал, во-первых нужно проверить что включена tftpd.

Программа tftpd-hpa может быть запущена двумя способами. Она может запускаться по требованию службой inetd, или может быть настроена для работы как независимая служба. Выбор метода происходит при при установке пакета, и его можно изменить через перенастройку пакета.

[Примечание] Примечание

Исторически, TFTP-серверы используют каталог /tftpboot для хранения образов. Однако, пакеты Debian GNU/Linux могут использовать другие каталоги, чтобы соответствовать Filesystem Hierarchy Standard. Например, tftpd-hpa по умолчанию использует /srv/tftp. Вам может потребоваться изменить примеры конфигурации для соответствия.

По умолчанию, все альтернативные программы in.tftpd, доступные в Debian, протоколируют запросы TFTP в системный журнал. Некоторые из них имеют параметр -v, позволяющий включить более подробный протокол. Рекомендуется проверить эти сообщения в журнале в случае возникновения проблем с загрузкой; это хорошая отправная точка при поиске причин ошибок.

Если вы хотите установить Debian на машину SGI, а ваш TFTP-сервер работает на GNU/Linux с ядром Linux 2.4, то на сервере вам нужно выполнить:

# echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc

, чтобы отключить обнаружение Path MTU, иначе SGI PROM не сможет скачать ядро. Кроме того, убедитесь, что TFTP-пакеты посылаются с портом источника не выше 32767, или скачивание прервётся после первого пакета. Ещё раз, это ошибка Linux 2.4.X при работе с PROM, и вы можете избежать этого, выполнив настройку

# echo "2048 32767" > /proc/sys/net/ipv4/ip_local_port_range

, которая регулирует диапазон портов источника, используемого TFTP-сервером Linux.

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

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

4.3.3.1. Загрузка SGI по TFTP

На компьютерах SGI вы можете положиться на bootpd передав имя TFTP файла. Оно задаётся или как bf= в /etc/bootptab или как параметр filename= в /etc/dhcpd.conf.