Загрузочное меню PXE с System Center Configuration Manager

Загрузочное меню PXE с System Center Configuration Manager

Рассматриваем расширение возможностей System Center Configuration Manager (продукт для управления ИТ-инфраструктурой) при загрузке пользовательских ПК по сети используя PXE. Создаем загрузочное меню на основе PXELinux с функционалом System Center и добавляем возможности антивирусной проверки, образы диагностики и восстановления. В конце статьи касаемся особенностей работы System Center 2012 Configuration Manager совместно с Windows Deployment Services (WDS) при загрузке через PXE.

Все действия производим на тестовой среде, в которой уже есть установленный System Center 2012 Configuration Manager SP1, контроллер домена и некоторое количество тестовых машин. Предполагается, что в SCCM уже используется развертывание по сети используя PXE.

Вступление

Тестовая среда состоит из нескольких виртуальных машин. На всех машинах установлена гостевая ОС Microsoft Windows Server 2008 R2 (x64), сетевой адаптер E1000, SCSI Controller: LSI Logic SAS

Имя (Роли)
IP адрес/ DNS имя
Функционал

SCCM (System Center Configuration Manager)
192.168.57.102
sccm2012.test.local

Установлен System Center Configuration Manager 2012 SP1

DC (AD,DHCP,DNS)
192.168.57.10
dc1.test.local

Роль контроллера домена, DHCP сервера и DNS сервера

TEST (Test machine)
192.168.57.103
test.test.local

Для тестирования

GW (Gateway)
192.168.57.1
Маршрутизация между сетями. Роль шлюза

1. Добавляем PXELinux в SCCM

Действия производим на машине, где установлен System Center Configuration Manager

  • Определим каталог, где располагаются файлы WDS для загрузки, для этого в реестре смотрим значение параметра RootFolder в ветке HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesWDSServerProvidersWDSTFTP
    Значение по умолчанию C:RemoteInstall
    Файлы для загрузки из точки развертывания SCCM расположены в каталогах smsbootx86 и smsbootx64 в зависимости от архитектуры.
    Сначала настраиваем каталог для 32-х разрядной архитектуры, по умолчанию c:Remoteinstallsmsbootx86
  • Качаем архив с последним syslinux . Копируем из syslinux-5.01.zip в c:Remoteinstallsmsbootx86 следующие файлы:
    memdisk, chain.c32, ldlinux.c32, libcom32.c32, libutil.c32, pxechn.c32, vesamenu.c32, pxelinux.0
    Дополнительные файлы нужны, чтобы не было подобной ошибки
    Загрузочное меню PXE с System Center Configuration Manager
  • В c:Remoteinstallsmsbootx86 переименовываем pxelinux.0 в pxelinux.com
    В папке c:remoteinstallsmsbootx86 делаем копию abortpxe.com и переименовываем её в abortpxe.0
    Если же не переименовывать в расширение .0, тогда например инструкция

    Kernel abortpxe.com

    будет выполнена c ошибкой: Booting kernel failed: Bad file number
    Для PXELINUX расширение файла загрузки следует задавать соответственно табличке

    none or other	Linux kernel image
     .0		PXE bootstrap program (NBP) [PXELINUX only]
     .bin		"CD boot sector" [ISOLINUX only]
     .bs		Boot sector [SYSLINUX only]
     .bss		Boot sector, DOS superblock will be patched in [SYSLINUX only]
     .c32		COM32 image (32-bit COMBOOT)
     .cbt		COMBOOT image (not runnable from DOS)
     .com		COMBOOT image (runnable from DOS)
     .img		Disk image [ISOLINUX only]
    

    Источник: http://www.syslinux.org/wiki/index.php/SYSLINUX#KERNEL_file раздел “Kernel file”

  • Для того чтобы не нажимать несколько раз клавишу F12 при загрузке SCCM через меню, переименовываем pxeboot.com в pxeboot.com.f12, копируем pxeboot.n12 в pxeboot.com
    Если этого не сделать, то при выборе будем каждый раз получать такое сообщение
    Загрузочное меню PXE с System Center Configuration Manager
    Замечание: Не забываем переименовать эти файлы и в папке для x64 т.к. когда загружается x86wdsnbp.com из папки x86, загрузчик определяет архитектуру процессора и следующий файл загружает уже из папки с соответствующей архитектуры. Таким образом для x64 последующий файл будет не x86pxeboot.com, а x64pxeboot.com
  • Качаем/создаем background.png, разрешением 640х480, копируем в ту же папку. Создаем папку ISO куда будем размещать ISO образы. Создаем папку pxelinux.cfg для конфигов.
  • В папке pxelinux.cfg создаем файл default, в не юникод кодировке, с содержимым
    default (Нажмите для отображения)

    # используем графическое меню
    DEFAULT vesamenu.c32
    PROMPT 0
    timeout 80
    TOTALTIMEOUT 9000
    
    MENU TITLE PXE Boot Menu (x86)
    MENU INCLUDE pxelinux.cfg/graphics.conf
    MENU AUTOBOOT Starting Local System in 8 seconds
    
    # Boot local HDD (default)
    LABEL bootlocal
    menu label Boot Local
    menu default
    localboot 0x80
    # if it doesn't work 
    #kernel chain.c32
    #append hd0
    
    # Вход в меню по паролю Qwerty, алгоритм MD5
    label av
    menu label Antivirus and tools
    menu PASSWD $1$15opgKTx$dP/IaLNiCbfECiC2KPkDC0
    kernel vesamenu.c32
    append pxelinux.cfgav.conf 
    
    label sccm
    menu label Start to SCCM
    COM32 pxechn.c32
    APPEND sccm2012.test.local::smsbootx86wdsnbp.com -W
    
    label pxe64
    menu label Start to x64 pxelinux
    COM32 pxechn.c32
    APPEND sccm2012.test.local::smsbootx64pxelinux.com
    
    LABEL Abort
    MENU LABEL Exit
    KERNEL abortpxe.0

    В папке pxelinux.cfg создаем файл graphics.conf с содержимым
    graphics.conf (Нажмите для отображения)

    MENU MARGIN 10
    MENU ROWS 16
    MENU TABMSGROW 21
    MENU TIMEOUTROW 26
    MENU COLOR BORDER 30;44 #00000000 #00000000 none
    MENU COLOR SCROLLBAR 30;44 #00000000 #00000000 none
    MENU COLOR TITLE 0 #ffffffff #00000000 none
    MENU COLOR SEL 30;47 #40000000 #20ffffff
    MENU BACKGROUND background.png
    NOESCAPE 0
    ALLOWOPTIONS 0

    В папке pxelinux.cfg создаем файл av.conf с содержимым
    av.conf (Нажмите для отображения)

    DEFAULT vesamenu.c32
    PROMPT 0
    MENU TITLE Antivirus and tools
    MENU INCLUDE pxelinux.cfg/graphics.conf
    
    label main menu
    menu label return to main menu
    kernel vesamenu.c32
    append pxelinux.cfg/default
    
    label drweb
    menu label DrWeb
    kernel memdisk
    append iso raw initrd=isodrweb.iso
    
    label eset
    menu label Eset
    kernel memdisk
    append iso raw initrd=isoeset_sysrescue.iso
    
    label kav
    menu label KAV Rescue CD
    KERNEL kav/rescue
    APPEND initrd=kav/rescue.igz root=live rootfstype=auto vga=791 init=/init kav_lang=ru udev liveimg doscsi nomodeset quiet splash
    
    #Загружаем ISO по полному пути, можно загружать с другого TFTP
    label winpe
    menu label WinPE  from another TFTP
    kernel sccm2012.test.local::smsbootx86memdisk
    append iso raw initrd=sccm2012.test.local::smsbootx86isoWinPE_RaSla.iso
    
    label clonezilla
    menu label Clonezilla
    kernel memdisk
    append iso raw initrd=isoclonezilla.iso
    
  • В итоге каталог c:remoteinstallsmsbootx86 содержит структуру

    c:remoteinstallsmsbootx86
    pxelinux.cfg

    chain.c32
    ldlinux.c32
    libcom32.c32
    libutil.c32
    pxechn.c32
    vesamenu.c32
    pxelinux.com
    background.png
    pxelinux.cfg
    pxelinux.cfg
    pxelinux.cfg
    ISO
    abortpxe.0
    wdsnbp.com
    bootmgfw.efi
    wdsmgfw.efi
    bootmgr.exe
    pxeboot.n12
    pxeboot.com
    abortpxe.com

    default
    av.conf
    graphics.conf
    *.iso

  • Для архитектуры х64 аналогично копируем и создаем такую же структуру в папке c:remoteinstallsmsbootx64

Дополнение
При использовании команды menu PASSWD пароль можно задать либо как есть, либо использовать алгоритм хеширования, добавив в начале параметра соответствующую сигнатуру

Алгоритм
Сигнатура

MD5
$1$

SHA-1
$4$

SHA-2-256
$5$

SHA-2-512
$6$

Таким образом для пароля Qwerty и алгоритме MD5

menu PASSWD $1$15opgKTx$dP/IaLNiCbfECiC2KPkDC0

Сгенерировать пароль можно, например, через онлайн генератор хэшей www.insidepro.com/hashes.php?lang=rus, строка MD5(Unix)

2. Настраиваем загрузку PXELinux

Теперь укажем каким образом загрузить pxelinux.com и получить меню.
Указание загрузчика pxelinux.com посредством функционала WDS не работает в SCCM. Команды вида

wdsutil /set-server /bootprogram:bootx86pxeboot.com /architecture:x86

не обрабатываются. Убедится в том, что образы загрузки не заданы можно выполнив команду вывода конфигурации сервера WDS

wdsutil /get-server /show:images

Загрузочное меню PXE с System Center Configuration Manager
Таким образом в SCCM 2012 нельзя указать свой файл для загрузки через PXE для провайдера SMSPXE. Поэтому настраивать будем активную область DHCP сервера.
В параметрах активной области DHCP задаем параметры соответственно табличке

Опция DHCP
Наименование параметра
Значение

066
Boot server host name
sccm2012.test.local

067
Bootfile name
smsbootx86pxelinux.com

006
DNS Servers
192.168.57.10

015
DNS Domain Name
test.local

В опции 066 указываем FQDN имя sccm сервера, в опции 067 указываем путь до x86 загрузчика pxelinux.com начиная с корня TFTP, в опции 006 указываем IP адрес DNS сервера. В случае если в опции 066 используется короткое имя сервера, в опции 015 указываем DNS суффикс домена.

Дополнение
Более подробно настройку DHCP описал mvgolubev здесь. Но на DC опция 150, IP-адрес TFTP-сервера, отсутствовала в настройках области DHCP и указание опции 150 через netsh не работало.Загрузочное меню PXE с System Center Configuration Manager

3. Проверка работы

Основные настройки закончены и можно приступать к проверке. Указываем на тестовом компьютере в BIOS грузится по сети и загружаемся в меню
Загрузочное меню PXE с System Center Configuration Manager

Выбираем пункт «Start to SCCM» и если на компьютер назначена последовательность задач, то через некоторое время появится окно «Мастер создания последовательности задач» с предложением ввести пароль
Загрузочное меню PXE с System Center Configuration Manager

Перезагружаем машину, снова заходим в меню, выбираем в меню «Antivirus and tools» и вводим пароль Qwerty
Загрузочное меню PXE с System Center Configuration Manager

Выбираем произвольный пункт и наблюдаем загрузку ISO образа в память
Загрузочное меню PXE с System Center Configuration Manager

Ждем и наблюдаем результат
Загрузочное меню PXE с System Center Configuration Manager

Проверка завершена
Загрузочное меню PXE с System Center Configuration Manager

4. Дополнительные настройки и особенности

Настройка маршрутизации

Если клиент, DHCP сервер и сервер, содержащий сетевой загрузчик находятся в одном сегменте сети, то дополнительной настройки не требуется. Если же клиент и DHCP-сервер или сервер WDS/SCCM находятся в разных сегментах сети, рекомендуется настроить на маршрутизаторах переадресацию широковещательных пакетов от клиента на действующий DHCP-сервер и действующий сервер WDS/SCCM. В англоязычной литературе этот процесс известен как «IP Helper table updates». В этом случае клиент, после получения IP адреса, связывается с сервером, содержащим сетевой загрузчик напрямую посредством DHCP пакетов, для того чтобы скачать сетевой загрузчик.
Для маршрутизаторов Cisco используется команда

ip helper-address {ip address}

где {ip address} адрес DHCP-сервера или сервера WDS/SCCM. При использовании этой команды также пересылаются следующие широковещательные UDP пакеты

Порт
Протокол

69
TFTP

53
Domain Name System (DNS)

37
Time service

137
NetBIOS Name Server

138
NetBIOS Datagram Server

67
Bootstrap Protocol (BOOTP)

49
TACACS

Вторым методом для получения клиентом информации о сетевом загрузчике непосредственно с DHCP сервера является указание опций 60,66,67 на DHCP сервере. Использование параметра DHCP 60 c значением «PXEClient» во все области действия DHCP, только если сервер DHCP размещается на том же сервере, что и службы развертывания Windows. В этом случае клиент связывается с сервером служб развертывания Windows напрямую по протоколу TFTP через UDP-порт 4011, а не по DHCP. Этот способ не рекомендуется Microsoft из-за проблем с балансировкой нагрузки, неверной обработкой параметров DHCP и параметров ответа служб развертывания Windows на стороне клиента. А также потому, что использование только двух опций 66 и 67 DHCP позволяет обойти параметры, заданные на сервере сетевой загрузки.
Также нужно открыть следующие UDP порты на сервере служб развертывания Windows
порт 67 (DHCP)
порт 69 (TFTP)
порт 4011 (PXE)
и порт 68, если требуется DHCP авторизация на сервере.

Более подробно процесс настройки и нюансы перенаправления между разными серверами WDS описан ниже в источниках:
Управление программами сетевой загрузки http://technet.microsoft.com/ru-ru/library/cc732351(v=ws.10).aspx
Управление сервером http://technet.microsoft.com/ru-ru/library/cc770637(v=ws.10).aspx
Microsoft Product Support Services (PSS) support boundaries for network booting Microsoft Windows Preinstallation Environment (Windows PE) 2.0 http://support.microsoft.com/kb/926172/en-us
How to forward UDP broadcast (BOOTP / DHCP) on Cisco http://www.cisco-faq.com/163/forward_udp_broadcas.html
Особенности работы и настройки DHCP на маршрутизаторах Cisco (Часть 2) http://habrahabr.ru/post/89997/

Дополнительные возможности локальной загрузки

На тестовой среде команда

localboot 0

выдает такую ошибку
Загрузочное меню PXE с System Center Configuration Manager
Из документации syslinux следует, что при

localboot 0

загрузка пойдет с локального диска. А при указании конкретного значения 0x00 с основного (primary) флоппи диска, при указании 0x80 c основного (primary) жесткого диска. Изменив команду на

localboot 0x80

локальная ОС загрузилась.
Если же есть необходимость сделать загрузку с конкретного диска, раздела или команда localboot не работает, тогда можно воспользоваться возможностями модуля chain.c32. После его загрузки, командой append указываем конкретный диск или раздел диска, нумерация дисков начинается с 0, нумерация разделов с 1 т.к. при указании раздела 0 загружается MBR. При указании диска раздел можно не указывать.

KERNEL chain.c32
APPEND hd0 0

или

KERNEL chain.c32
APPEND hd0

Источники: http://www.syslinux.org/wiki/index.php/SYSLINUX#LOCALBOOT_type_.5BISOLINUX.2C_PXELINUX.5D
http://www.gossamer-threads.com/lists/syslinux/users/7127

Порядок и описание загрузки файлов через PXE

Как уже упоминалось в начале статьи, каталог, где располагаются файлы WDS для загрузки, содержится в значении параметра RootFolder в ветке реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesWDSServerProvidersWDSTFTP
Значение по умолчанию C:RemoteInstall
Здесь же в параметре ReadFilter указаны каталоги, где TFTP сервер ищет файлы для загрузки, начиная c корня. При установленном SCCM 2012 SP1 этот параметр такой

boot*
tmp*
SMSBoot*
SMSTemp*
SMSImages*

Если изменить значение параметра на * то будут обрабатываться все файлы, расположенные в каталоге RemoteInstall.

Роль точки развертывания SCCM 2012 прописывается в параметре реестра ProvidersOrder, расположенной в ветке HKLMSystemCurrentControlSetWDSServerProvidersWDSPXE
Параметр ProvidersOrder может принимать значения

SMSPXE
точка обслуживания PXE в SCCM

SMS.PXE.Filter
Обработчик PXE скриптов из MDT (Microsoft Deployment Toolkit)

BINLSVC
Стандартный обработчик WDS и RIS

При установленном SCCM параметр ProvidersOrder имеет значение SMSPXE. Изменяя параметр можно менять порядок загрузки провайдеров.

В каталоге RemoteInstall расположены следующие стандартные файлы

wdsnbp.com

Программа сетевой загрузки, разработанная для служб развертывания Windows и выполняющая следующие задачи:
1. Обнаружение архитектуры.
2. Обслуживание ожидающих компьютеров. Когда включена политика автоматического добавления, эта программа сетевой загрузки посылается на ожидающие компьютеры, чтобы приостановить сетевую загрузку и сообщить серверу архитектуру клиентского компьютера.
3. Использование ссылок сетевой загрузки (включая использование параметров 66 и 67 протокола DHCP)

PXEboot.com

(По умолчанию) Требует, чтобы пользователь нажал клавишу F12 для продолжения сетевой загрузки

PXEboot.n12

Не требует нажатия пользователем клавиши F12 и немедленно начинает сетевую загрузку

AbortPXE.com

Загружает компьютер с использованием следующего элемента загрузки в BIOS без ожидания

Bootmgr.exe

Диспетчер загрузки Windows (Bootmgr.exe или Bootmgr.efi). Загружает с помощью встроенного ПО загрузчик Windows из определенного раздела диска или через сетевое подключение (в случае сетевой загрузки)

Bootmgfw.efi

Версия EFI программ PXEboot.com и PXEboot.n12 (в EFI выбор загружать или не загружать PXE осуществляется в оболочке EFI, а не программой сетевой загрузки). Программа Bootmgfw.efi объединяет возможности PXEboot.com, PXEboot.n12, abortpxe.com и bootmgr.exe. На данный момент она существует только для архитектур x64 и Itanium

Default.bcd

Хранилище данных конфигурации загрузки (BCD), формат REGF, можно загружать в REGEDIT, заменяет собой текстовый файл Boot.ini

Загрузка происходит в следующем порядке в соответствии с описанием выше
1. Загружается wdsnbp.com.
2. Далее загружается pxeboot.com соответствующей архитектуры
3. PXEBoot.com загружает bootmgr.exe и хранилище данных конфигурации загрузки BCD
4. Bootmgr.exe считывает записи операционной системы данных конфигурации загрузки BCD и загружает файл Boot.sdi и образ Windows PE (boot.wim)
5. Bootmgr.exe начинает загрузку Windows PE, обращаясь к Winload.exe в образе Windows PE

Если в RemoteInstall есть папки

Boot
Images
Mgmt
Templates
Tmp
WdsClientUnattend

их наличие означает, что перед добавлением роли точки распространения в SCCM 2012 (точки обслуживания PXE в SCCM 2007) было какое либо действие по конфигурированию установленной Windows Deployment Services (WDS), в результате которого были автоматически созданы эти папки.
Для роли точки распространения (точки обслуживания PXE в SCCM 2007) достаточно только следующих папок

SMSBoot
SMSIMAGES
SMSTemp
Stores

Это не означает, что SCCM установлен неправильно, но может указывать на возможный источник ошибок.
Очень подробно решение различных проблем связки WDS, SCCM и PXE рассмотрено в статье Troubleshooting the PXE Service Point and WDS in Configuration Manager 2007

Итог

В ИТ-инфраструктуре под управлением System Center Configuration Manager добавился новый инструмент для работы системных администраторов на местах.

Список ссылок на образы ISO (Нажмите для отображения)download.f-secure.com/estore/rescue-cd-3.16-52606.iso
git.ipxe.org/releases/wimboot/wimboot-latest.zip
download.geo.drweb.com/pub/drweb/livecd/drweb-livecd-602.iso
rescuedisk.kaspersky-labs.com/rescuedisk/updatable/kav_rescue_10.iso
esetsupport.ru/eset_sysrescue.iso
boot.ipxe.org/ipxe.iso
citylan.dl.sourceforge.net/project/clonezilla/clonezilla_live_alternative/20130226-quantal/clonezilla-live-20130226-quantal-i386.iso
ftp.rasla.ru/_Distr_/WinPE/RaSla/WinPE_RaSla.iso
www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-5.01.zip

Спасибо за внимание!
Загрузочное меню PXE с System Center Configuration Manager

Источник: habr.com