Если ваша машина подключена к локальной сети, то вы можете загрузить её по сети с другой машины через TFTP. Для этого на удалённую машину в определённое место вам нужно поместить загрузочные файлы и настроить поддержку загрузки вашей машины.
Вам нужно настроить TFTP сервер, а если машин много, то BOOTP сервер или DHCP сервер.
BOOTP — это IP протокол, который информирует компьютер о его IP адресе и где в сети получить загрузочный образ. DHCP (Dynamic Host Configuration Protocol) более гибок и обратно совместим с BOOTP. Некоторые системы могут быть настроены только через DHCP.
Некоторые старые HPPA машины (например 715/75) используют RBOOTD, а не BOOTP. Пакет rbootd
доступен в Debian.
Trivial File Transfer Protocol (TFTP) используется для загрузки загрузочного образа на клиентскую машину. Теоретически, можно использовать любой сервер на любой платформе, которая реализует эти протоколы. В примерах этого раздела мы используем команды из SunOS 4.x, SunOS 5.x (так называемый Solaris) и GNU/Linux.
В 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.3.4, «Копирование TFTP образов в каталог TFTP сервера».
Настройка BOOTP в ISC dhcpd очень проста, так как он считает клиента BOOTP, как один из вариантов клиента DHCP. Некоторые архитектуры требуют сложной конфигурации для загрузки клиентов по BOOTP. Если у вас один из таких случаев, прочитайте раздел Раздел 4.3.2, «Настройка DHCP сервера». Если нет, то достаточно просто добавить директиву allow bootp
в конфигурационный блок подсети, содержащей клиента и перезапустить dhcpd командой /etc/init.d/dhcpd restart
.
Есть один свободный 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
.
Для запуска 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
Далее, поместите нужный загрузочный образ TFTP из Раздел 4.2.1, «Где искать установочные образы» в каталог загрузочных образов tftpd. Как правило, этот каталог называется /tftpboot
. Вы можете сделать ссылку на этот файл для файла, который tftpd будет передавать для загрузки определённому клиенту. К сожалению, имя файла определяется TFTP клиентом и никак не стандартизовано.