Загрузнае меню 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
  • Качаем/ствараем фон.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
    фон.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=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-серверы
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
Time service

137
NetBIOS Name Server

138
NetBIOS Datagram Server

67
Bootstrap Protocol (BOOTP)

49
ТАКАЦЫ

Другім метадам для атрымання кліентам інфармацыі аб сеткавым загрузніку непасрэдна з 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) на 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 у 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

Дадаць каментар