4.5. Підготовка файлів для завантаження з TFTP

Якщо Ваш комп’ютер під'єднаний до локальної мережі, його можна завантажити через мережу з іншого комп’ютера за допомогою TFTP. Якщо бажаєте завантажити систему інсталяції з іншого комп’ютера, потрібно завантажувальні файли розмістити на цьому комп’ютері в певних місцях, а комп’ютер налаштувати для підтримки завантаження Вашого конкретного комп’ютера.

Вам потрібно налаштувати сервер TFTP, а для декількох комп'ютерів налаштувати сервер DHCP, чи сервер BOOTP.

BOOTP — протокол IP, який повідомляє комп'ютерам їх IP-адреси та інформацію про розташування в мережі образів для завантаження. Протокол DHCP (протокол динамічної конфігурації вузла) — це більш гнучке, зворотно сумісне розширення BOOTP. Деякі системи можуть бути налаштовані лише через DHCP.

Простий протокол обміну файлами (TFTP) використовується для передачі завантажувального образу до клієнтів. Теоретично Ви можете використовувати сервер на будь-якій платформі, яка його підтримує. Приклади у цьому розділі стосуються операційних систем SunOS 4.x, SunOS 5.x (Solaris) та GNU/Linux.

[Примітка] Примітка

Якщо на сервері запущено Debian GNU/Linux, ми рекомендуємо використовувати TFTP-сервер tftp-hpa того ж автора, що й завантажувач syslinux, оскільки між ними гарна сумісність. Гарною альтернативою буде також atftpd.

4.5.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 та мережевого шлюзу. Вам майже напевно доведеться змінити параметри назви домену, а також назву сервера та апаратну адресу клієнта. Параметр filename має бути назвою файлу, який буде отриманий через TFTP.

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

4.5.1.1. Увімкнення у конфігурації DHCP завантаження PXE

Ось ще один приклад dhcp.conf з використанням методу PXE від TFTP.

option domain-name "example.com";

default-lease-time 600;
max-lease-time 7200;

allow booting;
allow bootp;

# Наступний абзац потрібно змінити відповідно до Вашого випадку
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.200 192.168.1.253;
  option broadcast-address 192.168.1.255;
# адреса шлюзу може бути іншою
# (наприклад, доступ до Інтернету)
  option routers 192.168.1.1;
# вкажіть DNS, який Ви хочете використовувати
  option domain-name-servers 192.168.1.3;
}

group {
  next-server 192.168.1.3;
  host tftpclient {
# фізична адреса клієнта tftp
  hardware ethernet  00:10:DC:27:6C:15;
  filename "pxelinux.0";
 }
}

Зверніть увагу, що у завантаженні PXE ім’я файлу клієнта pxelinux.0 є завантажувачем, а не образом ядра (див. Розділ 4.5.4, «Перемістіть образи TFTP на місце» нижче).

Якщо Ваш комп'ютер використовує для завантаження UEFI, Вам доведеться, наприклад, вказати завантажувач, сумісний з UEFI

group {
  next-server 192.168.1.3;
  host tftpclient {
# фізична адреса клієнта tftp
  hardware ethernet  00:10:DC:27:6C:15;
  filename "debian-installer/amd64/bootnetx64.efi";
 }
}

4.5.2. Налаштування сервера BOOTP

Для GNU/Linux є два сервери BOOTP. Перший — CMU bootpd. Інший фактично є сервером DHCP: ISC dhcpd. У Debian GNU/Linux вони містяться в пакетах bootp та isc-dhcp-server відповідно.

Для використання CMU bootpd, Вам потрібно спочатку розкоментувати (або додати) відповідні рядку у /etc/inetd.conf. У Debian GNU/Linux, це можна зробити так: виконати update-inetd --enable bootps, потім /etc/init.d/inetd reload. Якщо Ваш сервер BOOTP працює не на Debian, рядок у запиті може виглядати приблизно так:

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.5.4, «Перемістіть образи TFTP на місце».

На відміну від попереднього налаштування BOOTP за допомогою ISC dhcpd дуже просте, оскільки dhcpd розглядає клієнтів BOOTP як окремі випадки клієнтів DHCP. Але деякі архітектури вимагають складного налаштування для завантаження клієнтів через BOOTP. Якщо це Ваш випадок, прочитайте Розділ 4.5.1, «Налаштування сервера DHCP». В іншому випадку достатньо додати директиву allow bootp у файлі конфігурації /etc/dhcp/dhcpd.conf у блок підмережі, в якій знаходиться клієнт. Потім перезапустіть сервер dhcpd командою /etc/init.d/isc-dhcp-server restart.

4.5.3. Увімкнення сервера TFTP

Для підготовки до роботи сервера TFTP, переконайтеся спочатку, що tftpd активований.

У випадку tftpd-hpa існує два способи запуску служби. Можна запустити як окремий демон inetd під час запуску системи, або як незалежний демон. Який метод Вам потрібен можна обрати під час встановлення пакунка або можете змінити налаштування в будь-який час пізніше.

[Примітка] Примітка

Історично сервери TFTP використовували каталог /tftpboot для використання образів з них. Однак пакунки Debian GNU/Linux можуть використовувати інші каталоги відповідно до стандарту ієрархії файлової системи. Наприклад, tftpd-hpa стандартно використовує /srv/tftp. Можливо, Вам доведеться налаштувати приклади конфігурації в цьому розділі під свої потреби.

Усі альтернативи in.tftpd, доступні в Debian повинні типово реєструвати запити TFTP у системних журналах. Деякі з них підтримують аргумент -v для збільшення інформативності. У разі проблем із завантаженням рекомендується перевіряти ці повідомлення журналу, оскільки вони є гарною відправною точкою для діагностики помилок та пошуку причин.

4.5.4. Перемістіть образи TFTP на місце

Далі розмістіть потрібний завантажувальний образ TFTP, як описано у Розділ 4.2.1, «Де знайти інсталяційні файли», до каталогу з образами tftpd. Можливо, буде потрібно створити посилання з цього файлу на файл, який tftpd використовуватиме для завантаження певного клієнта. На жаль, імена файлу визначається клієнтом TFTP і тут немає жорстких стандартів.

Для завантаження PXE все необхідне є в архіві netboot/netboot.tar.gz. Просто розпакуйте цей архів у каталог для образів tftpd. Переконайтеся, що Ваш dhcp-сервер налаштований передавати файл pxelinux.0 до tftpd. Для машин UEFI буде потрібно передати відповідну назву завантажувального образу EFI (наприклад, /debian-installer/amd64/bootnetx64.efi).