Configurar servidor inic. PXE no SUSE Linux Enterprise Server for SAP Applications 16.0
- O QUE É?
Configure um servidor de inicialização PXE com suporte para o Boot Seguro UEFI e o instalador Agama.
- POR QUÊ?
Automatize e simplifique a instalação de vários sistemas SUSE Linux Enterprise Server for SAP Applications 16.0 na rede.
- DEDICAÇÃO
Para um administrador de sistema ou de rede, a leitura e a compreensão deste artigo costumam levar de 30 a 45 minutos.
- META
Um servidor PXE funcional que pode inicializar várias arquiteturas no instalador Agama.
- REQUISITOS
Um sistema SUSE Linux Enterprise Server for SAP Applications 16.0 com privilégios administrativos
Conexão com a Internet para buscar as imagens ISO
Configuração de IP estático para o servidor PXE
1 Visão geral da inicialização PXE com SUSE Linux Enterprise Server for SAP Applications 16.0 #
A inicialização PXE permite que as máquinas sejam inicializadas por rede em um ambiente de instalação ou de runtime sem armazenamento local. Esta seção explica como funciona o PXE nas imagens do Agama e do instalador ativo do SUSE Linux Enterprise Server for SAP Applications 16.0 com foco no GRUB 2.
1.1 O que é a inicialização PXE? #
O Ambiente de Pré-execução (PXE, Preboot Execution Environment) é um método que permite que os sistemas recuperem carregadores de boot e instaladores de sistema operacional de um servidor de rede usando DHCP e TFTP ou HTTP. Ele é amplamente utilizado para provisionamento de máquinas sem mídia física ou de sistemas operacionais pré-instalados.
1.2 Benefícios da inicialização PXE #
A inicialização PXE simplifica o provisionamento porque elimina a necessidade de mídia de instalação local ou configuração manual. Ela possibilita o seguinte:
Instalação autônoma de muitos sistemas pela rede
Gerenciamento centralizado das versões do instalador e das configurações de boot
Suporte a várias arquiteturas e tipos de firmware, incluindo Boot Seguro UEFI
Seleção dinâmica de instaladores ou parâmetros de instalação usando os menus do GRUB 2
1.3 Como funciona a inicialização PXE no SUSE Linux Enterprise Server for SAP Applications 16.0 #
A inicialização PXE no SUSE Linux Enterprise Server for SAP Applications 16.0 usa o GRUB 2 como carregador de boot e o instalador Agama como interface de instalação. Os carregadores de boot e os arquivos do instalador são fornecidos pela rede usando HTTP ou TFTP, e o GRUB 2 busca o kernel, o initrd e a imagem ativa. Os clientes PXE podem usar uma variedade de formatos de firmware (incluindo os mais comuns, como BIOS ou UEFI), de executável de carregador de boot ou de imagem, conforme exigido pelas arquiteturas, como AMD64/Intel 64, AArch64, ppc64le e s390x. Além disso, eles devem funcionar em redes tanto IPv4 quanto IPv6.
O carregador de boot passa parâmetros do kernel, como root=live:, para carregar o sistema de arquivos raiz baseado em squashfs de uma imagem ISO ativa, iniciando a interface do Agama localmente ou como um serviço Web para uma interface de usuário Web remota.
1.3.1 Compatibilidade retroativa com o SLES for SAP 15.x #
As informações neste artigo são voltadas principalmente ao SUSE Linux Enterprise Server for SAP Applications 16.0 e versões mais recentes. O foco é nos fluxos de trabalho de inicialização PXE que se integram ao instalador Agama e dependem das imagens de instalação ativas. No contexto e no escopo deste artigo, o SLES for SAP 16.0, e versões mais recentes, é diferente do SLES for SAP 15.x das seguintes maneiras:
- Instalador
Usa o
dracute o Agama em vez dolinuxrce do YaST.- Servidor DHCP
O uso do ISC DHCP foi descontinuado (EOL 2022). Como alternativa para um servidor DHCP, use Kea ou dnsmasq.
- Parâmetros de boot
Use o parâmetro
root=live:para carregar a imagem do instalador Agama e oinst.install_url=opcional para o repositório de instalação não padrão, em vez do parâmetroinstall=.
A escolha do carregador de boot (GRUB 2, pxelinux etc.) permanece flexível e não depende da versão.
1.3.2 Diferentes configurações e etapas possíveis #
Este artigo consiste nas etapas de configuração obrigatórias e nas configurações opcionais ou alternativas. Siga apenas as seções relevantes à sua implantação e ignore todas as alternativas irrelevantes.
- Obrigatória
As tarefas, como instalar componentes, preparar a imagem do instalador, configurar o GRUB 2 e validar o servidor, devem ser realizadas em todas as configurações.
- Método de entrega de arquivo
Um servidor HTTP (recomendado com o Agama), como
nginx, e/ou um servidor TFTP, comotftpoudnsmasq.- Servidor DHCP
Escolha entre Kea ou dnsmasq.
Nota: Limitações e recursos do método de sua escolhaUse o Kea, o novo servidor DHCP da ISC, como o substituto moderno do ISC DHCP. Para obter mais informações sobre o Kea, consulte https://www.isc.org/kea/. Para conferir o aviso sobre o fim do serviço do ISC DHCP, acesse https://www.isc.org/dhcp/. Kea é um servidor DHCP que requer um software de servidor TFTP separado. O servidor DHCP Kea suporta as opções de inicialização TFTP/PXE por IPv4 e IPv6, além da inicialização HTTP por IPv4. Para a inicialização HTTP por IPv6, o servidor DHCPv6 deve ser capaz de enviar a
Vendor Class Option(consulteRFC3315, Section 22.16), supostamente para uso “por um cliente para identificar o fornecedor,” de volta ao cliente, e não há suporte a isso no momento.dnsmasq como uma combinação dos servidores DNS, DHCP e TFTP. Você pode usá-lo para transmitir o carregador de boot, o kernel, o initrd (e outros arquivos) por TFTP. Para obter mais informações sobre o dnsmasq, consulte https://thekelleys.org.uk/dnsmasq/doc.html. O servidor DHCP dnsmasq suporta as opções de inicialização TFTP/PXE por IPv4 e IPv6, além da inicialização HTTP por IPv4. Para a inicialização HTTP por IPv6, o servidor DHCPv6 deve ser capaz de enviar a
Vendor Class Option(consulteRFC3315, Section 22.16), supostamente para uso “por um cliente para identificar o fornecedor,” de volta ao cliente, e não há suporte a isso no momento.
2 Preparando a rede para os serviços de inicialização PXE #
Este módulo descreve os requisitos de infraestrutura de rede para implantar os serviços de inicialização PXE no SUSE Linux Enterprise Server for SAP Applications 16.0.
2.1 Introdução #
O servidor PXE consiste em três servidores: um servidor DHCP que fornece o endereço e o local do arquivo de inicialização (carregador de boot) e um servidor TFTP e/ou HTTP para recuperar os arquivos. Além disso, pode haver um servidor DNS, um servidor NTP e um roteador com suporte a IPv6. Geralmente, eles são separados do servidor PXE em uma rede de produção. Um servidor PXE que executa o SUSE Linux Enterprise Server for SAP Applications 16.0 também pode precisar de uma configuração de interface de rede específica, determinadas regras persistentes adicionadas ao firewall e algumas permissões no SELinux. Esta seção ilustra uma rede de amostra com intervalos de IPs adequados e as regras necessárias para o firewall e o SELinux.
2.2 Suposições e configuração de rede de amostra #
Neste artigo, consideramos o seguinte:
O servidor PXE está em execução na interface de rede
eno1com a seguinte configuração de rede:Tabela 1: Configuração de rede PXE de amostra #IPv4 IPv6 Nome DNS Rede PXE 192.168.1.0/24 2001:db8:0:1::/64 example.net Servidor PXE 192.168.1.200 2001:db8:0:1::200 pxe.example.net Gateway PXE 192.168.1.1 2001:db8:0:1::1 Servidor DNS 192.168.1.200 2001:db8:0:1::200 Servidor NTP 192.168.1.1 2001:db8:0:1::1 Por padrão, o roteador e os servidores NTP e DNS são externos e executados em outra máquina. Este artigo apresenta algumas dicas, mas não aborda a configuração completa.
2.3 Configurar interface de rede, firewall e SELinux para serviços PXE #
Configure a interface de rede e o firewall para permitir os serviços de rede exigidos pelo servidor PXE. Ajuste as configurações do SELinux para permitir testes de instalação e definir políticas locais persistentes.
Verifique e atribua a interface de rede do PXE à zona do firewalld apropriada.
Verifique as zonas que estão ativas e as respectivas interfaces atribuídas:
>sudofirewall-cmd --get-active-zonesSe
eno1não foi atribuído à zonapublic, faça isso:>sudofirewall-cmd --zone=public --change-interface=eno1Torne a atribuição da interface persistente a reinicializações:
>sudofirewall-cmd --permanent --zone=public --add-interface=eno1
Configure o firewall para acesso ao serviço DNS.
Permita o serviço DNS na sessão atual:
>sudofirewall-cmd --zone=public --add-service=dnsTorne a mudança persistente:
>sudofirewall-cmd --permanent --zone=public --add-service=dns
Configure o firewall para acesso ao serviço NTP.
Permita o serviço NTP na sessão atual:
>sudofirewall-cmd --zone=public --add-service=ntpTorne a mudança persistente:
>sudofirewall-cmd --permanent --zone=public --add-service=ntp
Configure o firewall para acesso ao serviço DHCP (IPv4).
Permita o serviço DHCP na sessão atual:
>sudofirewall-cmd --zone=public --add-service=dhcpTorne a mudança persistente:
>sudofirewall-cmd --permanent --zone=public --add-service=dhcp
Configure o firewall para acesso ao serviço DHCPv6.
Permita o serviço DHCPv6 na sessão atual:
>sudofirewall-cmd --zone=public --add-service=dhcpv6Torne a mudança persistente:
>sudofirewall-cmd --permanent --zone=public --add-service=dhcpv6
Configure o firewall para acesso ao serviço TFTP.
Permita o serviço TFTP na sessão atual:
>sudofirewall-cmd --zone=public --add-service=tftpTorne a mudança persistente:
>sudofirewall-cmd --permanent --zone=public --add-service=tftp
Configure o firewall para acesso ao serviço HTTP.
Permita o serviço HTTP na sessão atual:
>sudofirewall-cmd --zone=public --add-service=httpTorne a mudança persistente:
>sudofirewall-cmd --permanent --zone=public --add-service=http
Configure o firewall para acesso ao serviço HTTPS.
Permita o serviço HTTPS na sessão atual:
>sudofirewall-cmd --zone=public --add-service=httpsTorne a mudança persistente:
>sudofirewall-cmd --permanent --zone=public --add-service=https
Desabilite temporariamente o
SELinuxpara os testes de configuração.Defina o
SELinuxpara o modo permissivo:>sudosetenforce 0Verifique o status do
SELinux:>sudosestatus
Gere e instale os módulos de políticas locais do
SELinuxpara os serviços relacionados ao PXE.Crie e instale um módulo para
nginx:>sudoif test `ausearch -c 'nginx' --raw | wc -l` -gt 0 ; then>sudoausearch -c 'nginx' --raw | audit2allow -a -M local-nginx>sudosemodule -i local-nginx.pp>sudofiCrie e instale um módulo para
dnsmasq:>sudoif test `ausearch -c 'dnsmasq' --raw | wc -l` -gt 0 ; then>sudoausearch -c 'dnsmasq' --raw | audit2allow -a -M local-dnsmasq>sudosemodule -i local-dnsmasq.pp>sudofiCrie e instale um módulo para
in.tftpd:>sudoif test `ausearch -c 'in.tftpd' --raw | wc -l` -gt 0 ; then>sudoausearch -c 'in.tftpd' --raw | audit2allow -a -M local-tftpd>sudosemodule -i local-tftpd.pp>sudofi
Habilite novamente o modo de imposição no
SELinux.Defina o
SELinuxpara o modo de imposição:>sudosetenforce 1Verifique o status do
SELinux:>sudosestatus
2.4 Resumo #
Este procedimento garantiu a configuração correta da interface de rede do servidor PXE, do firewall e da política do SELinux para uma operação segura e funcional.
Verificou e atribuiu a interface de uso do PXE (
eno1, neste exemplo) à zonapublicdo firewalld.Abriu os serviços de firewall necessários à operação do PXE, incluindo
dns,ntp,dhcp,dhcpv6,tftp,httpehttps.Definiu temporariamente o
SELinuxpara o modopermissivepara facilitar os testes de serviço e registrar negações do AVC.Usou
ausearcheaudit2allowpara gerar e instalar módulos de políticas do SELinux personalizados para serviços comonginx,dnsmasqein.tftpd.Restaurou o
SELinuxao modoenforcingpara proteger o sistema para uso em produção.
Com essas etapas concluídas, o servidor PXE foi configurado de forma segura e está pronto para atender às máquinas clientes pela rede usando IPv4 ou IPv6.
3 Instalando os componentes necessários do servidor PXE #
Esta seção explica como instalar os pacotes necessários para suportar a inicialização PXE no SUSE Linux Enterprise Server for SAP Applications 16.0, incluindo os componentes GRUB 2, DHCP, TFTP e/ou HTTP.
3.1 Introdução #
Para configurar um servidor de inicialização PXE no SUSE Linux Enterprise Server for SAP Applications 16.0, você precisa instalar vários serviços e ferramentas. Dependendo da sua configuração, você pode precisar dos seguintes itens:
O pacote dnsmasq fornece uma combinação dos servidores DNS, TFTP e DHCP (DHCPv4 e DHCPv6) com suporte limitado a anúncio do roteador (RA, Router Advertising) IPv6. Ele oferece o seguinte:
Servidor DHCP dnsmasq: Suporta entrega condicional de opções DHCP dependendo da solicitação e da arquitetura do cliente para:
Solicitações de inicialização PXE por DHCPv4 e DHCPv6
Solicitações de inicialização HTTP por DHCPv4
Nota: Limitações do dnsmasq para inicialização HTTP por DHCPv6Atualmente, o dnsmasq não suporta o envio da opção necessária
vendor-classdo DHCPv6.
Servidor TFTP dnsmasq: Entrega arquivos de carregador de boot, kernel e initrd por TFTP durante a inicialização PXE.
Servidor DNS dnsmasq: Fornece uma resolução recursiva de nomes de domínio e endereços IP para o firmware do cliente e o
/etc/resolv.confno instalador/sistema operacional.RA IPv6 dnsmasq: Suporta o envio de RA IPv6 quando o servidor PXE também atua como roteador (capacidade de configuração limitada a um “padrão de RA comum”).
O pacote kea inclui um servidor DHCP e um sucessor do servidor SC DHCP. Ele suporta entrega condicional de opções DHCP dependendo da solicitação e da arquitetura do cliente para:
Solicitações de inicialização PXE por DHCPv4 e DHCPv6
Solicitações de inicialização HTTP por DHCPv4
Nota: Limitações do KEA para inicialização HTTP por DHCPv6Atualmente, o Kea não suporta o envio da opção necessária
vendor-classdo DHCPv6. Para obter mais informações, consulte https://kea.readthedocs.io/en/latest/arm/dhcp6-srv.html#id4.
Um servidor TFTP entrega os arquivos de carregador de boot, o kernel e o initrd por TFTP, enquanto a inicialização PXE com o Kea é fornecida pelo pacote tftp e não é necessária para inicialização HTTP. Se você usa o dnsmasq, não precisa do pacote tftp.
Um servidor Web, como o pacote nginx, para transmitir as imagens do instalador por HTTP.
Nota: Necessidade de servidores HTTPUm servidor HTTP/HTTPS, como o nginx, é quase sempre necessário. Seu uso vai além de uma simples inicialização HTTP. Em particular, você pode precisar dele nos seguintes cenários:
Ele é um requisito básico para a inicialização HTTP.
É recomendado para fornecer o
squashfs.img. Você pode usarroot=live:tftp://.../squashfs.imgna linha de comando de inicialização.Ele também é recomendado para fornecer RPMs ao Agama no parâmetro de linha de comando de inicialização
inst.install_url=http://.../install/em umSLES-16.0-Full-*.inline.iso, junto com perfis de instalação e outros arquivos para instalação autônoma.
Os pacotes do carregador de boot GRUB 2 fornecem inicialização de rede para arquiteturas e métodos suportados. Por exemplo, a arquitetura AMD64/Intel 64 oferece dois métodos para inicialização de rede: BIOS e UEFI. Além disso, a UEFI geralmente suporta inicialização PXE (TFTP) e HTTP. Outros carregadores de boot, como o pxelinux, não suportam UEFI e inicialização HTTP.
Opcionalmente, um daemon de anúncio do roteador para IPv6, como o pacote radvd. Ele será necessário no SLES for SAP se também atuar como roteador para uma rede de instalador para realizar o seguinte:
Configurar o roteamento em uma rede para clientes de inicialização PXE ou HTTP.
Habilitar o uso de DHCPv6 em uma rede para clientes de inicialização PXE ou HTTP.
3.2 Requisitos #
Um sistema que executa o SUSE Linux Enterprise Server for SAP Applications 16.0 com privilégios administrativos, registrado no SUSE Customer Center e configurado com acesso aos repositórios online apropriados usando SUSEConnect.
Módulos do SLE habilitados: Módulo Server Applications, Módulo Legacy e Módulo Base System.
Acesso aos repositórios de módulos do SLE para serviços de rede e carregadores de boot.
Conexão com a Internet ativa para buscar os pacotes.
3.3 Instalando os pacotes #
Siga as etapas abaixo para instalar os pacotes principais necessários para o servidor de inicialização PXE.
Instale o carregador de boot GRUB 2 e o servidor HTTP nginx como requisitos comuns.
>sudozypper install grub2 nginxExecute qualquer um dos seguintes comandos para instalar os pacotes essenciais à sua abordagem:
kea para o servidor DHCP, tftp para o servidor TFTP
>sudozypper install kea tftpdnsmasq como provedor comum para os servidores DHCP, DNS e TFTP
>sudozypper install dnsmasq
Nota: Limitações de servidores DHCP fornecidos por Kea e dnsmasqA inicialização HTTP por IPv6 atualmente não é suportada por servidores DHCP fornecidos pelos pacotes kea e dnsmasq. Ela não suporta o envio da opção
vendor-classde volta ao cliente HTTP, conforme exigido pela especificação UEFI.Se preferir, instale destinos adicionais do GRUB 2 específicos da arquitetura, se você planeja oferecer suporte a outras plataformas.
Para a arquitetura AMD64/Intel 64:
>sudozypper install grub2-x86_64-efi grub2-i386-pcPara a arquitetura AArch64:
>sudozypper install grub2-aarch64-efiPara a arquitetura ppc64le:
>sudozypper install grub2-ppc64le-ieee1275
Nota: Como o servidor PXE entrega pacotes do GRUB 2 a clientes diferentes da arquitetura da máquina do servidorOs pacotes noarch.rpm específicos da arquitetura do GRUB 2 estão incluídos no subdiretório
noarchda mídia/repositório de instalação, seja qual for a arquitetura da máquina em que o servidor PXE é configurado. Ou seja, você pode instalar os pacotes grub2-arm64-efi e grub2-powerpc-ieee1275 em um servidor PXE executado em uma máquina AMD64/Intel 64, a fim de oferecer suporte a clientes com outras arquiteturas.Você poderá instalar o pacote shim se precisar de Boot Seguro UEFI para AMD64/Intel 64 ou AArch64, mas não quiser usar os arquivos da mídia de instalação ISO.
>sudozypper install shimSe preferir, instale o daemon de anúncio do roteador radvd para usar o servidor PXE como roteador (não recomendado para redes de produção).
>sudozypper install radvdInstale o utilitário rsync para copiar ou sincronizar de maneira oportuna a ISO e a árvore de diretórios.
>sudozypper install rsyncGaranta que os serviços estejam instalados, mas ainda não tenham sido iniciados. A configuração será abordada em seções posteriores.
4 Criando diretórios NetBoot do GRUB 2 para servidor PXE #
Esta seção explica como criar diretórios NetBoot do GRUB 2 para servidores PXE usando o comando grub2-mknetdir, que gera diretórios específicos da arquitetura para sistemas AMD64/Intel 64 (UEFI e BIOS), AArch64 e ppc64le. Para suporte a Boot Seguro UEFI, os administradores devem copiar os arquivos EFI assinados da mídia de instalação ou usar o pacote shim para substituir os arquivos de carregador de boot padrão não assinados.
4.1 Introdução #
Esta seção descreve como configurar diretórios NetBoot do GRUB 2 para implantação do servidor PXE em várias arquiteturas. O comando grub2-mknetdir cria diretórios específicos da arquitetura em /srv/tftpboot/boot/grub2/ para plataformas diferentes. Por exemplo, os sistemas AMD64/Intel 64 geram diretórios UEFI (x86_64-efi) e BIOS (i386-pc) antigos, enquanto os sistemas AArch64 e ppc64le criam seus respectivos diretórios UEFI (arm64-efi e powerpc-ieee1275).
Para suporte a Boot Seguro UEFI, que não é fornecido pelos arquivos core.efi padrão não assinados, os administradores podem copiar os arquivos EFI assinados da mídia de instalação ou instalar o pacote shim e copiar manualmente os arquivos de carregador de boot necessários (shim.efi, grub.efi, MokManager.efi) para os diretórios de arquitetura apropriados, garantindo uma resolução de link simbólico adequada para manter todos os arquivos no diretório raiz do TFTP.
4.2 Requisitos #
Garanta que você tenha instalado os seguintes pacotes: grub2, tftp e qualquer outro pacote do GRUB 2 específico da arquitetura, como grub2-x86_64-efi e grub2-i386-pc.
Assegure que tenha a mídia de instalação (ISO) disponível para montagem ou o pacote shim instalado no sistema. Você pode baixar a mídia de instalação (ISO) para sua arquitetura de destino do SUSE Customer Center.
4.3 Preparando os diretórios NetBoot e o Boot Seguro UEFI #
Este procedimento cria a estrutura de diretórios do GRUB 2 necessária para inicialização de rede PXE e, opcionalmente, configura o suporte a Boot Seguro UEFI em várias arquiteturas.
Crie uma estrutura de diretórios NetBoot do GRUB 2.
>sudogrub2-mknetdir --net-directory=/srv/tftpboot --subdir=/boot/grub2Esse procedimento cria diretórios específicos da arquitetura:
AMD64/Intel 64:
/srv/tftpboot/boot/grub2/x86_64-efie/srv/tftpboot/boot/grub2/i386-pcAArch64:
/srv/tftpboot/boot/grub2/arm64-efippc64le:
/srv/tftpboot/boot/grub2/powerpc-ieee1275
AtençãoNão substitua manualmente o arquivo
grub.cfgcriado pelogrub2-mknetdir.Copie outros diretórios independentes da arquitetura, como
fonts/elocale/, que estão disponíveis no diretório/srv/tftpboot/boot/grub2/para o servidor TFTP.Você também pode usar o arquivo
/srv/tftpboot/boot/grub2/ARCH-efi/core.efiinstalado pelo comandogrub2-mknetdirpara arquiteturas AMD64/Intel 64 ou AArch64 para PXE UEFI. No entanto, ele não é assinado e não suporta Boot Seguro UEFI. Opcionalmente, para habilitar o Boot Seguro UEFI para as arquiteturas AMD64/Intel 64 e AArch64 suportadas, siga qualquer uma destas etapas:Copie os arquivos necessários da mídia de instalação ISO:
Monte a imagem ISO:
>sudomount -o loop /PATH/TO/SLES.ISO /mntCopie os arquivos EFI.
>sudocp -v /mnt/EFI/BOOT/*.efi /srv/tftpboot/boot/grub2/ARCH-efi/1Substitua
ARCH-efiporx86_64-efiouarm64-efi, as arquiteturas suportadas para Boot Seguro UEFI.Desmonte a mídia de instalação ISO.
>sudoumount /mnt
Use o pacote shim se você não quiser usar os arquivos da mídia de instalação ISO:
Se ainda não foi instalado, instale o pacote shim.
>sudozypper install shimCopie os arquivos de carregador de boot assinados para a arquitetura necessária:
Copie o arquivo
shim.efi.Para a arquitetura AMD64/Intel 64:
>sudocp -v -p -L /usr/share/efi/x86_64/shim.efi /srv/tftpboot/boot/grub2/x86_64-efi/bootx64.efiPara a arquitetura AArch64:
>sudocp -v -p -L /usr/share/efi/aarch64/shim.efi /srv/tftpboot/boot/grub2/arm64-efi/bootaa64.efi
Copie o arquivo
grub.efi.Para a arquitetura AMD64/Intel 64:
>sudocp -v -p -L /usr/share/efi/x86_64/grub.efi /srv/tftpboot/boot/grub2/x86_64-efi/Para a arquitetura AArch64:
>sudocp -v -p -L /usr/share/efi/aarch64/grub.efi /srv/tftpboot/boot/grub2/arm64-efi/
Copie o arquivo
MokManager.efi.Para a arquitetura AMD64/Intel 64:
>sudocp -v -p -L /usr/share/efi/x86_64/MokManager.efi /srv/tftpboot/boot/grub2/x86_64-efi/Para a arquitetura AArch64:
>sudocp -v -p -L /usr/share/efi/aarch64/MokManager.efi /srv/tftpboot/boot/grub2/arm64-efi/
NotaO flag
-Lresolve links simbólicos para garantir que os arquivos permaneçam na raiz do TFTP.
5 Preparando o conteúdo da imagem do instalador #
Esta seção descreve como extrair e organizar arquivos do instalador da mídia de instalação do SUSE Linux Enterprise Server for SAP Applications 16.0 para ambientes de inicialização PXE. Ela aborda as imagens .install.iso e os pacotes RPM, com instruções específicas para diversas arquiteturas e tipos de instalação.
5.1 Introdução #
O SUSE Linux Enterprise Server for SAP Applications 16.0 inclui arquivos do instalador em vários formatos para suportar diferentes cenários de inicialização PXE. O instalador Agama requer três arquivos essenciais: a imagem do kernel (linux), o disco RAM inicial (initrd) e o sistema de arquivos raiz compactado (squashfs.img). Esses arquivos devem ser extraídos da mídia de instalação e organizados em uma estrutura de diretórios acessível por TFTP e HTTP.
Esta seção apresenta os métodos de preparação para as imagens .install.iso e os pacotes RPM, garantindo a compatibilidade com várias arquiteturas e tipos de instalação suportados pelo SUSE Linux Enterprise Server for SAP Applications 16.0.
5.2 Requisitos #
Mídia de instalação do SUSE Linux Enterprise Server for SAP Applications 16.0, conforme disponível no SUSE Customer Center. Escolha:
ISO online: Somente instalador para instalações de rede (
SLES-16.0-Online-ARCH-BUILD.install.iso)ISO completa: Instalador com repositório de instalação (
SLES-16.0-Full-ARCH-BUILD.install.iso)Pacotes RPM: tftpboot-agama-installer-SUSE_SLE_16_PXE-ARCH
Um ponto de montagem temporário, como
/mnt.Espaço em disco suficiente em
/srv/tftpboote/srv/installpara o método de instalação escolhido.Privilégios administrativos para criar diretórios e copiar arquivos.
5.3 Preparando arquivos do instalador com base em imagens ISO #
As imagens ISO oferecem um método simples para extrair arquivos do instalador. Os procedimentos a seguir abordam os tipos de ISO online e completa para diferentes arquiteturas.
5.3.1 Usando imagens ISO online #
As imagens ISO online contêm apenas os componentes do instalador, exigindo acesso da rede aos repositórios de instalação durante a instalação do sistema. Isso corresponde à entrada do menu de inicialização do SLES-16.0 Online Installation no GRUB.
Crie a estrutura de diretórios para os arquivos do instalador:
>sudomkdir -p /srv/tftpboot/boot/images/SLES-16.0/ARCH/Monte a imagem ISO online:
>sudomount -oro,loop /srv/install/iso/SLES-16.0-Online-ARCH-BUILD.install.iso /mntCopie o kernel e os arquivos initrd:
>sudocp /mnt/boot/ARCH/loader/linux /srv/tftpboot/boot/images/SLES-16.0/ARCH/>sudocp /mnt/boot/ARCH/loader/initrd /srv/tftpboot/boot/images/SLES-16.0/ARCH/Copie o sistema de arquivos raiz compactado:
>sudocp /mnt/LiveOS/squashfs.img /srv/tftpboot/boot/images/SLES-16.0/ARCH/Desmonte a imagem ISO:
>sudoumount /mnt
Crie a estrutura do diretório:
>sudomkdir -p /srv/tftpboot/boot/images/SLES-16.0/ppc64le/Monte a imagem ISO:
>sudomount -oro,loop /srv/install/iso/SLES-16.0-Online-ppc64le-BUILD.install.iso /mntCopie o kernel e os arquivos initrd (observe a estrutura de caminho diferente para ppc64le):
>sudocp /mnt/boot/ppc64le/linux /srv/tftpboot/boot/images/SLES-16.0/ppc64le/>sudocp /mnt/boot/ppc64le/initrd /srv/tftpboot/boot/images/SLES-16.0/ppc64le/Copie o sistema de arquivos raiz compactado:
>sudocp /mnt/LiveOS/squashfs.img /srv/tftpboot/boot/images/SLES-16.0/ppc64le/Desmonte a imagem ISO:
>sudoumount /mnt
5.3.2 Usando as imagens ISO completas #
As imagens ISO completas incluem tanto o instalador quanto os repositórios de instalação, permitindo instalações locais sem dependências da rede externa. Isso corresponde à entrada do menu de inicialização do SLES-16.0 Local Installation no GRUB com o parâmetro inst.install_url=http://pxe.example.net/install/SLES-16.0/${arch} adicional.
Crie diretórios para os arquivos do instalador e o repositório de instalação:
>sudomkdir -p /srv/tftpboot/boot/images/SLES-16.0/ARCH/>sudomkdir -p /srv/install/SLES-16.0Monte a imagem ISO completa:
>sudomount -oro,loop /srv/install/iso/SLES-16.0-Full-ARCH-BUILD.install.iso /mntCopie o kernel e os arquivos initrd (ajuste os caminhos para ppc64le conforme mostrado nos procedimentos anteriores):
>sudocp /mnt/boot/ARCH/loader/linux /srv/tftpboot/boot/images/SLES-16.0/ARCH/>sudocp /mnt/boot/ARCH/loader/initrd /srv/tftpboot/boot/images/SLES-16.0/ARCH/Copie o sistema de arquivos raiz compactado:
>sudocp /mnt/LiveOS/squashfs.img /srv/tftpboot/boot/images/SLES-16.0/ARCH/Copie o repositório de instalação para acesso ao servidor HTTP local:
>sudorsync -avP /mnt/install/ /srv/install/SLES-16.0/ARCH/Desmonte a imagem ISO:
>sudoumount /mnt
5.4 Preparando arquivos do instalador com base em pacotes RPM #
Os pacotes RPM oferecem um método alternativo para obter os arquivos do instalador online.
Instale os pacotes obrigatórios:
>sudozypper in tftpboot-agama-installer-SUSE_SLE_16-ARCHCopie o linux,initrd,squashfs.img para tftpboot:
>sudomkdir -p /srv/tftpboot/boot/images/SLES-16.0/ARCH>sudocd /srv/tftpboot/boot/images/SLES-16.0/ARCH>sudocp -v /usr/share/tftpboot-installation/agama-installer-SUSE_SLE_16/ARCH/loader/linux .>sudocp -v /usr/share/tftpboot-installation/agama-installer-SUSE_SLE_16/ARCH/loader/initrd .>sudocp -v /usr/share/tftpboot-installation/agama-installer-SUSE_SLE_16/ARCH/loader/squashfs.img .
5.5 Estrutura de diretórios recomendada #
Organize os arquivos extraídos de acordo com o layout de diretório abaixo para garantir consistência e facilidade de manutenção. Esta estrutura suporta várias arquiteturas e tipos de instalação.
/srv/tftpboot/ ├── boot/ │ ├── grub2/ │ │ ├── x86_64-efi/ │ │ │ ├── bootx64.efi │ │ │ └── grub.cfg │ │ ├── i386-pc/ │ │ │ └── core.0 │ │ ├── arm64-efi/ │ │ │ └── bootaa64.efi │ │ └── powerpc-ieee1275/ │ │ └── core.elf │ └── images/ │ └── SLES-16.0/ │ ├── x86_64/ │ │ ├── linux 1 │ │ ├── initrd 2 │ │ └── squashfs.img 3 │ ├── aarch64/ │ └── ppc64le/ /srv/install/ └── SLES-16.0/ ├── x86_64/ 4 ├── aarch64/ └── ppc64le/
5.6 Verificando a instalação #
Depois de extrair e organizar os arquivos do instalador, verifique se todos os componentes necessários estão presentes e acessíveis.
Verifique se os arquivos essenciais estão presentes:
>ls -la /srv/tftpboot/boot/images/SLES-16.0/ARCH/*Garanta as permissões de arquivo apropriadas:
>sudofind /srv/tftpboot/boot/images/ -type d -exec chmod 0755 {} \;>sudofind /srv/tftpboot/boot/images/ -type f -exec chmod 0644 {} \;
Garanta que todos os arquivos extraídos possam ser lidos pelos serviços TFTP e HTTP. Os arquivos serão acessados pelos clientes PXE durante o processo de inicialização, portanto, as permissões e a configuração do serviço apropriadas são essenciais para o sucesso das implantações.
5.7 Próximas etapas #
Com os arquivos do instalador devidamente preparados e organizados, você pode prosseguir para:
Configurar o GRUB 2 para inicialização PXE com entradas de menu que mencionam esses arquivos
Configurar os serviços HTTP e TFTP para transmitir o conteúdo extraído
Configurar o DHCP para direcionar os clientes PXE aos carregadores de boot apropriados
Os arquivos extraídos serão mencionados na configuração do GRUB 2 usando caminhos como root=live:http://pxe.example.net/boot/images/SLES-16.0/ARCH/squashfs.img.
6 Configurando o GRUB 2 para inicialização PXE #
Esta seção descreve como configurar o carregador de boot GRUB 2 para inicialização baseada em PXE no SUSE Linux Enterprise Server for SAP Applications 16.0. Ela aborda a criação da estrutura de diretórios de inicialização de rede, a configuração de carregadores de boot específicos da arquitetura e a implementação de um sistema de configuração flexível com suporte a várias arquiteturas e cenários de instalação.
6.1 Introdução #
O GRUB 2 atua como carregador de boot de rede para clientes PXE, carregando o kernel e os arquivos initrd para iniciar o instalador Agama. Esta seção demonstra como criar uma configuração sofisticada do GRUB 2 que detecta automaticamente a arquitetura do cliente, gerencia a seleção da interface de rede e oferece um menu de inicialização unificado que suporta vários tipos de instalação e arquiteturas de destino.
A abordagem de configuração usa um design modular com arquivos separados para detecção de arquitetura, definições de variáveis e entradas do menu de inicialização. Isso permite o suporte a configurações específicas da máquina e perfis de instalação automatizados, mantendo a consistência entre plataformas de hardware diferentes.
6.2 Requisitos #
Garanta que a estrutura de diretórios de inicialização de rede do GRUB 2 já esteja pronta, conforme descrito nas seções anteriores.
Certifique-se de que os arquivos do instalador estejam devidamente organizados, conforme descrito nas seções anteriores.
Os pacotes GRUB 2 para todas as arquiteturas de destino devem ser instalados: grub2-x86_64-efi, grub2-i386-pc, grub2-aarch64-efi e grub2-ppc64le-ieee1275
O pacote shim para suporte a Boot Seguro UEFI (opcional).
Acesso administrativo ao
/srv/tftpbootou à raiz do PXE equivalente.
6.3 Criando a configuração do GRUB 2 #
O arquivo de configuração do GRUB 2 processa três tarefas principais: detectar a arquitetura do cliente, gerenciar as interfaces de rede e carregar outros arquivos de configuração. Esta abordagem modular oferece flexibilidade para diversos cenários de implantação.
grub.cfg principal #Crie o arquivo de configuração principal do GRUB 2 em
/srv/tftpboot/boot/grub2/grub.cfg:>sudocat > /srv/tftpboot/boot/grub2/grub.cfg << 'EOF'# Architecture detection and mapping if [ "$grub_cpu" == "i386" ]; then set arch='x86_64' elif [ "$grub_cpu" == "x86_64" ]; then set arch='x86_64' elif [ "$grub_cpu" == "arm64" ]; then set arch='aarch64' elif [ "$grub_cpu" == "powerpc" ]; then set arch='ppc64le' fi if [ "X$arch" == "X" ]; then echo "ERROR: No architecture found for ${grub_cpu}" exit else echo "Running on $arch CPU architecture" fi export arch # Network interface configuration for PXE-selected NIC # - dracut based images on SLE-16: set ipcfg="ifname=pxe0:${net_default_mac} ip=pxe0:dhcp" export ipcfg # - linuxrc installer on SLE-15: set ifcfg="ifcfg=${net_default_mac}=dhcp" export ifcfg # Define typical serial console kernel parameter #set sconsole="console=tty0 console=ttyS0,115200n8" #export sconsole # Load machine-specific configuration if available if [ -s "${config}/${net_default_mac}/grub.cfg" ]; then ## Source a host specific configuration of grub menu: source "${config}/${net_default_mac}/grub.cfg" else ## Source default grub boot menu: source "${prefix}/menu.cfg" fi EOF
- Detecção de arquitetura
Mapeia os tipos de CPU do GRUB 2 para as arquiteturas de distribuição, permitindo entradas de menu unificadas que funcionam em plataformas de hardware diferentes
- Gerenciamento de interface de rede
Define uma variável
${ipcfg}usando a variável grub2${net_default_mac}para ativar o DHCP apenas na interface de inicialização PXE chamadapxe0, o que evita problemas de sondagem de rede em sistemas com várias interfaces.- Definições de utilitários
Define uma variável
${sconsole}típica com parâmetros de console serial.- Configuração específica da máquina
Carrega os arquivos de configuração opcionais por máquina com base no endereço MAC, permitindo parâmetros de inicialização personalizados por máquina e perfis de instalação automatizados
6.5 Configurações específicas da máquina #
Em implantações avançadas, você pode criar arquivos de configuração específicos da máquina para substituir as configurações padrão ou fornecer parâmetros de instalação automatizados.
Crie um diretório para configurações específicas da máquina:
>sudomkdir -p /srv/tftpboot/boot/configPara uma máquina com o endereço MAC
aa:bb:cc:dd:ee:ff, crie uma configuração específica:>sudomkdir -p /srv/tftpboot/boot/config/aa:bb:cc:dd:ee:ffCrie o
grub.cfgespecífico da máquina:>sudocat > /srv/tftpboot/boot/config/aa:bb:cc:dd:ee:ff/grub.cfg << 'EOF'# Machine-specific configuration for aa:bb:cc:dd:ee:ff set default='SLES-16.0 Full Installation' # Activate the menu-entry after 5sec timeout set timeout=5 # Use know predictable network interface name set ipcfg="ip=eno1:dhcp" # Set the autoinstall variable for this machine set autoinstall="inst.auto=http://pxe.example.net/install/profiles/aa:bb:cc:dd:ee:ff/sles16.json" export autoinstall # Load the default menu source "/boot/grub2/menu.cfg" EOFSe preferir, forneça uma entrada de menu própria no
grub.cfgespecífico do host (por exemplo, gerada para uma tentativa de inicialização específica):>sudocat > /srv/tftpboot/boot/config/aa:bb:cc:dd:ee:ff/grub.cfg << 'EOF'set default='SLES-16.0 Auto-Installation' set timeout=5 menuentry 'SLES-16.0 Auto-Installation' { linux /boot/images/SLES-16.0/${arch}/linux showopts root=live:http://pxe.example.net/boot/images/SLES-16.0/${arch}/squashfs.img inst.install_url=http://pxe.example.net/install/SLES-16.0/${arch} inst.auto=http://pxe.example.net/install/profiles/${net_default_mac}/sles16.json ip=eno1:dhcp initrd /boot/images/SLES-16.0/${arch}/initrd } EOF
-
default Especifica qual entrada de menu deve ser inicializada automaticamente
-
timeout Define o tempo de espera de inicialização em segundos
-
ipcfg Substitui a configuração da interface de rede para um hardware específico
-
autoinstall Fornece URLs dos perfis de instalação automatizada específicos da máquina
6.6 Verificando a configuração do GRUB 2 #
Depois de criar os arquivos de configuração, verifique se a configuração está correta e se todos os arquivos necessários estão disponíveis.
Verifique a estrutura de diretórios do GRUB 2:
>find /srv/tftpboot/boot/grub2 -type f -name "*.cfg" -o -name "*.efi" -o -name "core.*"Verifique a sintaxe do arquivo de configuração fazendo um teste com as ferramentas do GRUB 2:
>grub2-script-check /srv/tftpboot/boot/grub2/grub.cfg>grub2-script-check /srv/tftpboot/boot/grub2/menu.cfgGaranta as permissões de arquivo apropriadas:
>sudochmod -R 644 /srv/tftpboot/boot/grub2/*.cfg>sudofind /srv/tftpboot/boot/grub2 -type d -exec chmod 0755 {} \;
Teste a configuração do GRUB 2 com clientes PXE reais para garantir a detecção da arquitetura e a funcionalidade de menu apropriadas. A variável ${net_default_mac} está disponível apenas durante cenários de inicialização de rede reais.
6.7 Solucionando problemas da configuração do GRUB 2 #
Problemas comuns e suas soluções ao trabalhar com configurações PXE do GRUB 2. Cada problema inclui as etapas de diagnóstico e os comandos específicos para resolvê-lo.
6.7.1 Falha na detecção de arquitetura #
Quando o GRUB 2 não consegue detectar a arquitetura correta, os clientes podem ser inicializados com binários incorretos ou nem ser carregados.
Adicione a saída da depuração à configuração do GRUB 2 para ver os valores detectados:
>sudocat >> /srv/tftpboot/boot/grub2/grub.cfg << 'EOF'# Debug architecture detection echo "Detected grub_cpu: ${grub_cpu}" echo "Mapped arch: ${arch}" sleep 3 EOFTeste a sintaxe da configuração:
>grub2-script-check /srv/tftpboot/boot/grub2/grub.cfgSe o mapeamento da arquitetura estiver incompleto, estenda a lógica de detecção:
>sudosed -i '/elif \[ "$grub_cpu" == "powerpc" \]/a\\nelif [ "$grub_cpu" == "riscv64" ]; then\n set arch='\''riscv64'\''\\' /srv/tftpboot/boot/grub2/grub.cfgVerifique se os diretórios específicos da arquitetura existem:
>ls -la /srv/tftpboot/boot/grub2/
6.7.2 Interface de rede não encontrada #
Algumas implementações de firmware podem não definir a variável ${net_default_mac} corretamente, causando falhas na configuração de rede.
Adicione a saída da depuração para verificar as variáveis de rede:
>sudosed -i '/set ipcfg=/i\\necho "Default MAC: ${net_default_mac}"\necho "Network variables set"\nsleep 2' /srv/tftpboot/boot/grub2/grub.cfgCrie uma configuração de rede de fallback:
>sudocat >> /srv/tftpboot/boot/grub2/grub.cfg << 'EOF'# Fallback network configuration if net_default_mac is empty if [ "X${net_default_mac}" == "X" ]; then set ipcfg="ip=dhcp" set ifcfg="ifcfg=*=dhcp" echo "WARNING: Using fallback network configuration" sleep 2 fi EOFTeste a configuração de rede com uma interface específica:
>sudoecho 'set ipcfg="ip=eno1:dhcp"' > /srv/tftpboot/boot/config/test-network.cfgVerifique os nomes das interfaces de rede no sistema de destino:
>ip link show
6.7.3 Caminhos de arquivo não encontrados #
Caminhos de arquivos incorretos impedem o GRUB 2 de carregar o kernel e os arquivos initrd, causando falhas na inicialização.
Verifique se os arquivos do instalador existem nos locais esperados:
>find /srv/tftpboot/boot/images -name "linux" -o -name "initrd" -o -name "squashfs.img"Verifique o acesso por TFTP aos arquivos de inicialização:
>tftp localhost -c get /boot/grub2/grub.cfg /tmp/test-grub.cfgTeste o acesso por HTTP aos arquivos do instalador:
>curl -I http://localhost/boot/images/SLES-16.0/x86_64/linuxVerifique as permissões e a propriedade dos arquivos:
>ls -la /srv/tftpboot/boot/images/SLES-16.0/*/Corrija as permissões, se necessário:
>sudochmod -R 644 /srv/tftpboot/boot/images/>sudofind /srv/tftpboot/boot/images/ -type d -exec chmod 755 {} \;Verifique se os links simbólicos não estão corrompidos:
>find /srv/tftpboot/boot/images/ -type l -exec ls -la {} \;
6.7.4 Falhas na inicialização EFI #
Os problemas com EFI e Boot Seguro podem impedir a inicialização adequada do carregador de boot ou causar falhas na autenticação.
Verifique se os arquivos do Boot Seguro estão presentes:
>ls -la /srv/tftpboot/boot/grub2/x86_64-efi/*.efiVerifique se os arquivos shim (bootx64.efi ou shim.efi), grub.efi e MokManager.efi foram copiados de maneira apropriada:
>file /srv/tftpboot/boot/grub2/x86_64-efi/bootx64.efiVerifique a integridade do arquivo EFI:
>sha256sum /srv/tftpboot/boot/grub2/x86_64-efi/*.efiTeste se os arquivos são acessíveis por TFTP:
>tftp localhost -c get /boot/grub2/x86_64-efi/bootx64.efi /tmp/test-shim.efiPara sistemas aarch64, verifique os arquivos EFI ARM64:
>ls -la /srv/tftpboot/boot/grub2/arm64-efi/*.efiVerifique se a configuração do DHCP fornece os caminhos corretos do carregador de boot:
>grep -n "bootx64.efi\|shim.efi\|bootaa64.efi" /etc/dnsmasq.d/dhcp.conf /etc/kea/kea-dhcp?.conf /etc/dhcpd?.confSe os arquivos estiverem ausentes, copie-os novamente da ISO montada em /mnt ou dos arquivos do pacote shim:
>sudocp -v /mnt/EFI/BOOT/*.efi /srv/tftpboot/boot/grub2/x86_64-efi/>sudocp -pL /usr/share/efi/x86_64/*.efi /srv/tftpboot/boot/grub2/x86_64-efi/
6.7.6 Habilitando o registro detalhado #
Para problemas persistentes, habilite o registro completo para capturar informações detalhadas sobre o processo de inicialização.
Crie uma versão de depuração da configuração principal:
>sudocp /srv/tftpboot/boot/grub2/grub.cfg /srv/tftpboot/boot/grub2/grub.cfg.backupAdicione a saída de depuração completa:
>sudocat > /srv/tftpboot/boot/grub2/debug.cfg << 'EOF'# Debug configuration for GRUB troubleshooting set debug=all set pager=1 echo "=== GRUB Debug Information ===" echo "grub_cpu: ${grub_cpu}" echo "grub_platform: ${grub_platform}" echo "net_default_mac: ${net_default_mac}" echo "net_default_server: ${net_default_server}" echo "=============================" sleep 5 EOFInclua a configuração de depuração no arquivo principal:
>sudosed -i '1i\source "${prefix}/debug.cfg"' /srv/tftpboot/boot/grub2/grub.cfgMonitore os registros do TFTP durante as tentativas de inicialização:
>sudo journalctl -f -u tftp.socketMonitore os registros do DHCP para solicitações de PXE:
>sudo journalctl -f -u dhcpdDesabilite o modo de depuração após a solução de problemas:
>sudosed -i '/source "${prefix}\/debug.cfg"/d' /srv/tftpboot/boot/grub2/grub.cfg
6.8 Próximas etapas #
Com o GRUB 2 devidamente configurado, você pode prosseguir para:
Configurar os serviços HTTP e TFTP para transmitir os arquivos de inicialização e o conteúdo do instalador
Configurar os serviços DHCP para direcionar os clientes PXE aos carregadores de boot apropriados
Testar o processo de inicialização PXE completo no hardware de destino
O sistema de configuração do GRUB 2 flexível oferece uma base para cenários sofisticados de implantação PXE, para suportar várias arquiteturas e tipos de instalação em uma interface unificada.
7 Configurando o TFTP para inicialização PXE #
Esta seção explica como configurar os serviços TFTP para transmitir os carregadores de boot GRUB 2 e o conteúdo de inicialização PXE para instalações do SUSE Linux Enterprise Server for SAP Applications 16.0. Ela aborda o servidor in.tftpd tradicional e a funcionalidade TFTP integrada fornecida por dnsmasq.
7.1 Introdução #
O TFTP transmite os arquivos do carregador de boot para os clientes PXE durante o processo de inicialização de rede. O SUSE Linux Enterprise Server for SAP Applications 16.0 suporta duas implementações de servidor TFTP: o servidor in.tftpd tradicional do pacote tftp e a funcionalidade TFTP integrada em dnsmasq.
7.2 Requisitos #
O pacote tftp ou dnsmasq instalado
Arquivos de inicialização PXE organizados em
/srv/tftpbootPrivilégios administrativos para configurar os serviços
7.3 Configurando o servidor in.tftpd #
O servidor in.tftpd usa o arquivo de configuração /etc/sysconfig/tftp para definir o diretório raiz do TFTP e as opções de servidor.
Opcionalmente, habilite o registro detalhado definindo as opções de TFTP:
>sudosed -i 's/^TFTP_OPTIONS=.*/TFTP_OPTIONS="-v"/' /etc/sysconfig/tftpA opção
-vhabilita o registro detalhado para ver os nomes de arquivo buscados por TFTP.Habilite e inicie o serviço TFTP:
>sudosystemctl enable --now tftp.service
7.4 Configurando o servidor TFTP dnsmasq #
O dnsmasq oferece um servidor TFTP incorporado que pode ser habilitado e configurado para usar o diretório /srv/tftpboot.
Crie o arquivo de configuração do TFTP:
>sudocat > /etc/dnsmasq.d/tftp.conf << 'EOF'enable-tftp tftp-root=/srv/tftpboot EOFHabilite e inicie o serviço dnsmasq:
>sudosystemctl enable --now dnsmasq
7.5 Verificando a configuração do TFTP #
Teste a funcionalidade do servidor TFTP para garantir que ele possa transmitir arquivos aos clientes PXE.
Crie um arquivo de teste:
>echo "test file" | sudo tee /srv/tftpboot/test.txtRecupere o arquivo de teste por TFTP:
>tftp localhost -c get test.txt /tmp/tftp-test.txtVerifique se o arquivo foi recuperado com êxito:
>cat /tmp/tftp-test.txtLimpe os arquivos de teste:
>sudorm /srv/tftpboot/test.txt /tmp/tftp-test.txt
7.6 Solucionando problemas da configuração do TFTP #
Problemas comuns ao configurar serviços TFTP para ambientes de inicialização PXE.
7.6.1 Conflitos de serviços na porta 69 #
Tanto o in.tftpd quanto o dnsmasq usam a porta UDP 69 para serviços TFTP e não podem ser executados simultaneamente.
Verifique quais serviços estão em execução:
>systemctl status tftp.service dnsmasqVerifique que serviço está usando a porta 69:
>ss -ulnp | grep :69Pare o serviço em conflito (exemplo para dnsmasq):
>sudosystemctl stop dnsmasqInicie o serviço TFTP de sua preferência:
>sudosystemctl start tftp.service
7.6.2 Problemas do diretório TFTP #
Problemas ao acessar o sistema de arquivos raiz do TFTP que podem impedir a transmissão de arquivos.
Verifique a configuração do diretório TFTP para in.tftpd:
>grep TFTP_DIRECTORY /etc/sysconfig/tftpVerifique a configuração do diretório TFTP para dnsmasq:
>grep tftp-root /etc/dnsmasq.d/tftp.confVerifique se o diretório existe:
>ls -la /srv/tftpboot/Crie o diretório se ainda não existir:
>sudomkdir -p /srv/tftpboot
7.6.3 Habilitando o registro do TFTP #
O registro detalhado ajuda a identificar problemas de acesso a arquivos com transferências por TFTP.
Verifique as opções atuais do TFTP:
>grep TFTP_OPTIONS /etc/sysconfig/tftpHabilite o registro detalhado:
>sudosed -i 's/^TFTP_OPTIONS=.*/TFTP_OPTIONS="-v"/' /etc/sysconfig/tftpReinicie o serviço TFTP:
>sudosystemctl restart tftp.serviceMonitores os registros do TFTP:
>journalctl -u tftp.service -f
7.7 Próximas etapas #
Com o TFTP configurado, você pode prosseguir para a configuração dos serviços HTTP, para transmitir arquivos do instalador, e dos serviços DHCP, para direcionar os clientes PXE aos carregadores de boot apropriados.
8 Configurando o nginx para entrega por HTTP #
Esta seção explica como configurar o nginx para fornecer o conteúdo da inicialização PXE por HTTP, permitindo que os clientes carreguem os arquivos do instalador, como kernel, initrd e imagens squashfs, de um local central. A entrega por HTTP oferece um desempenho melhor do que o TFTP para arquivos grandes e é necessária para as instalações do SUSE Linux Enterprise Server for SAP Applications 16.0 pelo Agama.
8.1 Introdução #
O nginx atua como servidor HTTP para ambientes de inicialização PXE, fornecendo acesso aos arquivos do instalador por meio de entrega baseada na Web. O servidor HTTP expõe o diretório de inicialização e os repositórios de instalação do TFTP, permitindo que os clientes PXE baixem as imagens do kernel, os arquivos initrd e os componentes do instalador Agama por HTTP, em vez do protocolo TFTP mais lento.
8.2 Requisitos #
O pacote nginx instalado
Arquivos de inicialização PXE organizados em
/srv/tftpboot/bootRepositórios de instalação disponíveis em
/srv/installPrivilégios administrativos para modificar a configuração do nginx
8.3 Configurando o nginx para inicialização PXE #
A configuração do nginx define aliases de local que expõem o diretório de boot TFTP e os repositórios de instalação por meio de URLs HTTP.
Edite o arquivo de configuração do nginx:
>sudovim /etc/nginx/nginx.confConfigure o bloco do servidor HTTP na seção
http:>sudocat > /etc/nginx/nginx.conf << 'EOF'http { include mime.types; default_type application/octet-stream; charset utf-8; sendfile on; keepalive_timeout 65; server { listen 80 default_server; listen [::]:80 default_server; location / { root /srv/www/htdocs/; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /srv/www/htdocs/; } # Expose TFTP boot directory for HTTP boot location /boot { alias /srv/tftpboot/boot; autoindex on; } # Expose installation repositories and profiles location /install { alias /srv/install; autoindex on; } } } events { worker_connections 1024; } EOFTeste a sintaxe da configuração do nginx:
>sudonginx -tHabilite e inicie o serviço nginx:
>sudosystemctl enable --now nginx.service
8.4 Verificando a configuração do nginx #
Teste a funcionalidade do servidor HTTP para garantir que ele possa transmitir os arquivos de inicialização PXE e o conteúdo de instalação aos clientes.
Teste o acesso por HTTP aos arquivos de inicialização:
>curl -I http://localhost/boot/Teste o acesso ao diretório de instalação:
>curl -I http://localhost/install/Verifique se um arquivo do instalador específico está acessível:
>curl -I http://localhost/boot/images/SLES-16.0/x86_64/liveiso/LiveOS/squashfs.img
8.5 Solucionando problemas da configuração do nginx #
Problemas comuns ao configurar o nginx para entrega por HTTP com inicialização PXE.
8.5.1 Erros na sintaxe da configuração #
A sintaxe incorreta da configuração do nginx impede que o serviço seja iniciado ou recarregado de maneira apropriada.
Teste a sintaxe da configuração:
>sudonginx -tVerifique o status do serviço nginx se a inicialização falhar:
>systemctl status nginx.serviceVeja os registros detalhados de erros:
>journalctl -u nginx.service -fConsulte o arquivo de registro de erros do nginx:
>tail -f /var/log/nginx/error.log
8.5.2 Problemas de acesso e permissão de arquivos #
O nginx pode falhar ao transmitir arquivos devido a permissões incorretas ou diretórios ausentes.
Verifique se o diretório de inicialização existe e está acessível:
>ls -la /srv/tftpboot/boot/Verifique se o diretório de instalação existe:
>ls -la /srv/install/Verifique se o nginx pode ler os diretórios:
>sudo -u nginx ls /srv/tftpboot/boot/Crie os diretórios ausentes, se necessário:
>sudomkdir -p /srv/installDefina as permissões apropriadas:
>sudochmod -R 755 /srv/tftpboot/boot /srv/install
8.5.3 Conflitos de vinculação de porta #
Pode haver falha para iniciar o nginx se outro serviço está usando a porta 80.
Verifique que serviço está usando a porta 80:
>ss -tlnp | grep :80Pare os serviços em conflito, se necessário:
>sudosystemctl stop apache2Inicie o serviço nginx:
>sudosystemctl start nginx.serviceVerifique se o nginx escuta na porta 80:
>ss -tlnp | grep :80
8.6 Próximas etapas #
Com o nginx configurado para entrega por HTTP, você pode prosseguir para a configuração dos serviços DHCP, para direcionar os clientes PXE aos carregadores de boot e recursos HTTP apropriados.
9 Configurando um servidor DNS usando dnsmasq #
Esta seção explica como configurar os serviços DNS usando o dnsmasq para fornecer resolução de nomes de host aos clientes PXE que acessam os recursos de instalação do SUSE Linux Enterprise Server for SAP Applications 16.0. A configuração de DNS permite que os clientes usem nomes de host em vez de endereços IP nos URLs de inicialização e nas configurações de DHCP.
9.1 Introdução #
Os serviços DNS permitem que os clientes PXE resolvam os nomes de host nos URLs de inicialização e nas fontes de instalação. A configuração completa do servidor DNS está fora do escopo deste documento, mas esta seção apresenta uma configuração de DNS básica usando o dnsmasq, que permite que os clientes resolvam o nome de host do servidor PXE (PXE.EXAMPLE.NET) para os respectivos endereços IP.
Sem a configuração de DNS, os URLs de inicialização devem usar diretamente os endereços IP, como http://192.168.1.200/ ou http://[2001:db8:0:1::200]/. Algumas implementações de firmware BIOS/UEFI não suportam nomes de host em URLs DHCP/TFTP e exigem endereços IP como tftp://[2001:db8:0:1::200]/.
9.2 Requisitos #
O pacote dnsmasq instalado
Configuração de endereços IP estáticos para o servidor PXE
Privilégios administrativos para configurar os serviços DNS
9.3 Configurando serviços DNS do dnsmasq #
A configuração de DNS do dnsmasq fornece uma resolução de nome de host local e usa servidores de nomes upstream para consultas externas.
Crie o arquivo de configuração de DNS para o dnsmasq:
>sudocat > /etc/dnsmasq.d/dns.conf << 'EOF'# DNS configuration file for dnsmasq # Log DNS queries log-queries # DNS cache behavior cache-size=10000 local-ttl=60 neg-ttl=10 # Never forward A or AAAA queries for plain names to upstream name servers domain-needed # Add local domain to simple names in /etc/hosts and DHCP expand-hosts # Specifies DNS domain and networks including local forward and reverse declarations domain=EXAMPLE.NET,192.168.1.0/24,local domain=EXAMPLE.NET,2001:db8:0:1::/64,local EOFAdicione entradas de nome de host ao arquivo de hosts do sistema:
>sudocat >> /etc/hosts << 'EOF'192.168.1.200 PXE.EXAMPLE.NET 2001:db8:0:1::200 PXE.EXAMPLE.NET EOFTeste a configuração do dnsmasq:
>sudodnsmasq --testHabilite e inicie o serviço dnsmasq:
>sudosystemctl enable --now dnsmasq
Por padrão, o dnsmasq usa os servidores de nomes em /etc/resolv.conf como encaminhadores e fornece registros de /etc/hosts. Isso permite que o servidor PXE resolva nomes de host externos enquanto fornece uma resolução local para serviços relacionados ao PXE.
9.4 Verificando a configuração de DNS #
Teste a funcionalidade do servidor DNS para garantir que a resolução de nomes de host funcione para os clientes PXE.
Teste a resolução de nome de host IPv4:
>nslookup PXE.EXAMPLE.NET localhostTeste a resolução de nome de host IPv6:
>nslookup PXE.EXAMPLE.NET localhost | grep 2001:db8Teste a pesquisa DNS reversa para IPv4:
>nslookup 192.168.1.200 localhostVerifique se o encaminhamento de DNS externo ainda funciona:
>nslookup google.com localhost
9.5 Solucionando problemas da configuração de DNS #
Problemas comuns ao configurar o dnsmasq para serviços DNS em ambientes PXE.
9.5.1 Problemas de configuração e serviço #
Pode haver falha para iniciar o dnsmasq devido a erros de configuração ou conflitos de porta.
Teste a sintaxe de configuração do dnsmasq:
>sudodnsmasq --testVerifique o status do serviço dnsmasq:
>systemctl status dnsmasqVerifique que serviço está usando a porta DNS 53:
>ss -ulnp | grep :53Veja os registros de erros do dnsmasq:
>journalctl -u dnsmasq -fPare os serviços DNS em conflito, se necessário:
>sudosystemctl stop systemd-resolved
9.5.2 Falhas na resolução de nome de host #
As consultas DNS podem falhar devido à configuração incorreta ou a entradas de nome de host ausentes.
Verifique se as entradas de nome de host existem no arquivo hosts:
>grep PXE.EXAMPLE.NET /etc/hostsVerifique a configuração do domínio no dnsmasq:
>grep domain= /etc/dnsmasq.d/dns.confTeste a consulta DNS com uma saída detalhada:
>dig @localhost PXE.EXAMPLE.NETMonitore os registros da consulta dnsmasq:
>journalctl -u dnsmasq | grep "query"Reinicie o dnsmasq para recarregar a configuração:
>sudosystemctl restart dnsmasq
9.5.3 Problemas de encaminhamento de DNS #
As consultas DNS externas poderão falhar se a configuração do servidor de nomes upstream estiver incorreta.
Verifique a configuração do servidor de nomes upstream:
>cat /etc/resolv.confTeste a consulta direta no servidor de nomes upstream:
>nslookup google.com 8.8.8.8Verifique a configuração do encaminhamento de dnsmasq:
>grep -E "server=|no-resolv" /etc/dnsmasq.d/dns.confAdicione um servidor de nomes upstream específico, se necessário:
>sudoecho "server=8.8.8.8" >> /etc/dnsmasq.d/dns.confReinicie o serviço dnsmasq:
>sudosystemctl restart dnsmasq
9.6 Próximas etapas #
Com os serviços DNS configurados, os clientes PXE agora podem resolver os nomes de host nos URLs de inicialização e nas fontes de instalação. Você pode prosseguir para configurar os serviços DHCP que fazem referência ao servidor DNS para configuração do cliente.
10 Configurando um servidor NTP com o chrony #
Esta seção explica como configurar os serviços NTP usando o chrony para fornecer sincronização de horário precisa aos clientes PXE durante as instalações do SUSE Linux Enterprise Server for SAP Applications 16.0. A sincronização de horário apropriada é essencial para validação de certificados e registro do sistema durante as instalações baseadas em rede.
10.1 Introdução #
Os serviços NTP garantem a sincronização de horário precisa em toda a infraestrutura de rede. Para ambientes de inicialização PXE, o horário sincronizado é crucial para validação de certificados durante conexões HTTPS, marcações de horário apropriadas dos registros e operações coordenadas do sistema. Esta seção apresenta a configuração básica do servidor NTP usando o chrony.
10.2 Requisitos #
O pacote chrony instalado
>sudozypper install chronyConectividade de rede com os servidores NTP upstream
Privilégios administrativos para configurar os serviços NTP
10.3 Configurando o serviço NTP chrony #
O serviço de chrony oferece a funcionalidade NTP com sincronização automática de horário para servidores upstream e recursos de exibição de horário local para clientes de rede.
chrony #Habilite e inicie o serviço
chrony:>sudosystemctl enable --now chronyd.service
10.4 Verificando a configuração do NTP #
Teste a funcionalidade do serviço NTP para garantir que a sincronização de horário funcione corretamente.
Verifique o status do serviço
chrony:>systemctl status chronyd.serviceVeja o status da sincronização de horário atual:
>chronyc trackingListe as fontes de NTP configuradas:
>chronyc sourcesVerifique as estatísticas do servidor NTP:
>chronyc sourcestats
10.5 Solucionando problemas da configuração do NTP #
Problemas comuns ao configurar o chrony para serviços NTP em ambientes PXE.
10.5.1 Problemas de inicialização do serviço #
Pode haver falha para iniciar o serviço chrony devido a erros de configuração ou problemas de conectividade de rede.
Verifique o status e os registros do serviço
chrony:>systemctl status chronyd.serviceVeja os registros detalhados do serviço:
>journalctl -u chronyd.service -fTeste a configuração do
chrony:>sudochronyd -QReinicie os serviços, se necessário:
>sudosystemctl restart chronyd.service
10.5.2 Falhas de sincronização de horário #
Pode haver falha na sincronização de horário devido a problemas de rede ou à configuração incorreta do servidor.
Verifique o status da sincronização atual:
>chronyc trackingVeja a conectividade da fonte de NTP:
>chronyc sources -vForce a sincronização imediata:
>sudochronyc makestepCompare o horário do sistema com o relógio do hardware:
>timedatectl statusVerifique a conectividade de rede com os servidores NTP:
>chronyc activity
10.5.3 Problemas de firewall e rede #
As regras de firewall podem bloquear o tráfego NTP, impedindo a sincronização de horário.
Verifique se a porta NTP está aberta no firewall:
>firewall-cmd --list-services | grep ntpAdicione o serviço NTP ao firewall, se necessário:
>sudofirewall-cmd --permanent --add-service=ntpRecarregue a configuração do firewall:
>sudofirewall-cmd --reloadTeste a conectividade NTP manualmente:
>ntpdate -q pool.ntp.orgVerifique o uso da porta do
chrony:>ss -ulnp | grep :123
10.6 Próximas etapas #
Com os serviços NTP configurados, o servidor PXE e os clientes mantêm a sincronização de horário precisa. Isso garante a validação apropriada de certificados e operações coordenadas do sistema durante instalações baseadas em rede.
11 Configurando o anúncio do roteador IPv6 #
Esta seção descreve como configurar a funcionalidade de anúncio do roteador IPv6 para fornecer anúncios do roteador adequados aos clientes PXE. O RA IPv6 habilita a configuração do roteamento IPv6 e a configuração automática de endereço DHCPv6 com informações de estado para as instalações do SUSE Linux Enterprise Server for SAP Applications 16.0.
11.1 Introdução #
O anúncio do roteador (RA, Router Advertisement) IPv6 fornece informações essenciais da configuração de rede aos clientes PXE, incluindo roteamento IPv6 e definições automática de configuração de endereço DHCPv6. Esta seção considera que um roteador IPv6 está configurado para fornecer anúncios do roteador adequados para configurar o roteamento IPv6 para a rede e a rota padrão e para habilitar a configuração automática de endereço DHCPv6 com informações de estado usando AdvManagedFlag on.
11.2 Requisitos #
O pacote radvd instalado
Configuração de rede IPv6 na interface do servidor
Privilégios administrativos para configurar os serviços de anúncio do roteador
11.3 Configurando o radvd para anúncio do roteador IPv6 #
O serviço radvd oferece a funcionalidade de anúncio do roteador IPv6 com base na configuração definida em /etc/radvd.conf.
radvd #Configure o serviço
radvd:>sudocat > /etc/radvd.conf << 'EOF'interface eno1 { # radvd options IgnoreIfMissing on; # Do not fail and exit when interface is missed AdvSendAdvert on; # Sending RAs on the interface is not disabled # Configuration settings AdvManagedFlag on; # Request IPv6 address and dns options via DHCPv6 AdvOtherConfigFlag off; # Request only dns info via DHCPv6, IP via SLAAC AdvDefaultLifetime 1800; # Add default route via this router for 1800sec prefix 2001:db8:0:1::/64 # Add direct route for this local network/prefix { AdvAutonomous off; # Assign IPv6 address via SLAAC AdvValidLifetime 7200; AdvPreferredLifetime 3600; }; }; EOFHabilite e inicie o serviço
radvd:>sudosystemctl enable --now radvd
11.4 Verificando o anúncio do roteador IPv6 #
Teste a funcionalidade RA do IPv6 RA para garantir configuração e operação apropriadas.
Verifique o status do serviço
radvd:>systemctl status radvdRevise e verifique as configurações de RA do IPv6 usando o
ravdump:>radvdumpO utilitário
radvdumpexibe as configurações de RA do IPv6 enviadas pelo roteador IPv6 a cada poucos minutos.
11.5 Configurando o encaminhamento de IP para a funcionalidade do roteador #
Se o servidor PXE também atua como roteador, o encaminhamento de IP deve ser habilitado para permitir que o sistema funcione na função de roteador.
Crie o arquivo de configuração de rede:
>sudocat > /etc/sysctl.d/90-network.conf << 'EOF'# This machine is a router net.ipv4.conf.all.forwarding = 1 net.ipv6.conf.all.forwarding = 1 # Accept host autoconf on router uplink net.ipv6.conf.uplink.accept_ra = 2 EOFAplique as configurações de rede:
>sudosysctl -p /etc/sysctl.d/90-network.conf
Por padrão, um roteador não processa RAs do IPv6 para configuração automática de host. Para aceitar RA do IPv6 em uma interface uplink do roteador, é necessária a configuração do sysctl accept_ra = 2. Consulte a seção Configuração de rede na Guia de Administração para obter mais detalhes sobre a configuração do roteador, incluindo ajustes de firewall e outras etapas necessárias.
11.6 Solucionando problemas de anúncio do roteador IPv6 #
Problemas comuns ao configurar o anúncio do roteador IPv6 para ambientes PXE.
11.6.1 Problemas do serviço radvd #
Pode haver falha para iniciar o serviço radvd devido a erros de configuração ou problemas de interface.
radvd #Verifique o status e os registros do serviço
radvd:>systemctl status radvdVeja os registros detalhados do serviço:
>journalctl -u radvd -fTeste a sintaxe de configuração do
radvd:>sudoradvd -C /etc/radvd.confVerifique se a interface especificada existe:
>ip link show eno1Reinicie o serviço depois de corrigir a configuração:
>sudosystemctl restart radvd
11.6.2 Problemas de configuração do encaminhamento de IP #
Configurações de encaminhamento de IP incorretas podem impedir a funcionalidade adequada do roteador.
Verifique o status atual do encaminhamento de IP:
>sysctl net.ipv4.conf.all.forwardingVerifique o status do encaminhamento de IPv6:
>sysctl net.ipv6.conf.all.forwardingVerifique o arquivo de configuração do sysctl:
>cat /etc/sysctl.d/90-network.confAplique a configuração se os valores estiverem incorretos:
>sudosysctl -p /etc/sysctl.d/90-network.confVerifique a configuração de accept_ra na interface uplink:
>sysctl net.ipv6.conf.uplink.accept_ra
11.6.3 Problemas de recebimento de anúncios do roteador #
Os clientes podem não receber ou processar corretamente os anúncios do roteador IPv6.
Monitore os anúncios do roteador usando o
ravdump:>radvdump -dVerifique a configuração da interface IPv6 nos clientes:
>ip -6 addr showVerifique a tabela de roteamento de IPv6 nos clientes:
>ip -6 route showTeste a conectividade do IPv6 com o roteador:
>ping6 2001:db8:0:1::1Verifique as regras de firewall para ICMPv6:
>firewall-cmd --list-protocols | grep ipv6-icmp
11.7 Próximas etapas #
Com o anúncio do roteador IPv6 configurado, os clientes PXE pode receber uma configuração de rede IPv6 adequada. Isso habilita a funcionalidade DHCPv6 e a conectividade IPv6 nas instalações baseadas em rede.
12 Configurando um servidor DHCP com o dnsmasq #
Esta seção explica como configurar os serviços DHCP com o dnsmasq para fornecer informações de configuração de rede e inicialização PXE às instalações do SUSE Linux Enterprise Server for SAP Applications 16.0. O servidor DHCP dnsmasq usa uma configuração baseada em tags para suportar clientes PXE tanto IPv4 quanto IPv6 com recursos de inicialização UEFI e BIOS.
12.1 Introdução #
O servidor DHCP dnsmasq fornece as informações de configuração de rede e de arquivo de inicialização aos clientes PXE usando um sistema baseado em tags para corresponder os tipos de cliente e fornecer os carregadores de boot apropriados. Essa configuração suporta ambas as correspondências de PXEClient e HTTPClient que funcionam para DHCPv4 e DHCPv6, o que permite a inicialização por sistemas UEFI e BIOS em várias arquiteturas.
O dnsmasq versão 2.90 e anterior não suporta o envio da opção de classe de fornecedor 6:16 de volta aos clientes DHCPv6 para configurações de HTTPClient. Para suporte completo do HTTPClient, considere usar os servidores DHCP Kea ou ISC.
12.2 Requisitos #
O pacote dnsmasq instalado
Arquivos de inicialização PXE devidamente organizados em
/srv/tftpbootInterface de rede configurada para o serviço DHCP
Privilégios administrativos para configurar os serviços DHCP
12.3 Configurando serviços DHCP do dnsmasq #
A configuração do DHCP dnsmasq inclui a correspondência de tipos de cliente, os intervalos de rede e as atribuições de arquivos de inicialização para ambas as redes IPv4 e IPv6.
Crie o arquivo de configuração de DHCP para o dnsmasq:
>sudocat > /etc/dnsmasq.d/dhcp.conf << 'EOF'# DHCP configuration file for dnsmasq # Log DHCP processing log-dhcp # This is the only DHCP server, don't ignore unknown clients/send NAK dhcp-authoritative # Disable re-use of the DHCPv4 servername and filename fields as extra # option space, which may confuse old or broken clients dhcp-no-override # IPv4 PXE/HTTP boot client matches (no enterprise number) # Match client type in PXEClient:Arch and map to a tag dhcp-vendorclass=set:tftp_bios_x86_pc,PXEClient:Arch:00000 dhcp-vendorclass=set:tftp_uefi_x86_64,PXEClient:Arch:00007 dhcp-vendorclass=set:tftp_ieee_ppc_64,PXEClient:Arch:0000e dhcp-vendorclass=set:tftp_uefi_arm_64,PXEClient:Arch:00011 # Match client type in HTTPClient:Arch and map to a tag dhcp-vendorclass=set:http_uefi_x86_64,HTTPClient:Arch:00016 dhcp-vendorclass=set:http_uefi_arm_64,HTTPClient:Arch:00019 # IPv6 PXE/HTTP boot client matches (enterprise:343 intel) # Match client type in PXEClient:Arch and map to a tag dhcp-vendorclass=set:tftp_bios_x86_pc,enterprise:343,PXEClient:Arch:00000 dhcp-vendorclass=set:tftp_uefi_x86_64,enterprise:343,PXEClient:Arch:00007 dhcp-vendorclass=set:tftp_ieee_ppc_64,enterprise:343,PXEClient:Arch:0000e dhcp-vendorclass=set:tftp_uefi_arm_64,enterprise:343,PXEClient:Arch:00011 # Match client type in HTTPClient:Arch and map to a tag dhcp-vendorclass=set:http_uefi_x86_64,enterprise:343,HTTPClient:Arch:00016 dhcp-vendorclass=set:http_uefi_arm_64,enterprise:343,HTTPClient:Arch:00019 EOFConfigure o intervalo e as opções de DHCP IPv4:
>sudocat >> /etc/dnsmasq.d/dhcp.conf << 'EOF'# IPv4 range and options dhcp-range=set:net0v4,192.168.1.100,192.168.1.199,255.255.255.0,1h dhcp-option=tag:net0v4,option:domain-search,example.net dhcp-option=tag:net0v4,option:dns-server,192.168.1.200 dhcp-option=tag:net0v4,option:ntp-server,192.168.1.1 dhcp-option=tag:net0v4,option:router,192.168.1.1 EOFConfigure as opções de inicialização PXE de IPv4:
>sudocat >> /etc/dnsmasq.d/dhcp.conf << 'EOF'# IPv4 PXEClient boot dhcp-boot=tag:net0v4,tag:tftp_bios_x86_pc,/boot/grub2/i386-pc/core.0,192.168.1.200 dhcp-boot=tag:net0v4,tag:tftp_uefi_x86_64,/boot/grub2/x86_64-efi/bootx64.efi,192.168.1.200 dhcp-boot=tag:net0v4,tag:tftp_ieee_ppc_64,/boot/grub2/powerpc-ieee1275/core.elf,192.168.1.200 dhcp-boot=tag:net0v4,tag:tftp_uefi_arm_64,/boot/grub2/arm64-efi/bootaa64.efi,192.168.1.200 # IPv4 HTTPClient boot dhcp-option-force=tag:net0v4,tag:http_uefi_x86_64,option:vendor-class,HTTPClient dhcp-boot=tag:net0v4,tag:http_uefi_x86_64,http://192.168.1.200/boot/grub2/x86_64-efi/bootx64.efi dhcp-option-force=tag:net0v4,tag:http_uefi_arm_64,option:vendor-class,HTTPClient dhcp-boot=tag:net0v4,tag:http_uefi_arm_64,http://192.168.1.200/boot/grub2/arm64-efi/bootaa64.efi EOFConfigure o intervalo e as opções de DHCP IPv6:
>sudocat >> /etc/dnsmasq.d/dhcp.conf << 'EOF'# IPv6 range and options dhcp-range=set:net0v6,2001:db8:0:1:d::,2001:db8:0:1:d::ffff,64,1h dhcp-option=tag:net0v6,option6:domain-search,example.net dhcp-option=tag:net0v6,option6:dns-server,[2001:db8:0:1::200] dhcp-option=tag:net0v6,option6:sntp-server,[2001:db8:0:1::1] EOFConfigure as opções de inicialização PXE de IPv6:
>sudocat >> /etc/dnsmasq.d/dhcp.conf << 'EOF'# IPv6 PXEClient boot dhcp-option=tag:net0v6,tag:tftp_bios_x86_pc,option6:bootfile-url,tftp://[2001:db8:0:1::200]/boot/grub2/i386-pc/core.0 dhcp-option=tag:net0v6,tag:tftp_uefi_x86_64,option6:bootfile-url,tftp://[2001:db8:0:1::200]/boot/grub2/x86_64-efi/bootx64.efi dhcp-option=tag:net0v6,tag:tftp_ieee_ppc_64,option6:bootfile-url,tftp://[2001:db8:0:1::200]/boot/grub2/powerpc-ieee1275/core.elf dhcp-option=tag:net0v6,tag:tftp_uefi_arm_64,option6:bootfile-url,tftp://[2001:db8:0:1::200]/boot/grub2/arm64-efi/bootaa64.efi # IPv6 HTTPClient boot # Note: dnsmasq <= 2.90 does not support sending vendor-class option6:16 back to client EOFTeste a configuração do dnsmasq:
>sudodnsmasq --testHabilite e inicie o serviço dnsmasq:
>sudosystemctl enable --now dnsmasq
12.4 Verificando a configuração da DHCP #
Teste a funcionalidade do servidor DHCP para garantir a configuração de rede e a entrega de arquivos de inicialização apropriadas para os clientes PXE.
Verifique o status do serviço dnsmasq:
>systemctl status dnsmasqVerifique a vinculação da porta DHCP:
>ss -ulnp | grep :67Monitore as atribuições de concessão DHCP:
>journalctl -u dnsmasq -fVerifique as concessões DHCP ativas:
>cat /var/lib/dhcp/dhcpd.leases
12.5 Solucionando problemas da configuração do DHCP dnsmasq #
Problemas comuns ao configurar o dnsmasq para serviços DHCP em ambientes PXE.
12.5.1 Problemas de inicialização e configuração de serviço #
O dnsmasq pode falhar ao ser iniciado devido a erros de configuração ou conflitos de porta com outros serviços DHCP.
Teste a sintaxe de configuração do dnsmasq:
>sudodnsmasq --testVerifique se há conflitos de porta DHCP:
>ss -ulnp | grep :67Pare os serviços DHCP em conflito:
>sudosystemctl stop dhcpdVeja os registros detalhados do serviço:
>journalctl -u dnsmasq -fReinicie o dnsmasq depois de resolver os conflitos:
>sudosystemctl restart dnsmasq
12.5.2 Problemas de atribuição de concessão DHCP #
Os clientes podem não receber endereços IP devido a problemas de configuração de intervalos ou conectividade de rede.
Verifique a configuração de intervalos do DHCP:
>grep dhcp-range /etc/dnsmasq.d/dhcp.confMonitore as solicitações DHCP em tempo real:
>journalctl -u dnsmasq -f | grep DHCPVerifique o status da interface de rede:
>ip addr showVerifique a configuração de autorização do DHCP:
>grep dhcp-authoritative /etc/dnsmasq.d/dhcp.confTeste a resposta do DHCP com dhcping:
>dhcping -s 192.168.1.200
12.5.3 Problemas na entrega de arquivos de inicialização PXE #
Os clientes PXE podem receber endereços IP, mas não podem ser inicializados devido à configuração incorreta do arquivo de inicialização ou a problemas de correspondência de tipo de cliente.
Verifique a correspondência de classe do fornecedor do cliente:
>grep dhcp-vendorclass /etc/dnsmasq.d/dhcp.confVerifique os caminhos dos arquivos de inicialização:
>grep dhcp-boot /etc/dnsmasq.d/dhcp.confTeste o acesso por TFTP aos arquivos de inicialização:
>tftp 192.168.1.200 -c get /boot/grub2/x86_64-efi/bootx64.efiMonitore os registros do DHCP específicos do PXE:
>journalctl -u dnsmasq | grep -E "PXE|HTTP"Verifique a atribuição de tags nos registros:
>journalctl -u dnsmasq | grep "tags:"
12.5.4 Problemas na configuração do DHCP IPv6 #
Os clientes DHCP IPv6 exigem a configuração apropriada do anúncio do roteador e podem ter requisitos de endereçamento diferentes do IPv4.
Verifique a configuração de intervalos do DHCP IPv6:
>grep "2001:db8" /etc/dnsmasq.d/dhcp.confVerifique o status do anúncio do roteador IPv6:
>systemctl status radvdMonitore as solicitações DHCPv6:
>journalctl -u dnsmasq | grep "DHCPv6"Teste a conectividade do IPv6:
>ping6 2001:db8:0:1::200Verifique a configuração da opção IPv6:
>grep option6 /etc/dnsmasq.d/dhcp.conf
12.6 Próximas etapas #
Com os serviços DHCP dnsmasq configurados, os clientes PXE podem receber informações de configuração de rede e de arquivos de inicialização para os ambientes tanto IPv4 quanto IPv6. O sistema baseado em tags oferece atribuição flexível de arquivos de inicialização com base na arquitetura do cliente e nos requisitos do método de inicialização.
13 Configurando um servidor DHCP com o Kea #
Esta seção explica como configurar os serviços DHCP com o Kea para fornecer informações de configuração de rede e inicialização PXE às instalações do SUSE Linux Enterprise Server for SAP Applications 16.0. Kea é um servidor DHCP moderno que suporta IPv4 e IPv6 com correspondência de classe do cliente para cenários de inicialização PXE e HTTP.
13.1 Introdução #
Kea é o servidor DHCP moderno desenvolvido pela ISC como sucessor do servidor ISC DHCP antigo. Ele oferece suporte avançado para DHCPv4 e DHCPv6 com recursos de classificação de cliente que permitem a entrega apropriada de arquivos de inicialização com base na arquitetura do cliente e no método de inicialização. O Kea usa os arquivos de configuração baseados em JSON e suporta recursos avançados, como identificação de classe de fornecedor para inicialização HTTP.
13.2 Requisitos #
Pacotes Kea DHCP instalados: kea-dhcp4 e kea-dhcp6
Arquivos de inicialização PXE devidamente organizados em
/srv/tftpbootInterface de rede configurada para o serviço DHCP
Privilégios administrativos para configurar os serviços DHCP
13.3 Configurando o servidor Kea DHCPv4 #
A configuração do Kea DHCPv4 usa as classes de cliente para corresponder os tipos de cliente PXE e HTTP e fornecer os arquivos de inicialização apropriados para diferentes arquiteturas.
Configure o servidor Kea DHCPv4:
>sudocat > /etc/kea/kea-dhcp4.conf << 'EOF'{ "Dhcp4": { "interfaces-config": { "interfaces": [ "eno1" ] }, "control-socket": { "socket-type": "unix", "socket-name": "/tmp/kea4-ctrl-socket" }, "lease-database": { "type": "memfile", "persist": true, "name": "/var/lib/kea/dhcp4.leases", "lfc-interval": 3600 }, "expired-leases-processing": { "reclaim-timer-wait-time": 10, "flush-reclaimed-timer-wait-time": 25, "hold-reclaimed-time": 3600, "max-reclaim-leases": 100, "max-reclaim-time": 250, "unwarned-reclaim-cycles": 5 }, "renew-timer": 1800, "rebind-timer": 3150, "valid-lifetime": 3600, "option-data": [], "client-classes": [ { "name": "pxeclients#00000", "test": "substring(option[60].hex,0,20) == 'PXEClient:Arch:00000'", "next-server": "192.168.1.200", "boot-file-name": "/boot/grub2/i386-pc/core.0" }, { "name": "pxeclients#00007", "test": "substring(option[60].hex,0,20) == 'PXEClient:Arch:00007'", "next-server": "192.168.1.200", "boot-file-name": "/boot/grub2/x86_64-efi/bootx64.efi" }, { "name": "pxeclients#0000e", "test": "substring(option[60].hex,0,20) == 'PXEClient:Arch:0000e'", "next-server": "192.168.1.200", "boot-file-name": "/boot/grub2/powerpc-ieee1275/core.elf" }, { "name": "pxeclients#00011", "test": "substring(option[60].hex,0,20) == 'PXEClient:Arch:00011'", "next-server": "192.168.1.200", "boot-file-name": "/boot/grub2/arm64-efi/bootaa64.efi" }, { "name": "httpclients#00016", "test": "substring(option[60].hex,0,21) == 'HTTPClient:Arch:00016'", "boot-file-name": "http://192.168.1.200/boot/grub2/x86_64-efi/bootx64.efi", "option-data": [ { "name": "vendor-class-identifier", "data": "HTTPClient" } ] }, { "name": "httpclients#00019", "test": "substring(option[60].hex,0,21) == 'HTTPClient:Arch:00019'", "boot-file-name": "http://192.168.1.200/boot/grub2/arm64-efi/bootaa64.efi", "option-data": [ { "name": "vendor-class-identifier", "data": "HTTPClient" } ] } ], "subnet4": [ { "id": 1, "subnet": "192.168.1.0/24", "pools": [ { "pool": "192.168.1.100 - 192.168.1.199" } ], "option-data": [ { "name": "routers", "data": "192.168.1.1" }, { "name": "ntp-servers", "data": "192.168.1.1" }, { "name": "domain-name-servers", "data": "192.168.1.200" }, { "name": "domain-search", "data": "example.net" } ], "reservations": [] } ], "loggers": [ { "name": "kea-dhcp4", "output-options": [ { "output": "/var/log/kea/dhcp4.log" } ], "severity": "INFO", "debuglevel": 0 } ] } } EOFCrie o diretório de registro do Kea:
>sudomkdir -p /var/log/keaTeste a configuração do Kea DHCPv4:
>sudokea-dhcp4 -t /etc/kea/kea-dhcp4.confHabilite e inicie o serviço Kea DHCPv4:
>sudosystemctl enable --now kea-dhcp4
13.4 Configurando o servidor Kea DHCPv6 #
A configuração do Kea DHCPv6 fornece atribuição de endereços IPv6 e informações de arquivos de inicialização usando a correspondência de classe de fornecedor para diferentes arquiteturas de cliente.
Configure o servidor Kea DHCPv6:
>sudocat > /etc/kea/kea-dhcp6.conf << 'EOF'{ "Dhcp6": { "interfaces-config": { "interfaces": [ "eno1" ] }, "control-socket": { "socket-type": "unix", "socket-name": "/tmp/kea6-ctrl-socket" }, "lease-database": { "type": "memfile", "persist": true, "name": "/var/lib/kea/dhcp6.leases", "lfc-interval": 3600 }, "expired-leases-processing": { "reclaim-timer-wait-time": 10, "flush-reclaimed-timer-wait-time": 25, "hold-reclaimed-time": 3600, "max-reclaim-leases": 100, "max-reclaim-time": 250, "unwarned-reclaim-cycles": 5 }, "renew-timer": 1800, "rebind-timer": 2880, "preferred-lifetime": 3600, "valid-lifetime": 7200, "option-data": [], "option-def": [], "client-classes": [ { "name": "pxeclients#00000", "test": "substring(option[16].hex,6,20) == 'PXEClient:Arch:00000'", "option-data": [ { "name": "bootfile-url", "data": "tftp://[2001:db8:0:1::200]/boot/grub2/i386-pc/core.0" } ] }, { "name": "pxeclients#00007", "test": "substring(option[16].hex,6,20) == 'PXEClient:Arch:00007'", "option-data": [ { "name": "bootfile-url", "data": "tftp://[2001:db8:0:1::200]/boot/grub2/x86_64-efi/bootx64.efi" } ] }, { "name": "pxeclients#0000e", "test": "substring(option[16].hex,6,20) == 'PXEClient:Arch:0000e'", "option-data": [ { "name": "bootfile-url", "data": "tftp://[2001:db8:0:1::200]/boot/grub2/powerpc-ieee1275/core.elf" } ] }, { "name": "pxeclients#00011", "test": "substring(option[16].hex,6,20) == 'PXEClient:Arch:00011'", "option-data": [ { "name": "bootfile-url", "data": "tftp://[2001:db8:0:1::200]/boot/grub2/arm64-efi/bootaa64.efi" } ] } ], "subnet6": [ { "id": 1, "subnet": "2001:db8:0:1::/64", "interface": "eno1", "pools": [ { "pool": "2001:db8:0:1:d::/112" } ], "option-data": [ { "name": "sntp-servers", "data": "2001:db8:0:1::1" }, { "name": "dns-servers", "data": "2001:db8:0:1::200" }, { "name": "domain-search", "data": "example.net" } ], "reservations": [] } ], "loggers": [ { "name": "kea-dhcp6", "output-options": [ { "output": "/var/log/kea/dhcp6.log" } ], "severity": "INFO", "debuglevel": 0 } ] } } EOFTeste a configuração do Kea DHCPv6:
>sudokea-dhcp6 -t /etc/kea/kea-dhcp6.confHabilite e inicie o serviço Kea DHCPv6:
>sudosystemctl enable --now kea-dhcp6
13.5 Verificando a configuração do Kea DHCP #
Teste a funcionalidade do servidor Kea DHCP para garantir a configuração de rede e a entrega de arquivos de inicialização apropriadas para os clientes PXE.
Verifique o status do serviço Kea DHCPv4:
>systemctl status kea-dhcp4Verifique o status do serviço Kea DHCPv6:
>systemctl status kea-dhcp6Verifique a vinculação da porta DHCP:
>ss -ulnp | grep -E ":67|:547"Monitore os registros do DHCPv4:
>tail -f /var/log/kea/dhcp4.logMonitore os registros do DHCPv6:
>tail -f /var/log/kea/dhcp6.logVerifique as concessões DHCP ativas:
>cat /var/lib/kea/dhcp4.leases
13.6 Solucionando problemas da configuração do Kea DHCP #
Problemas comuns ao configurar serviços Kea DHCP para ambientes de inicialização PXE.
13.6.1 Problemas de configuração e serviço #
Pode haver falha para iniciar os serviços Kea devido a erros de configuração do JSON ou problemas de interface de rede.
Teste a sintaxe de configuração do DHCPv4:
>sudokea-dhcp4 -t /etc/kea/kea-dhcp4.confTeste a sintaxe de configuração do DHCPv6:
>sudokea-dhcp6 -t /etc/kea/kea-dhcp6.confVerifique se há erros de sintaxe do JSON:
>python3 -m json.tool /etc/kea/kea-dhcp4.confVerifique a configuração da interface de rede:
>ip addr show eno1Verifique os registros do serviço Kea:
>journalctl -u kea-dhcp4 -f
13.6.2 Problemas de atribuição de concessão DHCP #
Os clientes podem não receber endereços IP devido a problemas de configuração de sub-rede ou esgotamento de pool.
Verifique a configuração da sub-rede e do pool:
>grep -A 10 "subnet4\|pools" /etc/kea/kea-dhcp4.confMonitore as atribuições de concessão em tempo real:
>tail -f /var/log/kea/dhcp4.log | grep -E "ALLOC|DISCOVER"Verifique se há conflitos no banco de dados de concessão:
>cat /var/lib/kea/dhcp4.leases | tail -20Verifique a vinculação da interface:
>grep interfaces /etc/kea/kea-dhcp4.confLimpe o banco de dados de concessão, se necessário:
>sudosystemctl stop kea-dhcp4>sudomv /var/lib/kea/dhcp4.leases /var/lib/kea/dhcp4.leases.backup>sudosystemctl start kea-dhcp4
13.6.3 Problemas de correspondência de classe de cliente PXE #
Os clientes PXE podem receber endereços IP, mas não obtêm os arquivos de inicialização corretos devido a problemas de configuração da classe do cliente.
Verifique as definições de classe de cliente:
>grep -A 5 "client-classes" /etc/kea/kea-dhcp4.confMonitore a correspondência de classe de cliente nos registros:
>tail -f /var/log/kea/dhcp4.log | grep -i classVerifique os padrões do identificador de classe de cliente:
>grep "PXEClient\|HTTPClient" /etc/kea/kea-dhcp4.confTeste a acessibilidade do arquivo de inicialização:
>curl -I http://192.168.1.200/boot/grub2/x86_64-efi/bootx64.efiHabilite o registro de depuração para análise detalhada do cliente:
>sudosed -i 's/"debuglevel": 0/"debuglevel": 99/' /etc/kea/kea-dhcp4.conf>sudosystemctl restart kea-dhcp4
13.6.4 Problemas específicos do DHCPv6 #
Os clientes DHCP IPv6 exigem a configuração apropriada do anúncio do roteador e têm um gerenciamento de opções de classe de fornecedor diferente do IPv4.
Verifique a configuração da sub-rede DHCPv6:
>grep -A 10 "subnet6" /etc/kea/kea-dhcp6.confVerifique o status do anúncio do roteador IPv6:
>systemctl status radvdMonitore a correspondência de classe de fornecedor do DHCPv6:
>tail -f /var/log/kea/dhcp6.log | grep "option\[16\]"Verifique o formato da opção bootfile-url IPv6:
>grep "bootfile-url" /etc/kea/kea-dhcp6.confTeste a conectividade do IPv6 com o servidor de inicialização:
>ping6 2001:db8:0:1::200
13.7 Próximas etapas #
Com os serviços DHCP Kea configurados, os clientes PXE podem receber informações abrangentes de configuração de rede e de arquivos de inicialização para os ambientes tanto IPv4 quanto IPv6. O sistema de classificação de cliente fornece atribuição precisa de arquivos de inicialização com base na arquitetura do cliente e suporta os métodos de inicialização PXE tradicionais e HTTP modernos.
14 Configurando um servidor DHCP com o ISC DHCP #
Esta seção explica como configurar o servidor ISC DHCP para fornecer informações de configuração de rede e inicialização PXE às instalações do SUSE Linux Enterprise Server for SAP Applications 15. O pacote dhcp-server da ISC não está mais disponível no SUSE Linux Enterprise Server for SAP Applications 16.0. O ISC DHCP usa a correspondência de classe e subclasse para suportar cenários de inicialização PXE e HTTP em diferentes arquiteturas de cliente.
14.1 Introdução #
O ISC DHCP é o servidor DHCP tradicional que fornece informações de configuração de rede e arquivo de inicialização para clientes PXE usando um sistema de classe e subclasse. A ISC anunciou o fim do serviço desse servidor a partir de 2022, mas ele ainda é amplamente utilizado nas implantações existentes e oferece suporte robusto a cenários de inicialização PXE e HTTP com identificação de classe de fornecedor.
O fim do serviço do ISC DHCP foi anunciado pela ISC em 2022. Para novas implantações, considere usar o Kea ou dnsmasq em vez dele. Esta configuração é fornecida para compatibilidade com as instalações existentes do ISC DHCP.
14.2 Requisitos #
Pacotes ISC DHCP instalados: dhcp-server
Arquivos de inicialização PXE devidamente organizados em
/srv/tftpbootInterface de rede configurada para o serviço DHCP
Privilégios administrativos para configurar os serviços DHCP
14.3 Configurando o servidor ISC DHCPv4 #
A configuração do ISC DHCPv4 usa as declarações de classe e subclasse para corresponder os tipos de cliente PXE e HTTP e fornecer os arquivos de inicialização apropriados para diferentes arquiteturas.
Configure o servidor ISC DHCPv4:
>sudocat > /etc/dhcpd.conf << 'EOF'# /etc/dhcpd.conf # # Sample configuration file for ISC dhcpd # # *** PLEASE CONFIGURE IT FIRST *** # # Don't forget to set the DHCPD_INTERFACE in the # /etc/sysconfig/dhcpd file. # # if you want to use dynamical DNS updates, you should first read # read /usr/share/doc/packages/dhcp-server/DDNS-howto.txt # ddns-updates off; # Use this to enable / disable dynamic dns updates globally. ddns-update-style none; # default lease time default-lease-time 3600; max-lease-time 7200; ## ## PXE / HTTP boot option declarations ## class "pxeclients" { # PXEClient:Arch:00000:UNDI:002001 match substring (option vendor-class-identifier, 0, 20); } class "httpclients" { # HTTPClient:Arch:00016:UNDI:003001 match substring (option vendor-class-identifier, 0, 21); } ## ## PXE / HTTP boot subclass request matches ## subclass "pxeclients" "PXEClient:Arch:00000" { next-server 192.168.1.200; filename "/boot/grub2/i386-pc/core.0"; } subclass "pxeclients" "PXEClient:Arch:00007" { next-server 192.168.1.200; filename "/boot/grub2/x86_64-efi/bootx64.efi"; } subclass "pxeclients" "PXEClient:Arch:0000e" { next-server 192.168.1.200; filename "/boot/grub2/powerpc-ieee1275/core.elf"; } subclass "pxeclients" "PXEClient:Arch:00011" { next-server 192.168.1.200; filename "/boot/grub2/arm64-efi/bootaa64.efi"; } subclass "httpclients" "HTTPClient:Arch:00016" { option vendor-class-identifier "HTTPClient"; filename "http://192.168.1.200/boot/grub2/x86_64-efi/bootx64.efi"; } subclass "httpclients" "HTTPClient:Arch:00019" { option vendor-class-identifier "HTTPClient"; filename "http://192.168.1.200/boot/grub2/arm64-efi/bootaa64.efi"; } ## ## Subnet declaration for the pxe network ## subnet 192.168.1.0 netmask 255.255.255.0 { authoritative; range dynamic-bootp 192.168.1.100 192.168.1.199; option subnet-mask 255.255.255.0; option routers 192.168.1.1; option ntp-servers 192.168.1.1; option domain-name-servers 192.168.1.200; option domain-name "example.net"; option domain-search "example.net"; } EOFConfigure a interface DHCP no sysconfig:
>sudoecho 'DHCPD_INTERFACE="eno1"' > /etc/sysconfig/dhcpdTeste a configuração do DHCPv4:
>sudodhcpd -t -cf /etc/dhcpd.confHabilite e inicie o serviço ISC DHCPv4:
>sudosystemctl enable --now dhcpd
14.4 Configurando o servidor ISC DHCPv6 #
A configuração do ISC DHCPv6 fornece atribuição de endereços IPv6 e informações de arquivos de inicialização usando a correspondência de classe de fornecedor para o gerenciamento adequado da opção DHCPv6.
Configure o servidor ISC DHCPv6:
>sudocat > /etc/dhcpd6.conf << 'EOF'# /etc/dhcpd6.conf # # Sample DHCPv6 configuration file for ISC dhcpd # # *** PLEASE CONFIGURE IT FIRST *** # # Don't forget to set the DHCPD6_INTERFACE in the # /etc/sysconfig/dhcpd file. # # if you want to use dynamical DNS updates, you should first # read /usr/share/doc/packages/dhcp-server/DDNS-howto.txt ddns-updates off; # Use this to enable / disable dynamic dns updates globally. ddns-update-style none; # IPv6 address valid lifetime # (at the end the address is no longer usable by the client) # (set to 30 days, the usual IPv6 default) default-lease-time 7200; # IPv6 address preferred lifetime # (at the end the address is deprecated, i.e., the client should use # other addresses for new connections) # (set to 7 days, the usual IPv6 default) preferred-lifetime 3600; ## ## PXE / HTTP boot option declarations ## # The dhcp6 option 16 is in fact an: # { uint32 enterprise-number, array of { uint16 len, string tag} vendor-class-data } # this declaration is using the whole option data as string for substring match: option dhcp6.vendor-class-as-string code 16 = string; # this declaration is using the enterprise-number with 1st tag length and string: option dhcp6.vendor-class-en-len-tag code 16 = {integer 32, integer 16, string}; class "pxeclients" { # PXEClient:Arch:00000:UNDI:002001 # note: +6 to skip the enterprise-number+len until the PXEClient string match substring (option dhcp6.vendor-class-as-string, 6, 20); } class "httpclients" { # HTTPClient:Arch:00016:UNDI:003001 # note: +6 to skip the enterprise-number+len until the HTTPClient string match substring (option dhcp6.vendor-class-as-string, 6, 21); } ## ## PXE / HTTP boot subclass request matches ## subclass "pxeclients" "PXEClient:Arch:00000" { option dhcp6.bootfile-url "tftp://[2001:db8:0:1::200]/boot/grub2/i386-pc/core.0"; } subclass "pxeclients" "PXEClient:Arch:00007" { option dhcp6.bootfile-url "tftp://[2001:db8:0:1::200]/boot/grub2/x86_64-efi/bootx64.efi"; } subclass "pxeclients" "PXEClient:Arch:0000e" { option dhcp6.bootfile-url "tftp://[2001:db8:0:1::200]/boot/grub2/powerpc-ieee1275/core.elf"; } subclass "pxeclients" "PXEClient:Arch:00011" { option dhcp6.bootfile-url "tftp://[2001:db8:0:1::200]/boot/grub2/arm64-efi/bootaa64.efi"; } subclass "httpclients" "HTTPClient:Arch:00016" { option dhcp6.vendor-class-en-len-tag 343 10 "HTTPClient"; option dhcp6.bootfile-url "http://[2001:db8:0:1::200]/boot/grub2/x86_64-efi/bootx64.efi"; } subclass "httpclients" "HTTPClient:Arch:00019" { option dhcp6.vendor-class-en-len-tag 343 10 "HTTPClient"; option dhcp6.bootfile-url "http://[2001:db8:0:1::200]/boot/grub2/arm64-efi/bootaa64.efi"; } ## ## Subnet declaration for the pxe network ## subnet6 2001:db8:0:1::/64 { authoritative; range6 2001:db8:0:1:d:: 2001:db8:0:1:d::ffff; option dhcp6.sntp-servers 2001:db8:0:1::1; option dhcp6.name-servers 2001:db8:0:1::200; option dhcp6.domain-search "example.net"; } EOFConfigure a interface DHCPv6 no sysconfig:
>sudoecho 'DHCPD6_INTERFACE="eno1"' >> /etc/sysconfig/dhcpdTeste a configuração do DHCPv6:
>sudodhcpd -6 -t -cf /etc/dhcpd6.confHabilite e inicie o serviço ISC DHCPv6:
>sudosystemctl enable --now dhcpd6
14.5 Verificando a configuração do ISC DHCP #
Teste a funcionalidade do servidor ISC DHCP para garantir a configuração de rede e a entrega de arquivos de inicialização apropriadas para os clientes PXE.
Verifique o status do serviço ISC DHCPv4:
>systemctl status dhcpdVerifique o status do serviço ISC DHCPv6:
>systemctl status dhcpd6Verifique a vinculação da porta DHCP:
>ss -ulnp | grep -E ":67|:547"Monitore os registros do DHCP:
>journalctl -u dhcpd -fVerifique as concessões DHCP ativas:
>cat /var/lib/dhcp/dhcpd.leasesMonitore as atividades do DHCPv6:
>journalctl -u dhcpd6 -f
14.6 Solucionando problemas da configuração do ISC DHCP #
Problemas comuns ao configurar os servidores ISC DHCP para ambientes de inicialização PXE.
14.6.1 Problemas de configuração e serviço #
Pode haver falha para iniciar os serviços ISC DHCP devido a erros na sintaxe de configuração ou problemas de vinculação de interface.
Teste a sintaxe de configuração do DHCPv4:
>sudodhcpd -t -cf /etc/dhcpd.confTeste a sintaxe de configuração do DHCPv6:
>sudodhcpd -6 -t -cf /etc/dhcpd6.confVerifique a configuração da interface:
>cat /etc/sysconfig/dhcpdVerifique o status da interface de rede:
>ip addr show eno1Verifique se há conflitos de porta:
>ss -ulnp | grep :67Veja os registros detalhados do serviço:
>journalctl -u dhcpd -xe
14.6.2 Problemas de atribuição de concessão DHCP #
Os clientes podem não receber endereços IP devido a problemas de configuração de sub-rede ou autorização.
Verifique a configuração da sub-rede e do intervalo:
>grep -A 10 "subnet\|range" /etc/dhcpd.confVerifique a configuração de autorização:
>grep authoritative /etc/dhcpd.confMonitore as atribuições de concessão em tempo real:
>tail -f /var/log/messages | grep dhcpdVerifique se há erros no banco de dados de concessão:
>tail -20 /var/lib/dhcp/dhcpd.leasesTeste a resposta do DHCP manualmente:
>dhcping -s 192.168.1.200 -h aa:bb:cc:dd:ee:ff
14.6.3 Problemas de correspondência de classe e subclasse #
Os clientes PXE podem receber endereços IP, mas não obtêm os arquivos de inicialização corretos devido a problemas de configuração de correspondência de classe.
Verifique as definições de classe:
>grep -A 3 "class.*clients" /etc/dhcpd.confVerifique as entradas de subclasse:
>grep -A 5 "subclass" /etc/dhcpd.confMonitore a identificação de classe de fornecedor:
>tail -f /var/log/messages | grep -E "PXEClient|HTTPClient"Teste a acessibilidade do arquivo de inicialização:
>tftp 192.168.1.200 -c get /boot/grub2/x86_64-efi/bootx64.efiHabilite o registro detalhado:
>sudosed -i '1i\log-facility local7;' /etc/dhcpd.conf>sudosystemctl restart dhcpd
14.6.4 Problemas de opção de classe de fornecedor DHCPv6 #
Os clientes DHCP IPv6 têm um gerenciamento de opções de classe de fornecedor complexo que pode exigir uma configuração específica para oferecer o suporte adequado à inicialização PXE.
Verifique as definições de opção do DHCPv6:
>grep -A 3 "option dhcp6" /etc/dhcpd6.confVerifique a análise de string de classe de fornecedor:
>grep "substring.*6.*20\|21" /etc/dhcpd6.confMonitore a correspondência de classe de fornecedor do DHCPv6:
>journalctl -u dhcpd6 | grep -i vendorVerifique o formato do bootfile-url IPv6:
>grep "bootfile-url" /etc/dhcpd6.confVerifique a dependência de anúncio do roteador:
>systemctl status radvdTeste a conectividade do IPv6:
>ping6 2001:db8:0:1::200
14.7 Próximas etapas #
Com os serviços ISC DHCP configurados, os clientes PXE podem receber informações de configuração de rede e arquivo de inicialização usando o sistema de classe e subclasse tradicional. O ISC DHCP chegou ao fim do serviço, mas esta configuração fornece compatibilidade com as implantações existentes que exigem a funcionalidade de inicialização PXE e HTTP em várias arquiteturas de cliente.
15 Validando a configuração do servidor PXE #
Esta seção descreve como validar e testar a configuração completa do servidor PXE para garantir que todos os componentes estejam funcionando corretamente para as instalações de rede do SUSE Linux Enterprise Server for SAP Applications 16.0. Ela aborda a verificação de serviço, o teste de conectividade de rede e a validação completa da inicialização PXE.
15.1 Introdução #
Depois de configurar todos os componentes do servidor PXE, incluindo os serviços de carregador de boot TFTP, HTTP, DNS, DHCP e GRUB 2, é essencial validar o devido funcionamento de todo o sistema. Essa validação garante que os clientes PXE possam ser inicializados com êxito no instalador Agama e executar instalações baseadas em rede do SUSE Linux Enterprise Server for SAP Applications 16.0.
15.2 Requisitos #
Todos os componentes do servidor PXE configurados e em execução
Sistemas de cliente de teste com capacidade para inicialização PXE
Conectividade de rede entre o servidor PXE e os clientes
Acesso administrativo para monitorar os serviços do servidor
15.3 Validando os serviços do servidor PXE #
Verifique se todos os serviços essenciais do servidor PXE estão em execução e devidamente configurados antes de fazer o teste com os clientes PXE.
Verifique o status do serviço TFTP:
>systemctl status tftp.socketResultado esperado: O serviço deve estar ativo e escutar na porta 69.
Verifique o serviço HTTP nginx:
>systemctl status nginxResultado esperado: O serviço deve estar ativo e escutar na porta 80.
Verifique o serviço DNS (se usar o dnsmasq):
>systemctl status dnsmasqResultado esperado: O serviço deve estar ativo e escutar na porta 53.
Verifique o status do serviço DHCP (escolha o serviço apropriado):
>systemctl status dhcpdPara DHCP dnsmasq:
>systemctl status dnsmasqPara DHCP Kea:
>systemctl status kea-dhcp4 kea-dhcp6Resultado esperado: O serviço DHCP deve estar ativo e escutar nas portas apropriadas.
Verifique o anúncio do roteador IPv6 (se configurado):
>systemctl status radvdResultado esperado: O serviço deve estar ativo para os ambientes IPv6.
Verifique o serviço NTP:
>systemctl status chronydResultado esperado: O serviço deve estar ativo e sincronizado.
15.4 Testando a conectividade de rede e o acesso a arquivos #
Valide que os clientes PXE podem acessar os arquivos de inicialização e o conteúdo da instalação pela rede usando ambos os protocolos TFTP e HTTP.
Teste o acesso por TFTP aos arquivos do carregador de boot:
>tftp localhost -c get /boot/grub2/x86_64-efi/bootx64.efi /tmp/test-bootx64.efiVerifique se o arquivo foi recuperado:
>file /tmp/test-bootx64.efiLimpe o arquivo de teste:
>rm /tmp/test-bootx64.efiTeste o acesso HTTP à configuração do GRUB 2:
>curl -I http://localhost/boot/grub2/grub.cfgResultado esperado: Resposta HTTP 200 OK.
Verifique o acesso por HTTP aos arquivos do instalador:
>curl -I http://localhost/boot/images/SLES-16.0/x86_64/liveiso/LiveOS/squashfs.imgResultado esperado: Resposta HTTP 200 OK com tamanho do conteúdo apropriado.
Teste a resolução de DNS (se o DNS local estiver configurado):
>nslookup pxe.example.net localhostResultado esperado: Resolução de registro adequada A e AAAA.
Verifique a navegação de diretórios para os locais de autoindex:
>curl http://localhost/boot/Resultado esperado: Listagem de diretórios mostrando os arquivos de inicialização.
15.5 Validando a funcionalidade do DHCP #
Teste as respostas do servidor DHCP e verifique se as informações de inicialização adequadas são fornecidas a diferentes tipos de cliente.
Verifique a vinculação da porta DHCP:
>ss -ulnp | grep -E ":67|:547"Resultado esperado: Serviços DHCP que escutam nas portas 67 (IPv4) e 547 (IPv6).
Monitore as solicitações DHCP em tempo real:
>journalctl -u dhcpd -fOu para dnsmasq:
>journalctl -u dnsmasq -fDeixe-o em execução para observar a atividade do DHCP durante o teste.
Teste a resposta do DHCP usando dhcping (se disponível):
>dhcping -s 192.168.1.200Resultado esperado: Resposta do DHCP bem-sucedida do servidor.
Verifique as concessões DHCP ativas:
>cat /var/lib/dhcp/dhcpd.leasesOu para Kea:
>cat /var/lib/kea/dhcp4.leasesResultado esperado: Entradas de concessão para clientes de teste.
15.6 Teste da inicialização PXE completo #
Faça testes completos da inicialização PXE com os sistemas de clientes reais para validar todo o processo de inicialização, do DHCP à inicialização do instalador Agama.
Prepare um sistema de cliente de teste:
Configurar BIOS/UEFI para habilitar inicialização de rede
Definir a inicialização de rede como prioridade de primeira inicialização
Conectar o cliente à mesma rede que o servidor PXE
Monitore os registros do servidor PXE durante a inicialização do cliente:
>journalctl -f | grep -E "dhcp|tftp|nginx"Inicialize o cliente de teste e observe a seguinte sequência:
O cliente deve receber o endereço IP por DHCP
O cliente deve baixar o carregador de boot por TFTP
O menu do GRUB 2 deve aparecer com as opções de instalação
O kernel e o initrd devem ser carregados por HTTP
O instalador Agama deve ser iniciado com êxito
Verifique a detecção de arquitetura de cliente testando diferentes tipos de cliente:
Sistemas BIOS x86_64 antigos (deve obter core.0)
Sistemas UEFI x86_64 (deve obter bootx64.efi)
Sistemas UEFI aarch64 (deve obter boota64.efi)
Teste a inicialização PXE do IPv6 (se o IPv6 estiver configurado):
Habilitar a configuração de rede somente IPv6 no cliente de teste
Verificar a atribuição de endereços DHCPv6
Confirmar a entrega do bootfile-url IPv6
15.7 Validando a funcionalidade do instalador Agama #
Verifique se o instalador Agama é iniciado corretamente e pode acessar as fontes de instalação para realizar as instalações do SUSE Linux Enterprise Server for SAP Applications 16.0.
Verifique a acessibilidade da interface da Web do Agama:
Durante a inicialização do cliente, observe o endereço IP atribuído e o acesso:
http://CLIENT_IP_ADDRESS
Resultado esperado: A interface da Web do Agama deve ser carregada com êxito.
Verifique os registros do instalador Agama no cliente:
Alterne para o console (Alt+F2) e execute:
#journalctl -u agama-web-server -fResultado esperado: Nenhum erro crítico na inicialização do Agama.
Verifique a acessibilidade da fonte de instalação:
Para instalações com ISO completa, verifique o acesso ao repositório:
#curl -I http://192.168.1.200/install/SLES-16.0/x86_64/Resultado esperado: Resposta HTTP 200 OK com a listagem de diretórios.
Teste a capacidade de instalação do pacote:
Na interface do Agama, verifique se:
O sistema pode detectar os discos disponíveis
A configuração da rede está preservada
O repositório de pacotes está acessível
A instalação pode prosseguir até a conclusão
15.8 Solução de problemas de falhas de validação #
Problemas comuns durante a validação do servidor PXE e as respectivas etapas de resolução.
15.8.1 Falhas de atribuição de DHCP #
Os clientes não recebem endereços IP durante a inicialização PXE.
Verifique os conflitos do serviço DHCP:
>ss -ulnp | grep :67Verifique se a interface de rede está em funcionamento:
>ip addr show eno1Verifique a disponibilidade do intervalo DHCP:
>nmap -sn 192.168.1.100-199Monitore possíveis erros nos registros do DHCP:
>journalctl -u dhcpd | tail -50
15.8.2 Falhas na entrega dos arquivos de inicialização #
Os clientes recebem os endereços IP, mas não conseguem baixar os arquivos de inicialização.
Verifique a acessibilidade do serviço TFTP:
>tftp 192.168.1.200 -c get /boot/grub2/x86_64-efi/bootx64.efiVerifique as permissões de arquivo:
>ls -la /srv/tftpboot/boot/grub2/x86_64-efi/Monitore os registros de acesso por TFTP:
>journalctl -u tftp.socket -fVerifique a detecção de arquitetura de cliente:
>grep -E "PXEClient|HTTPClient" /var/log/messages
15.8.3 Falhas na inicialização do instalador Agama #
Os arquivos de inicialização são carregados com êxito, mas o instalador Agama não é iniciado.
Verifique o acesso por HTTP aos arquivos do instalador:
>curl -I http://192.168.1.200/boot/images/SLES-16.0/x86_64/liveiso/LiveOS/squashfs.imgVerifique a sintaxe do parâmetro do kernel na configuração do GRUB 2:
>grep "root=live:" /srv/tftpboot/boot/grub2/menu.cfgMonitore o processo de inicialização do cliente:
>journalctl -f | grep -E "kernel|initrd|agama"Verifique a persistência da configuração de rede:
#ip addr show
15.9 Lista de verificação de validação do servidor PXE #
Use essa lista de verificação para conferir sistematicamente todos os aspectos da configuração do servidor PXE.
| Componente | Etapa de validação | Status |
|---|---|---|
| Serviço TFTP | Serviço ativo, porta de escuta 69, arquivos acessíveis | ☐ |
| Serviço HTTP | nginx ativo, porta de escuta 80, arquivos do instalador acessíveis | ☐ |
| Serviço DNS | Resolução de nomes de host funcionando, porta de escuta 53 | ☐ |
| Serviço DHCP | Atribuição de IP funcionando, opções de inicialização entregues | ☐ |
| Configuração do GRUB 2 | Menu carregado, detecção de arquitetura funcionando | ☐ |
| Suporte ao IPv6 | Anúncio do roteador ativo, DHCPv6 funcionando | ☐ |
| Inicialização PXE | Cliente inicializado com êxito, recebe o carregador de boot correto | ☐ |
| Instalador Agama | Instalador iniciado, interface da Web acessível | ☐ |
| Fonte de instalação | Repositório acessível, pacotes instaláveis | ☐ |
| Persistência da rede | Configuração de rede mantida durante a instalação | ☐ |
15.10 Conclusão da validação #
Um servidor PXE devidamente validado deve demonstrar a funcionalidade completa e bem-sucedida da inicialização de rede do cliente por meio da inicialização do instalador Agama. Todos os serviços devem funcionar sem erros, e os clientes podem concluir as instalações do SUSE Linux Enterprise Server for SAP Applications 16.0 pela rede. Os testes de validação regulares garantem a confiabilidade contínua da infraestrutura do PXE para implantações automatizadas.
16 Informações legais #
Copyright© 2006 – 2025 SUSE LLC e colaboradores. Todos os direitos reservados.
Permissão concedida para copiar, distribuir e/ou modificar este documento sob os termos da Licença GNU de Documentação Livre, Versão 1.2 ou (por sua opção) versão 1.3; com a Seção Invariante sendo estas informações de copyright e a licença. Uma cópia da versão 1.2 da licença está incluída na seção intitulada “GNU Free Documentation License” (Licença GNU de Documentação Livre).
Para saber as marcas registradas da SUSE, visite https://www.suse.com/company/legal/. Todas as marcas comerciais de terceiros pertencem a seus respectivos proprietários. Os símbolos de marca registrada (®, ™ etc.) indicam marcas registradas da SUSE e de suas afiliadas. Os asteriscos (*) indicam marcas registradas de terceiros.
Todas as informações deste manual foram compiladas com a maior atenção possível aos detalhes. Entretanto, isso não garante uma precisão absoluta. A SUSE LLC, suas afiliadas, os autores ou tradutores não serão responsáveis por possíveis erros nem pelas consequências resultantes de tais erros.