Jump to content
СофтФорум - всё о компьютерах и не только

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


Leon-Killer22
 Share

Recommended Posts

Здравствуйте, товарищи!
 
Просьба не пинать - это моя первая попытка сделать небольшое подобие мануала.
 
Решил поделиться опытом установки и первичной настройки 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
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

 

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

 

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

Link to comment
Share on other sites

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

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

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

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

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

Link to comment
Share on other sites

  • 2 years later...

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

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

  • 2 months later...
В 16.03.2017 в 13:27, tolik5555 сказал:

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

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

Цитата

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

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

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...