Завантажувальне меню 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 (шлюз)
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

    буде виконана з помилкою: 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

    дефолт
    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=ukr, рядок 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-сервери
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
Система доменних імен (DNS)

37
Служба часу

137
NetBIOS Name Server

138
NetBIOS Datagram Server

67
Bootstrap Protocol (BOOTP)

49
ТАКАСИ

Другим методом отримання клієнтом інформації про мережному завантажувачі безпосередньо з DHCP сервера є вказівка ​​опцій 60,66,67 на DHCP сервері. Використання параметра DHCP 60 з значенням «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 сервер шукає файли для завантаження, починаючи з кореня. При встановленому 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

Додати коментар або відгук