Развёртывание PXE сервера в домене.

Разворачиваю на базе ОС Debian 9.6.
Т.к. дело происходит в уже настроенной доменной, виндовой, сети с поднятым DHCP сервером, то устанавливать его на нашу машину не буду. Просто включу на DHCP пункты 66 и 67 для определения PXE сервера. В пункте 66 укажем IP адрес нашего будущего сервера, в пункте 67 напишем «pxelinux.0» — это файл загрузки операционной системы.

Далее установим необходимые компоненты на наш, уже настроенный, сервер.

apt-get install tftp tftpd-hpa

и сразу изменим конфиг

nano /etc/default/tftpd-hpa


TFTP_USERNAME=»tftp»

TFTP_DIRECTORY=»/srv/tftp» #путь к корню tftp (можно указать свой если не устраивает)

TFTP_ADDRESS=»0.0.0.0:69″

TFTP_OPTIONS=»—secure -l -v -m /etc/tftpd.remap»

и добавим в /etc/tftpd.remap строку

rg \\ /

для изменения слэшей с никсовых на виндовые.

Установим самбу

apt-get install samba

и добавим в её конфиг /etc/samba/smb.conf информацию о папке где будут лежать образы винды


[images]

comment = images

path = /srv/tftp/images

create mask = 0660

directory mask = 0771

writable = yes

guest ok=yes

создадим папку с 755 правами, которую прописали в конфиге выше, и заодно рестартанём самбу

# mkdir /srv/tftp/images

# chmod 755 /srv/tftp/images

# service samba restart

далее в папке /srv/tftp/ создаём папку (название папки критично)

mkdir /srv/tftp/pxelinux.cfg

и в ней создаём файл default, в котором сразу ресуем менюшку

# nano /srv/tftp/pxelinux.cfg/default

default vesamenu.c32 # графический стиль меню
ALLOWOPTIONS 0
PROMPT 0
MENU TITLE PXE Boot Menu
MENU AUTOBOOT Starting Local System in 10 seconds
label^Boot from local drive

menu label Boot from local drive

menu default

localboot 0

timeout 150

TOTALTIMEOUT 9000

LABEL PXE

menu passwd qwerty # пароль для входа в PXE

MENU LABEL ^Boot from PXE

KERNEL vesamenu.c32

APPEND pxelinux.cfg/index.menu

первоначальное меню будет состоять всего из 2ух пунктов

  1. загрузка с локального диска (автоматически загрузится через 10 секунд)
  2. загрузка меню PXE сервера с парольной защитой
    (чтоб юзвери себе сами винды не перебивали) , пароль «qwerty» неплохо бы сменить на что-то своё.

И т.к. второй пункт меню ссылает нас на «index.menu» — создадим его и нарисуем менюшку.

# nano /srv/tftp/pxelinux.cfg/index.menu

MENU TITLE PXE Boot Menu
default vesamenu.c32
ALLOWOPTIONS 0
PROMPT 0

    LABEL Windows
      MENU LABEL ^Windows
      kernel memdisk
      initrd /Boot/winpe.iso
      append iso raw
    LABEL Linux
      MENU LABEL ^Linux
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/linux
    LABEL Restore
      MENU LABEL ^Restore
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/restore
    LABEL LocalBoot
      MENU LABEL ^Boot from HDD
      LOCALBOOT 0x80

Не хочу пока заморачиваться с красотой, разными шрифтами и фонами, поэтому оставлю как есть. В итоге, если всё сделано правильно, то при загрузке любой машины с нашего сервера будет видна такая красота

и при выборе второго пункта меню, после ввода пароля будет так

Соответственно всегда есть возможность продолжить грузиться с HDD без перезагрузки машины, а так-же ползать по меню выбирая разные варианты дальнейшей загрузки.

Монтируем образ Windows.

Для загрузки виндовых образов по сети нам необходимо собрать образ WindowsPE с которого будет идти установка. Я буду собирать её на базе Win 8.1

Для этого понадобится Windows ADK который можно скачать с официального сайта производителя.

После установки необходимо запустить «Среду средств развертывания и создания образов» во имя Администратора и выполнить в ней пару команд (в которых при желании можно разобраться, а можно не думая скопистить и норм будет отвечаю… )

# Копируем ядро системы 
copype amd64 c:\WinPE_x64
# монтируем образ системы
Dism /Mount-Image /ImageFile:"c:\WinPE_x64\media\sources\boot.wim"
/index:1 /MountDir:"c:\WinPE_x64\mount"
# открываем на редактирование файл автозапуска
notepad c:\WinPE_x86\mount\Windows\System32\Startnet.cmd

Я накидал панельку запуска с выбором из 4 пунктов, для 4 систем соответственно.

Тут нужно будет подставить IP адрес вашего samba сервера и поменять пути если они не соответствуют написанному гайду.

@echo off
echo.
echo Loading...
echo.
echo http://highclouds.ru

echo Mount images directory

wpeinit
ipconfig
net use k: \\10.130.4.126\images


pause

cls
ping -n 20 localhost > Nul
REM тут выставлена задержка по времени, чтобы успела подключится 
REM сетевая шара
echo ################################################
echo.
echo Select image:
echo.
echo 1) Windows 8.1     Press "1" end press "Enter"
echo 2) Windows 2012R2  Press "2" end press "Enter"
echo 3) Windows 7 SP1   Press "3" end press "Enter"
echo 4) Windows 2008    Press "4" end press "Enter"


set /p ID=
echo.

if %ID%==1 goto :uno
if %ID%==2 goto :dos
if %ID%==3 goto :tres
if %ID%==4 goto :quatro

:quatro
echo You choice "4"
echo.
echo mount image
ping -n 20 localhost > Nul
net use k: \\10.130.4.126\images
ping -n 10 localhost > Nul
echo Start Windows 2008 setup...
k:\Win2008\Setup.exe
echo.
exit /b
:tres
echo You choice "3"
echo.
echo mount image
ping -n 20 localhost > Nul
net use k: \\10.130.4.126\images
ping -n 10 localhost > Nul
echo Start Windows 7 setup...
k:\Win7\Setup.exe
echo.
exit /b
:dos
echo You choice "2"
echo.
echo mount image
ping -n 20 localhost > Nul
net use k: \\10.130.4.126\images
ping -n 10 localhost > Nul
echo Start Windows 2012R2 setup...
k:\Win2012R2\Setup.exe
echo.
exit /b

:uno
echo You choice "1"
echo.
echo mount image
ping -n 20 localhost > Nul
net use k: \\10.130.4.126\images
ping -n 10 localhost > Nul
echo Start Windows 8.1 setup...
k:\Win8\Setup.exe
exit /b

далее сохраняем изменения, собираем образ обратно и копируем получившийся файл в корень диска С:

Dism /Unmount-Image /MountDir:"c:\WinPE_x64\mount" /commit

MakeWinPEMedia /ISO c:\WinPE_x64 c:\winpe.iso

Данный файл надо положить в папку /srv/tftp/Boot на нашем сервере. А в папку /srv/tftp/images положить распакованные образы системы, папки с названиями образов должны совпадать с путями прописанными в конфиге Startnet.cmd


Добавление Debian в PXE

Создаём в корне tftp папку debian с 755 правами

mkdir /srv/tftp/debian
chmod 755 /srv/tftp/debian

и переносим туда файлы для сетевой установки системы.
Нам нужны 2 файла — «linux» и «initrd.gz», достать их можно на офф сайте дебиана, путь будет примерно таким —
«Debian9.8/main/installer-amd64/current/images/netboot/ «

Далее допишем в меню выбор данного образа. У меня весь файл меню выглядит так

# nano /srv/tftp/pxelinux.cfg/linux

MENU TITLE Linux

    LABEL Return to Main Menu
      MENU LABEL ^Return to Main Menu
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/index.menu

    label Debian 9.8
      menu label ^Debian 9.8
      kernel debian/linux
      append initrd=debian/initrd.gz

    label CentOS 7
      kernel Linux/Centos7/vmlinuz
      append initrd=Linux/Centos7/initrd.img method=\\10.130.4.126\images\Centos7 devfs=nomount ksdevice=link ramdisk_size=100000

    label CentOS 7 i386
      kernel Linux/Centos7/vmlinuz
      append initrd=Linux/Centos7/initrd.img method=https://centos-altarch.mirror.liquidtelecom.com/7.6.1810/os/i386/ devfs=nomount ksdevice=link ramdisk_size=100000

    label Centos 6 i386
      kernel Linux/Centos6/vmlinuz
      append initrd=Linux/Centos6/initrd.img method=http://mirror.mirohost.net/centos/6/os/i386/ devfs=nomount ksdevice=link ramdisk_size=100000

C убунту поступаем примерно так-же, только файлы
«linux» и «initrd.gz» можно вытащить с установочного диска.

Установка CentOS

Для запуска установщика CentOS нам, как и для Debian, нужны 2 файла, а именно «vmlinuz» и «initrd.img». Их можно вытащить с официального сайта или установочного диска. Конфиг меню уже приведён выше.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *