Menu de inicialização PXE com System Center Configuration Manager

Menu de inicialização PXE com System Center Configuration Manager

Estamos considerando a ampliação das funcionalidades do System Center Configuration Manager (um produto para gerenciamento de infraestrutura de TI) ao iniciar PCs de usuários pela rede usando PXE. Criamos um menu de inicialização baseado em PXELinux com funcionalidade do System Center e adicionamos capacidades de verificação antivírus, imagens de diagnóstico e recuperação. No final do artigo, abordamos as características do uso do System Center 2012 Configuration Manager em conjunto com o Windows Deployment Services (WDS) durante a inicialização via PXE.

Todas as ações são realizadas em um ambiente de teste, onde já está instalado o System Center 2012 Configuration Manager SP1, um controlador de domínio e um certo número de máquinas de teste. Presume-se que o SCCM já está utilizando a implantação pela rede usando PXE.

Introdução

O ambiente de teste consiste em várias máquinas virtuais. Em todas as máquinas, está instalada a OS convidada Microsoft Windows Server 2008 R2 (x64), adaptador de rede E1000, Controlador SCSI: LSI Logic SAS.

Nome (Funções)
Endereço IP / Nome DNS
Funcionalidade

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

System Center Configuration Manager 2012 SP1 instalado

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

Função de controlador de domínio, servidor DHCP e servidor DNS

TEST (Máquina de teste)
192.168.57.103
test.test.local

Para testes

GW (Gateway)
192.168.57.1
Roteamento entre redes. Função do gateway

1. Adicionando PXELinux ao SCCM

As ações são realizadas na máquina onde o System Center Configuration Manager está instalado.

  • Vamos definir o diretório onde estão os arquivos WDS para inicialização, para isso, verificamos a chave no registro. RootFolder na chave HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesWDSServerProvidersWDSTFTP
    Valor padrão C:RemoteInstall
    Os arquivos para inicialização do ponto de implantação do SCCM estão localizados nos diretórios smsbootx86 e smsbootx64 dependendo da arquitetura.
    Primeiro, configuramos o diretório para a arquitetura de 32 bits, por padrão c:Remoteinstallsmsbootx86
  • Baixamos o arquivo compactado com a versão mais recente syslinux . Copiamos do syslinux-5.01.zip para c:Remoteinstallsmsbootx86 os seguintes arquivos:
    memdisk, chain.c32, ldlinux.c32, libcom32.c32, libutil.c32, pxechn.c32, vesamenu.c32, pxelinux.0
    Arquivos adicionais são necessários para evitar erros semelhantes
    Menu de inicialização PXE com System Center Configuration Manager
  • Em c:Remoteinstallsmsbootx86 renomeamos pxelinux.0 em pxelinux.com
    Na pasta c:remoteinstallsmsbootx86 fazemos uma cópia de abortpxe.com e a renomeamos para abortpxe.0
    Se não renomearmos para a extensão .0, então, por exemplo, o comando
    Kernel abortpxe.com

    será executado com erro: Booting kernel failed: Bad file number
    Para o PXELINUX, a extensão do arquivo de inicialização deve ser definida de acordo com a tabela.

    nenhum ou outro	imagem do núcleo Linux
     .0		programa de inicialização PXE (NBP) [somente PXELINUX]
     .bin		"setor de inicialização do CD" [somente ISOLINUX]
     .bs		Setor de inicialização [somente SYSLINUX]
     .bss		Setor de inicialização, superbloco DOS será corrigido [somente SYSLINUX]
     .c32		imagem COM32 (COMBOOT de 32 bits)
     .cbt		imagem COMBOOT (não executável a partir do DOS)
     .com		imagem COMBOOT (executável a partir do DOS)
     .img		imagem de disco [somente ISOLINUX]
    

    Fonte: http://www.syslinux.org/wiki/index.php/SYSLINUX#KERNEL_file seção “Arquivo do núcleo”

  • Para evitar pressionar a tecla F12 várias vezes ao inicializar o SCCM pelo menu, renomeamos pxeboot.com para pxeboot.com.f12, copiamos pxeboot.n12 para pxeboot.com
    Se isso não for feito, a cada seleção receberemos esta mensagem
    Menu de inicialização PXE com System Center Configuration Manager
    Nota: Não esqueça de renomear esses arquivos também na pasta para x64 porque, ao inicializar x86wdsnbp.com da pasta x86, o carregador determina a arquitetura do processador e o próximo arquivo já é carregado da pasta correspondente à arquitetura. Assim, para x64, o arquivo subsequente será não x86pxeboot.com, e x64pxeboot.com
  • Baixamos/criamos background.png, com resolução 640x480, copiamos para a mesma pasta. Criamos a pasta ISO onde iremos armazenar as imagens ISO. Criamos a pasta pxelinux.cfg para as configurações.
  • Na pasta pxelinux.cfg, criamos o arquivo default, em codificação não UNICODE, com o conteúdo
    default (Clique para exibir)
    # используем графическое меню
    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

    Na pasta pxelinux.cfg criamos o arquivo graphics.conf com o conteúdo
    graphics.conf (Clique para exibir)

    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

    Na pasta pxelinux.cfg criamos o arquivo av.conf com o conteúdo
    av.conf (Clique para exibir)

    DEFAULT vesamenu.c32
    PROMPT 0
    MENU TITLE Antivirus e ferramentas
    MENU INCLUDE pxelinux.cfg/graphics.conf
    
    label main menu
    menu label voltar para o menu principal
    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
    
    #Iniciamos ISO pelo caminho completo, pode ser carregado de outro TFTP
    label winpe
    menu label WinPE de outro 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
    
  • Como resultado, o diretório c:remoteinstallsmsbootx86 contém a estrutura

    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

    padrão
    av.conf
    graphics.conf
    *.iso

  • Para a arquitetura x64, copiamos e criamos a mesma estrutura na pasta c:remoteinstallsmsbootx64

Extensão
Ao usar o comando menu PASSWD a senha pode ser definida como está ou usar o algoritmo de hash adicionando no início do parâmetro a assinatura correspondente

O algoritmo
Assinatura

MD5
$1$

SHA-1
$4$

SHA-2-256
$5$

SHA-2-512
$6$

Assim, para a senha Qwerty e algoritmo MD5

menu PASSWD $1$15opgKTx$dP/IaLNiCbfECiC2KPkDC0

É possível gerar uma senha, por exemplo, através de um gerador de hashes online www.insidepro.com/hashes.php?lang=pt, string MD5(Unix)

2. Configurando o carregamento PXELinux

Agora vamos indicar como carregar pxelinux.com e obter o menu.
A indicação do carregador pxelinux.com através da funcionalidade WDS não funciona no SCCM. Comandos do tipo

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

não são processados. Para confirmar que as imagens de inicialização não estão definidas, você pode executar o comando para exibir a configuração do servidor WDS

wdsutil /get-server /show:images

Menu de inicialização PXE com System Center Configuration Manager
Assim, no SCCM 2012 não é possível especificar seu arquivo para inicialização via PXE para o provedor SMSPXE. Portanto, vamos configurar a área ativa do servidor DHCP.
Nas configurações da área ativa do DHCP, definimos os parâmetros de acordo com a tabela

Opção DHCP
Nome do parâmetro
O valor

066
Nome do host do servidor de inicialização
sccm2012.test.local

067
Nome do arquivo de inicialização
smsbootx86pxelinux.com

006
Servidores DNS
192.168.57.10

015
Nome do domínio DNS
test.local

Na opção 066, indicamos o nome FQDN do servidor SCCM, na opção 067, indicamos o caminho até o carregador x86 pxelinux.com começando a partir da raiz do TFTP, na opção 006 indicamos o endereço IP do servidor DNS. Caso na opção 066 seja utilizado um nome curto do servidor, na opção 015 indicamos o sufixo DNS do domínio.

Extensão
Descrevi a configuração do DHCP com mais detalhes mvgolubev aqui. Mas na DC opção 150, o endereço IP do servidor TFTP, estava ausente nas configurações da área DHCP e a indicação da opção 150 através do netsh não funcionou.Menu de inicialização PXE com System Center Configuration Manager

3. Verificação do funcionamento

As configurações principais estão concluídas e podemos prosseguir para a verificação. Indicamos no computador de teste no BIOS para inicializar pela rede e carregamos no menu
Menu de inicialização PXE com System Center Configuration Manager

Selecionamos a opção «Iniciar o SCCM» e se uma sequência de tarefas for atribuída ao computador, após algum tempo aparecerá uma janela «Assistente de criação de sequência de tarefas» solicitando para inserir a senha
Menu de inicialização PXE com System Center Configuration Manager

Reiniciamos a máquina, entramos novamente no menu, selecionamos no menu «Antivírus e ferramentas» e inserimos a senha Qwerty
Menu de inicialização PXE com System Center Configuration Manager

Selecionamos uma opção arbitrária e observamos o carregamento da imagem ISO na memória
Menu de inicialização PXE com System Center Configuration Manager

Aguardamos e observamos o resultado
Menu de inicialização PXE com System Center Configuration Manager

Verificação concluída
Menu de inicialização PXE com System Center Configuration Manager

4. Configurações adicionais e características

Configuração de roteamento

Se o cliente, o servidor DHCP e o servidor que contém o carregador de rede estiverem no mesmo segmento de rede, nenhuma configuração adicional é necessária. No entanto, se o cliente e o servidor DHCP ou o servidor WDS/SCCM estiverem em segmentos de rede diferentes, é recomendável configurar o roteador para redirecionar pacotes de broadcast do cliente para o servidor DHCP ativo e o servidor WDS/SCCM ativo. Na literatura em inglês, esse processo é conhecido como 'atualizações da tabela IP Helper'. Nesse caso, após receber o endereço IP, o cliente conecta-se diretamente ao servidor que contém o carregador de rede via pacotes DHCP para baixar o carregador de rede.
Para roteadores Cisco, utiliza-se o comando

ip helper-address {ip address}

onde {ip address} endereço do servidor DHCP ou do servidor WDS/SCCM. Ao usar esse comando, também são encaminhados os seguintes pacotes UDP de broadcast

Porta
Protocolo

69
TFTP

53
Sistema de Nomes de Domínio (DNS)

37
Serviço de hora

137
Servidor de Nomes NetBIOS

138
Servidor de Datagramas NetBIOS

67
Protocolo Bootstrap (BOOTP)

49
TACACS

Um segundo método para que o cliente obtenha informações sobre o carregador de rede diretamente do servidor DHCP é especificar as opções 60, 66, 67 no servidor DHCP. O uso da opção DHCP 60 com o valor ‘PXEClient’ em todos os escopos DHCP, apenas se o servidor DHCP estiver hospedado no mesmo servidor que os serviços de implantação do Windows. Nesse caso, o cliente se conecta diretamente ao servidor de serviços de implantação do Windows via protocolo TFTP através da porta UDP 4011, e não via DHCP. Esse método não é recomendado pela Microsoft devido a problemas de balanceamento de carga, tratamento inadequado das opções DHCP e das respostas dos serviços de implantação do Windows do lado do cliente. Além disso, o uso apenas das opções 66 e 67 do DHCP permite contornar as opções definidas no servidor de carregamento de rede.
Também é necessário abrir as seguintes portas UDP no servidor de serviços de implantação do Windows
porta 67 (DHCP)
porta 69 (TFTP)
porta 4011 (PXE)
e porta 68, se for necessária autorização DHCP no servidor.

Um detalhamento mais aprofundado do processo de configuração e nuances do redirecionamento entre diferentes servidores WDS é descrito abaixo nas fontes:
Gerenciamento de programas de carregamento de rede http://technet.microsoft.com/ru-ru/library/cc732351(v=ws.10).aspx
Gerenciamento do servidor http://technet.microsoft.com/ru-ru/library/cc770637(v=ws.10).aspx
Limites de suporte dos Serviços de Suporte a Produtos Microsoft (PSS) para carregamento de rede do Microsoft Windows Preinstallation Environment (Windows PE) 2.0 http://support.microsoft.com/kb/926172/en-us
Como encaminhar broadcast UDP (BOOTP / DHCP) em Cisco http://www.cisco-faq.com/163/forward_udp_broadcas.html
Características de operação e configuração do DHCP em roteadores Cisco (Parte 2) http://habrahabr.ru/post/89997/

Recursos adicionais de carregamento local

Na ambiente de teste, o comando

localboot 0

gera esse erro
Menu de inicialização PXE com System Center Configuration Manager
De acordo com a documentação do syslinux, ao

localboot 0

a inicialização ocorrerá a partir do disco local. E ao especificar o valor específico 0x00, da unidade de disquete primária, ao especificar 0x80 do disco rígido primário. Alterando o comando para

localboot 0x80

o sistema operacional local foi carregado.
Se houver necessidade de inicializar a partir de um disco específico, partição ou comando localboot não funcionar, então pode-se utilizar as funcionalidades do módulo chain.c32. Após seu carregamento, com o comando append especificamos o disco ou partição específica, com numeração dos discos começando em 0 e numeração das partições começando em 1, já que ao especificar partição 0 o MBR é carregado. Ao especificar o disco, a partição pode não ser indicada.

KERNEL chain.c32
APPEND hd0 0

ou

KERNEL chain.c32
APPEND hd0

Fontes: http://www.syslinux.org/wiki/index.php/SYSLINUX#LOCALBOOT_type_.5BISOLINUX.2C_PXELINUX.5D
http://www.gossamer-threads.com/lists/syslinux/users/7127

A ordem e descrição dos arquivos de inicialização via PXE

Como já mencionado no início do artigo, o diretório onde os arquivos WDS para inicialização estão localizados é contido no valor do parâmetro RootFolder na chave do registro HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesWDSServerProvidersWDSTFTP
Valor padrão C:RemoteInstall
Aqui, no parâmetro ReadFilter são indicados os diretórios onde o servidor TFTP procura arquivos para inicialização, começando a partir da raiz. Com o SCCM 2012 SP1 instalado, esse parâmetro é

boot*
tmp*
SMSBoot*
SMSTemp*
SMSImages*

Se alterar o valor do parâmetro para * todos os arquivos localizados no diretório RemoteInstall.

O papel do ponto de implantação do SCCM 2012 é especificado no parâmetro do registro ProvidersOrder, localizada na chave HKLMSystemCurrentControlSetWDSServerProvidersWDSPXE
Parâmetro ProvidersOrder pode assumir valores

SMSPXE
ponto de serviço PXE no SCCM

SMS.PXE.Filter
Manipulador de scripts PXE do MDT (Microsoft Deployment Toolkit)

BINLSVC
Manipulador padrão do WDS e RIS

Com o SCCM instalado, o parâmetro ProvidersOrder é significativa SMSPXE. Alterando o parâmetro, é possível mudar a ordem de inicialização dos provedores.

No diretório RemoteInstall estão localizados os seguintes arquivos padrão

wdsnbp.com

Programa de inicialização em rede, desenvolvido para serviços de implantação do Windows e que realiza as seguintes tarefas:
1. Detecção de arquitetura.
2. Atendimento a computadores em espera. Quando a política de adição automática está ativada, este programa de inicialização em rede é enviado aos computadores em espera para pausar a inicialização em rede e informar ao servidor a arquitetura do computador cliente.
3. Uso de links de inicialização em rede (incluindo uso dos parâmetros 66 e 67 do protocolo DHCP)

PXEboot.com

(Por padrão) Requer que o usuário pressione a tecla F12 para continuar a inicialização em rede

PXEboot.n12

Não requer que o usuário pressione a tecla F12 e começa imediatamente o carregamento pela rede

AbortPXE.com

Carrega o computador usando o próximo item de inicialização na BIOS sem esperar

Bootmgr.exe

Gerenciador de inicialização do Windows (Bootmgr.exe ou Bootmgr.efi). Carrega o carregador do Windows por meio do firmware a partir de uma partição do disco ou através de uma conexão de rede (em caso de carregamento pela rede)

Bootmgfw.efi

Versão EFI dos programas PXEboot.com e PXEboot.n12 (na EFI, a escolha de carregar ou não o PXE é feita no shell EFI, não pelo programa de carregamento pela rede). O programa Bootmgfw.efi combina as funcionalidades de PXEboot.com, PXEboot.n12, abortpxe.com e bootmgr.exe. Até o momento, ele existe apenas para as arquiteturas x64 e Itanium

Default.bcd

Armazenamento de dados de configuração de inicialização (BCD), formato REGF, pode ser carregado no REGEDIT, substitui o arquivo texto Boot.ini

O carregamento ocorre na seguinte ordem de acordo com a descrição acima
1. Carrega-se wdsnbp.com.
2. Em seguida, carrega-se pxeboot.com da arquitetura correspondente
3. PXEBoot.com carrega bootmgr.exe e o armazenamento de dados de configuração de inicialização BCD
4. Bootmgr.exe lê as entradas do sistema operacional do armazenamento de dados de configuração de inicialização BCD e carrega o arquivo Boot.sdi e a imagem do Windows PE (boot.wim)
5. Bootmgr.exe inicia o carregamento do Windows PE, chamando Winload.exe na imagem do Windows PE

Se houver RemoteInstall pastas

Boot
Images
Mgmt
Templates
Tmp
WdsClientUnattend

a sua presença significa que antes da adição do papel de ponto de distribuição no SCCM 2012 (pontos de serviço PXE no SCCM 2007) houve alguma ação de configuração dos Serviços de Implantação do Windows (WDS) instalados, o que resultou na criação automática dessas pastas.
Para o papel de ponto de distribuição (ponto de serviço PXE no SCCM 2007), apenas as seguintes pastas são necessárias

SMSBoot
SMSIMAGES
SMSTemp
Stores

Isso não significa que o SCCM está instalado de forma incorreta, mas pode indicar uma possível fonte de erros.
A resolução detalhada de vários problemas relacionados ao WDS, SCCM e PXE é abordada no artigo Resolvendo Problemas com o Ponto de Serviço PXE e WDS no Configuration Manager 2007

Resultado

Na infraestrutura de TI gerenciada pelo System Center Configuration Manager, uma nova ferramenta foi adicionada para os administradores de sistema em campo.

Lista de links para imagens ISO (Clique para exibir)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

Obrigado pela atenção!
Menu de inicialização PXE com System Center Configuration Manager

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster