Завантажувальне меню 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
Додаткові файли потрібні, щоб не було такої помилки
В 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]
Для того, щоб не натискати кілька разів клавішу F12 при завантаженні SCCM через меню, перейменовуємо pxeboot.com на pxeboot.com.f12, копіюємо pxeboot.n12 на pxeboot.com
Якщо цього не зробити, то при виборі щоразу отримуватимемо таке повідомлення Примітка: Не забуваємо перейменувати ці файли в папці для 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 містить структуру
Для архітектури х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. Команди виду
не обробляються. Переконайтеся, що образи завантаження не задані, виконавши команду виведення конфігурації сервера WDS
wdsutil /get-server /show:images
Таким чином, у 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 не працювало.
3. Перевірка роботи
Основні налаштування закінчені і можна розпочати перевірку. Вказуємо на тестовому комп'ютері в BIOS вантажиться по мережі та завантажуємось у меню
вибираємо пункт «Start to SCCM» і якщо на комп'ютер призначено послідовність завдань, то через деякий час з'явиться вікно «Майстер створення послідовності завдань» із пропозицією ввести пароль
Перезавантажуємо машину, знову заходимо в меню, вибираємо в меню «Antivirus and tools» та вводимо пароль Qwerty
Вибираємо довільний пункт та спостерігаємо завантаження ISO образу на згадку
Чекаємо та спостерігаємо результат
Перевірка завершена
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 авторизація на сервері.
завантаження піде з локального диска. А за вказівкою конкретного значення 0x00 з основного (primary) флоппі диска, при вказівці 0x80 c основного (primary) жорсткого диска. Змінивши команду на
localboot 0x80
локальна ОС завантажилась.
Якщо є необхідність зробити завантаження з конкретного диска, розділу або команда localboot не працює, тоді можна скористатися можливостями модуля chain.c32. Після його завантаження командою append вказуємо конкретний диск або розділ диска, нумерація дисків починається з 0, нумерація розділів з 1 т.к. під час вказівки розділу 0 завантажується MBR. Якщо диск вказано, розділ можна не вказувати.
Як уже згадувалося на початку статті, каталог, де розміщуються файли 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) достатньо лише наступних папок