Как: 10 шагов по настройке сервера tftpboot в UNIX / Linux (для установки Linux из сети с использованием PXE)
В этой статье мы поговорим о том, как настроить tftpboot, включая установку необходимых пакетов и конфигурации tftpboot.
Служба загрузки TFTP в основном используется для установки ОС на удаленной машине, к которой у вас нет физического доступа. Чтобы успешно выполнить установку ОС, должен быть способ перезагрузить удаленный сервер — либо с помощью wakeonlan, либо кто-то вручную перезагрузил его, либо каким-либо другим способом.
В этих сценариях вы можете соответствующим образом настроить службы tftpboot, и установка ОС может выполняться удаленно (вам необходим файл конфигурации autoyast для автоматизации шагов установки ОС).
В этой статье представлена пошаговая процедура для SLES10-SP3 в 64-битной архитектуре. Однако эти шаги очень похожи на любые другие дистрибутивы Linux.
Требуемые пакеты
Следующие пакеты должны быть установлены для установки tftpboot.
- Пакеты служб dhcp: dhcp-3.0.7-7.5.20.x86_64.rpm и dhcp-server-3.0.7-7.5.20.x86_64.rpm
- Пакет tftpboot: tftp-0.48-1.6.x86_64.rpm
- Пакет pxeboot: syslinux-3.11-20.14.26.x86_64.rpm
Установка пакета
Установите пакеты для служб сервера dhcp:
$ rpm -ivh dhcp-3.0.7-7.5.20.x86_64.rpm Preparing... ########################################### [100%] 1:dhcp ########################################### [100%] $ rpm -ivh dhcp-server-3.0.7-7.5.20.x86_64.rpm Preparing... ########################################### [100%] 1:dhcp ########################################### [100%] $ rpm -ivh tftp-0.48-1.6.x86_64.rpm $ rpm -ivh syslinux-3.11-20.14.26.x86_64.rpm
После установки пакета syslinux файл pxelinux.0 будет создан в каталоге /usr/share/pxelinux/. Это необходимо для загрузки установочного образа ядра и образа initrd на клиентском компьютере.
Убедитесь, что пакеты успешно установлены.
$ rpm -qa | grep dhcp $ rpm -qa | grep tftp
Загрузите соответствующий tftpserver из репозитория вашего соответствующего дистрибутива Linux.
Шаги по настройке tftpboot
Шаг 1: Создайте каталог / tftpboot
Создайте каталог tftpboot в корневом каталоге (/), как показано ниже.
# mkdir /tftpboot/
Шаг 2. Скопируйте изображение pxelinux
Образ Linux PXE будет доступен после установки пакета syslinux. Скопируйте этот путь в / tftpboot, как показано ниже.
# cp /usr/share/syslinux/pxelinux.0 /tftpboot
Шаг 3. Создайте точку монтирования для ISO и смонтируйте ISO-образ
Предположим, мы собираемся установить дистрибутив SLES10 SP3 Linux на удаленный сервер. Если у вас есть диск SUSE10-SP3, вставьте его в дисковод или смонтируйте ISO-образ, который у вас есть. Здесь ISO-образ был смонтирован следующим образом:
# mkdir /tftpboot/sles10_sp3 # mount -o loop SLES-10-SP3-DVD-x86_64.iso /tftpboot/sles10_sp3
Шаг 4: Скопируйте образы vmlinuz и initrd в / tftpboot
Скопируйте initrd в каталог tftpboot, как показано ниже.
# cd /tftpboot/sles10_sp3/boot/x86_64/loader # cp initrd linux /tftpboot/
Шаг 5: Создайте каталог pxelinux.cfg
Создайте каталог pxelinux.cfg в /tftpboot и определите определения загрузки pxe для клиента.
# mkdir /tftpboot/pxelinux.cfg # cat >/tftpboot/pxelinux.cfg/default default linux label linux kernel linux append initrd=initrd showopts instmode=nfs install=nfs://192.168.1.101/tftpboot/sles10_sp3/
Следующие параметры используются для,
- kernel — указывает, где найти установочное ядро Linux на TFTP-сервере.
- install — указывает параметры загрузки для передачи ядру установки.
Как указано выше, режим установки nfs используется для обслуживания установочных RPM и файлов конфигурации. Итак, настройте nfs на этом компьютере с каталогом / tftpboot в экспортированном списке. Вы можете добавить опцию «autoyast» в файл конфигурации autoyast, чтобы автоматизировать шаги установки ОС, в противном случае вам нужно будет выполнить шаги установки вручную.
Шаг 6: Смена владельца и разрешения для каталога /tftpboot
Никого не назначайте: никому в каталог /tftpboot.
# chown nobody:nobody /tftpboot # chmod 777 /tftpboot
Шаг 7: Изменить /etc/dhcpd.conf
Измените /etc/dhcpd.conf, как показано ниже.
# cat /etc/dhcpd.conf ddns-update-style none; default-lease-time 14400; filename "pxelinux.0"; # IP address of the dhcp server nothing but this machine. next-server 192.168.1.101; subnet 192.168.1.0 netmask 255.255.255.0 { # ip distribution range between 192.168.1.1 to 192.168.1.100 range 192.168.1.1 192.168.1.100; default-lease-time 10; max-lease-time 10; }
Укажите интерфейс в /etc/syslinux/dhcpd для прослушивания запросов dhcp от клиентов.
# cat /etc/syslinux/dhcpd | grep DHCPD_INTERFACE DHCPD_INTERFACE=”eth1”;
Здесь эта машина имеет IP-адрес 192.168.1.101 на устройстве eth1. Итак, укажите eth1 для DHCPD_INTERFACE, как показано выше.
Шаг 8: Изменить /etc/xinetd.d/tftp
Измените файл /etc/xinetd.d/tftp, чтобы отразить следующее. По умолчанию значение параметра disable равно «yes», пожалуйста, убедитесь, что вы изменили его на «no», и вам нужно изменить запись server_args на -s / tftpboot.
# cat /etc/xinetd.d/tftp service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = no }
Шаг 9: Без изменений в /etc/xinetd.conf
Нет необходимости изменять файл /etc/xinetd.conf. Используйте значения по умолчанию, указанные в файле xinetd.conf.
Шаг 10. Перезапустите службы xinetd, dhcpd и nfs.
Перезапустите эти службы, как показано ниже.
# /etc/init.d/xinetd restart # /etc/init.d/dhcpd restart # /etc/init.d/nfsserver restart
После перезапуска служб nfs вы можете просмотреть список экспортированных каталогов (/ tftpboot) с помощью следующей команды:
# showmount -e
Наконец, настройка tftpboot готова, и теперь клиентский компьютер может быть загружен после изменения первого загрузочного устройства в качестве «сетевого» в настройках BIOS.
Если вы столкнулись с какой-либо ошибкой tftp, вы можете выполнить поиск и устранение неисправностей, загрузив некоторые файлы через службу tftpd.
Извлеките некоторый файл из tftpserver, чтобы убедиться, что служба tftp работает правильно с использованием клиента tftp. Предположим, что файл sample.txt находится в каталоге /tftpboot.
$ tftp -v 192.168.1.101 -c get sample.txt