Перейти к содержимому
СофтФорум - всё о компьютерах и не только
Leon-Killer22

PXE-сервер (TFTP + grub4dos)

Рекомендуемые сообщения

Здравствуйте, товарищи!
 
Просьба не пинать - это моя первая попытка сделать небольшое подобие мануала.
 
Решил поделиться опытом установки и первичной настройки PXE-сервера с использованием TFTP-сервера и загрузчиков grub4dos.
 
Планирую по мере успешных решений поставленных задач дополнять эту тему - надеюсь, кому-то это поможет.
 
Моя инфраструктура:
- Домен контроллер (Win 2012 - AD, DNS, DHCP и др.)
- Сервер с виртуалками ESXi
- 200+ рабочих станций
Остальное описывать не буду, т.к. это к делу не относитсяю
 
Решил настроить PXE-сервер для загрузки по сети образов операционных систем, антивирусов, утилит и т.д.
 
По ходу изучения темы встречал различные материалы. В основном, всё про загрузку с флешки, винта, а про сетевой вариант - всё как-то не совсем ясно.
Оффтоп
Быть может, плохо читал? :)
 
Остановился на самом простом, на мой взгляд, варианте - Windows 2012 + TFTPD32.
О программе TFTPD32:

Tftpd32 — небольшая программа для Windows с открытым исходным кодом, включающая в себя простые в настройке DHCP, TFTP, SNTP и Syslog серверы, а также TFTP клиент, поддерживающий стандарт TFTPv2. Поддерживает IPv6. На официальном сайте также доступен вариант этой программы для 64-разрядных ОС Tftpd64. DHCP сервер без ограничений поддерживает как автоматическую, так и статическую раздачу IP-адресов. TFTPD, в частности, может быть использована как часть серверного ПО для организации загрузки бездисковых станций. Для использования в этом качестве для загрузки Windows он рекомендован проектом PXE.

 
Суть, вкратце, следующая:
Сервер:
0. На рабочую винду в сети ставится программа TFTPD32.
1. Производятся некоторые настройки в TFTPD32(папки, DHCP, DNS).
2. В папку программы копируют те образы, которые нужно запускать по сети.
3. В папку программы копируют загрузчик - у меня grub4dos.
4. Создается файлик - меню загрузки в grub4dos.
Клиент:
0. Запускается штатный Network Boot Agent.
1. Получает IP адрес по DHCP с информацией о адресе PXE-сервера.
2. Соединяется с PXE-сервером и загружается и на экране возникает меню grub4dos с вариантами для загрузки.
3. Дальше - как при работе с загрузочной флешкой на grub4dos.
 
 
Я постараюсь изложить максимально понятно информацию из первоисточника, которым пользовался сам. (ссылка)
 
 
 
Приступим!
 
Подготовка:
0. Скачиваем программу TFTPD64 (я использую версию 4.00, tftpd64 standard edition) и распаковываем/устанавливаем на компьютер (рекомендую создать в корне диска папку "tftpd" и распаковать/установить в неё) - у меня это будет C:\tftpd32\).
6300717m.png
1. Скачиваем grub4dos 0.4.4 (последняя версия на момент написания моей мануалки).
1. Создаём папку C:\tftpd32\root\ - здесь будут наши образы, которые мы и будем запускать по сети.
2. Копируем из архива grub4dos файл grldr в папку C:\tftpd32\root\
3. Создаём ПАПКУ C:\tftpd32\root\menu.lst\ (здесь будет "default" файлик-меню с выбором вариантов загрузки)
 
Вариант 1. Настройка PXE-сервера в случае, если у вас нет DHCP-сервера в сети (в связи с тем, что у меня в сети уже присутствует DHCP-сервер 100% правильность настроек проверить не могу - пишите, если получилось/не получилось):


0. Открываем файл C:\tftpd32\tftpd32.exe (или C:\tftpd32\tftpd64.exe - у кого какая версия)
1. Заходим в настройки (средняя кнопка Settings в самом низу окна программы)
2. Во вкладке "GLOBAL" выбираем, какие службы будут выполняться программой - "TFTP Server" и "DHCP server". Так же можно включить поддержку IPv6-адресов.
6504777m.png
 
3. Во вкладке "TFTP":
- Base directory - выбираем папку, где будут храниться образы - C:\tftpd32\root\
- в TFTP Security выбираем Standard
- в Advanced TFTP Options выбираем "Option negotiation", "Show Progress bar", "Translate Unix file names", "Allow '\' As virtual root"
6319151m.png
 
4. Во вкладке DHCP:
- IP pool starting address - начальный IP-адрес, раздаваемый сервером
- Size of pool - количество адресов, которое разрешено к выдаче сервером (1 = 1 адресу, 5 = пяти адресам и т.д.)
- Boot file - здесь мы указываем файл загрузчика. Для grub4dos это "grldr"
- дальше стандартные сетевые настройки
- DHCP Options я оставил по умолчанию
6495560m.png
 
5. Нажимаем OK, чтобы сохранить настройки. В появившемся окошке нас предупреждают о том, что необходимо перезагрузить программу для применения настроек
 
Вариант 2. Настройка PXE-сервера в случае, если у вас уже есть DHCP-сервер в сети


0. Открываем файл C:\tftpd32\tftpd32.exe (или C:\tftpd32\tftpd64.exe - у кого какая версия)
1. Заходим в настройки (средняя кнопка Settings в самом низу окна программы)
2. Во вкладке "GLOBAL" выбираем, какие службы будут выполняться программой - "TFTP Server". Так же можно включить поддержку IPv6-адресов.
6336558m.png
 
3. Во вкладке "TFTP":
- Base directory - выбираем папку, где будут храниться образы - C:\tftpd32\root\
- в TFTP Security выбираем Standard
- в Advanced TFTP Options выбираем "Option negotiation", "Show Progress bar", "Translate Unix file names", "Allow '\' As virtual root"
6319151m.png
4. Нажимаем OK, чтобы сохранить настройки. В появившемся окошке нас предупреждают о том, что необходимо перезагрузить программу для применения настроек
5. Необходимо указать опции 66 и 67 в настройках существующего DHCP-сервера (подробное описание опций смотрите в Google):
- 66 - это IP-адрес PXE-сервера
- 67 - это имя файла загрузчика - для grub4dos указываем grldr
 
С минимальной настройкой закончили. Теперь переходим к клиентской части.
Нужен ПК, у которого есть встроеный Network Boot Manager. Подойдут так же и виртуальные машины, если они смогут "достучаться" до нашего сервера:
6492493m.png 6330400m.png
 
Выбираем загрузку по сети и далее у нас проходит загрузка:
- получение IP-адреса
6549839m.png
 
-поиск файла загрузки меню
 6336547m.png 6541647m.png
 
- командная строка загрузчика grub
 6535503m.png
 
 
Если у вас появилась командная строка - всё настроено верно.
 
Скоро напишу описание файла с меню для загрузчика. В принципе, если кто-то делал загрузочные флешки типа RMPrepUSB для grub4dos - можете экспериментировать. 
 
Файл меню default в папке C:\tftpd32\root\menu.lst\ выглядит так:
title XP setup from iso
 
map (hd0) (hd1)
 
map --mem (pd)/firadisk.ima (fd1)
map --mem (md)0x6000+800 (fd0)
map --mem (pd)/win-xp-sp3-pro.iso (0xff)
map --hook
dd if=(fd1) of=(fd0) count=1
chainloader (0xff)
 
 
title Memtest+
map --mem (pd)/memtest86.5.01.iso (hd32)
map --hook
root (hd32)
chainloader (hd32)
boot

 

Файлы образов (firadisk.ima, win-xp-sp3-pro.isomemtest86.5.01.iso) должны быть в папке C:\tftpd32\root\

 

Завтра постараюсь продолжить...

 

П.с. Коментарии приветствуются!

 

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В качестве загрузчика рекомендую использовать Syslinux. Он побольше Груба умеет, да и с грубом у меня был косяк, что на какой-то сетевой карточке он не работал, поэтому сразу отказался от него. Вообще, в среде Линукса для сетевой загрузки, похоже, стандартом считается Syslinux, не думаю, что это нельзя применить и для виндового сервера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В качестве загрузчика рекомендую использовать Syslinux. Он побольше Груба умеет, да и с грубом у меня был косяк, что на какой-то сетевой карточке он не работал, поэтому сразу отказался от него. Вообще, в среде Линукса для сетевой загрузки, похоже, стандартом считается Syslinux, не думаю, что это нельзя применить и для виндового сервера.

 

Согласен с вами, @kvazimoda. Syslinux действительно более функционален, однако с ним еще не работал, поэтому решил сначала попробовать с grub4dos, т.к. его более-менее знаю и понимаю.

 

Что же касается вопроса использования Syslinux на Windows-системах с TFTP сервером - пойдёт без проблем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Согласен с вами, kvazimoda. Syslinux действительно более функционален, однако с ним еще не работал, поэтому решил сначала попробовать с grub4dos, т.к. его более-менее знаю и понимаю.

Всё же попробуйте и разберитесь с ним, там не так уж всё и сложно :)

Я тоже, когда впервые пробовал загрузку по сети, использовал GRUB, правда Linux версию. Как раз тогда и наткнулся на то, что на виртуальной машине работает, а пробую на реальной - не может скачать конфиг, т.к. не видит сетевуху.

Что же касается вопроса использования Syslinux на Windows-системах с TFTP сервером - пойдёт без проблем.

Да это то понятно, он же не выполняется на сервере, а передаётся клиенту. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну и где продолжение...

re -Если у вас появилась командная строка - всё настроено верно.
Командная строка появилась и все.... файлик меню так и не увидел. Куда его ложить. Если как описано то сделал так или есть нюанс???
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 16.03.2017 в 13:27, tolik5555 сказал:

Командная строка появилась и все.... файлик меню так и не увидел. Куда его ложить. Если как описано то сделал так или есть нюанс???

Файл меню необходимо разместить согласно пункту 3:

Цитата

3. Создаём ПАПКУ C:\tftpd32\root\menu.lst\ (здесь будет "default" файлик-меню с выбором вариантов загрузки)

Есть более удобное и функциональное ПО (работает на виртуальной машине):

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


×