Fullmoon System

PXE Kickstart-configuratie: Rocky Linux 9 UEFI onbeheerde installatie

AI_Manager

Dit artikel behandelt een configuratie waarbij UEFI x86_64-clients ondertekende shim/GRUB-bestanden en de kernel ontvangen via PXE/TFTP, en de Rocky Linux-installatieboom en het Kickstart-bestand inlezen via HTTP. UEFI HTTP Boot en legacy BIOS vereisen andere opstartbestanden en DHCP-vertakkingen, waardoor ze een aparte configuratie vereisen en buiten het bereik van de onderstaande voorbeelden vallen.

Dit artikel gebruikt Rocky Linux 9.8 als voorbeeld, maar de kernel, initrd en pakketboom van het installatiemedium moeten exact overeenkomen met dezelfde release. Omdat DHCP invloed heeft op het gehele netwerk, dient u dit eerst te testen in een geïsoleerd VLAN dat niet overlapt met het bestaande operationele DHCP-netwerk.

Componenten voor PXE Kickstart-configuratie

Component Rol Operationele criteria
DHCP IP-adres en instructies voor opstartbestanden/servers Geen conflict met bestaande DHCP-autoriteit
TFTP/PXE Overdracht van UEFI shim, GRUB, kernel en initrd Levert alleen kleine opstartbestanden
HTTP Installatieboom en ks.cfg Toegangslogs en minimale blootstelling
Kickstart Automatisering van Anaconda-installatieantwoorden Validatie, versiebeheer en scheiding van geheimen

Stap 1: Validatie van de PXE Kickstart-ISO en voorbereiding van de installatieboom

# Download eerst de officiële Rocky 9.8 x86_64 DVD ISO naar de huidige map.
curl --fail --location --remote-name https://download.rockylinux.org/pub/rocky/9.8/isos/x86_64/CHECKSUM
test -f Rocky-9.8-x86_64-dvd.iso
sha256sum --check --ignore-missing CHECKSUM
# Ga alleen verder nadat de OK van de betreffende DVD ISO is bevestigd in de bovenstaande controle.

sudo dnf install -y httpd rsync dnsmasq tcpdump
sudo install -d -m 0755 /mnt/rocky9 /var/www/html/rocky/9.8
sudo mount -o loop,ro Rocky-9.8-x86_64-dvd.iso /mnt/rocky9
# Het onderstaande doel is een nieuw voorbereide toegewezen 9.8-installatieboomstructuur en bestaande bestanden kunnen worden verwijderd met --delete.
sudo rsync -aH --delete /mnt/rocky9/ /var/www/html/rocky/9.8/
sudo restorecon -RFv /var/www/html/rocky

Controleer of het 9.8 DVD ISO-item exact overeenkomt met de CHECKSUM op het officiële HTTPS-adres. Resultaten waarbij alleen andere bestanden als OK worden gemarkeerd, gelden niet als validatie voor deze ISO. Als het supply chain-beleid van uw organisatie ondertekeningsvalidatie vereist, controleer dan ook de door Rocky gedistribueerde handtekeningen en de vertrouwde officiële sleutels. Houd de gemounte ISO op alleen-lezen en behoud de volledige installatieboom.

Stap 2: PXE Kickstart HTTP-serviceconfiguratie

Stel vooraf het serveradres 192.0.2.10/24 in op de speciale test-NIC ens192 en wijs deze verbinding toe aan de internal-zone van firewalld. Pas de gateway, DNS en NIC-naam aan op het daadwerkelijke geïsoleerde VLAN. Controleer of firewall-cmd --get-zone-of-interface=ens192 de internal-zone is voordat u de onderstaande services toestaat. Verplaats de operationele NIC niet naar deze testzone.

sudo dnf install -y httpd
sudo systemctl enable --now httpd
sudo firewall-cmd --permanent --zone=internal --add-service=http
sudo firewall-cmd --reload

curl --fail --head http://192.0.2.10/rocky/9.8/.treeinfo
sudo journalctl -u httpd --since '-10 min' --no-pager

Stap 3: Plaatsing van TFTP-opstartbestanden voor PXE Kickstart

Gebruik de ondertekende UEFI-bestanden van dezelfde gevalideerde DVD ISO. De shim laadt grubx64.efi uit dezelfde map en GRUB gebruikt de kernel en initrd van dezelfde release. Start geen afzonderlijke tftp.socket; dnsmasq in de volgende stap zal UDP 69 afhandelen.

sudo install -d -m 0755 /var/lib/tftpboot/rocky9
sudo install -m 0644 /mnt/rocky9/EFI/BOOT/BOOTX64.EFI /var/lib/tftpboot/shimx64.efi
sudo install -m 0644 /mnt/rocky9/EFI/BOOT/grubx64.efi /var/lib/tftpboot/grubx64.efi
sudo install -m 0644 /mnt/rocky9/images/pxeboot/vmlinuz /var/lib/tftpboot/rocky9/vmlinuz
sudo install -m 0644 /mnt/rocky9/images/pxeboot/initrd.img /var/lib/tftpboot/rocky9/initrd.img
sudo restorecon -RFv /var/lib/tftpboot
ls -l /var/lib/tftpboot/{shimx64.efi,grubx64.efi,rocky9/vmlinuz,rocky9/initrd.img}

Als dit pad niet bestaat op de media of als de bestandsnamen afwijken, stop dan met kopiëren en controleer de ISO-architectuur en de inhoud. Bij gebruik van Secure Boot moeten de shim, GRUB, de kernel-ondertekeningsketen en de firmware-vertrouwensopslag op elkaar zijn afgestemd.

Stap 4: PXE Kickstart-configuratie DHCP en TFTP voorbeeld

Sla de volgende inhoud op in /etc/dnsmasq.d/pxe.conf en controleer of er geen overlap is met bestaande dnsmasq-instellingen. DHCP-architectuur 7 en 9 worden behandeld als UEFI x86_64. Voor andere architecturen worden geen opstartbestanden geadverteerd.

sudoedit /etc/dnsmasq.d/pxe.conf

De volgende dnsmasq-configuratie is een voorbeeld voor een toegewezen test-VLAN. Als er al DHCP in het productienetwerk aanwezig is, pas dit dan niet toe; de bestaande DHCP-beheerder moet de bootfile- en next-server-opties per architectuur configureren.

port=0
interface=ens192
bind-interfaces
dhcp-range=192.0.2.100,192.0.2.180,255.255.255.0,12h
dhcp-option=3,192.0.2.1
dhcp-option=6,192.0.2.53

enable-tftp
tftp-root=/var/lib/tftpboot
dhcp-match=set:efi64,option:client-arch,7
dhcp-match=set:efi64,option:client-arch,9
dhcp-boot=tag:efi64,shimx64.efi
log-dhcp
sudo dnsmasq --test
sudo systemctl enable --now dnsmasq
sudo firewall-cmd --permanent --zone=internal --add-service=dhcp
sudo firewall-cmd --permanent --zone=internal --add-service=tftp
sudo firewall-cmd --reload
sudo journalctl -u dnsmasq -f

Stap 5: PXE Kickstart-configuratie opstartmenu

UEFI GRUB-menu

Sla het volgende menu op in /var/lib/tftpboot/grub.cfg in de TFTP-root. Controleer tijdens het testen met dnsmasq-logs of pakketcaptures welk pad GRUB daadwerkelijk heeft opgevraagd.

sudoedit /var/lib/tftpboot/grub.cfg
sudo restorecon -RFv /var/lib/tftpboot
set timeout=5

menuentry 'Install Rocky Linux 9.8 with Kickstart' {
    linuxefi /rocky9/vmlinuz ip=dhcp       inst.repo=http://192.0.2.10/rocky/9.8/       inst.ks=http://192.0.2.10/ks/rocky9.cfg
    initrdefi /rocky9/initrd.img
}

Controleer de GRUB-commando’s op basis van de werkelijke opstartconfiguratie van de installatiemedia. Afhankelijk van de firmware- en GRUB-combinatie kunnen de linux- en initrd-commando’s variëren, dus voer eerst een opstarttest uit op een VM van hetzelfde type.

Stap 6: Kickstart met minimale rechten schrijven

Sla het volgende voorbeeld op in /var/www/html/ks/rocky9.cfg. Vervang de wachtwoord-hash van opsadmin door een echte hash en beperk de HTTP-toegang tot het installatie-VLAN. Als de originele placeholders worden gebruikt, zal de beheerder niet kunnen inloggen.

sudo install -d -m 0755 /var/www/html/ks
sudoedit /var/www/html/ks/rocky9.cfg
text
url --url=http://192.0.2.10/rocky/9.8/
lang ko_KR.UTF-8
keyboard kr
timezone Asia/Seoul --utc
network --bootproto=dhcp --device=link --activate

rootpw --lock
user --name=opsadmin --groups=wheel --iscrypted   --password='$6$REPLACE_WITH_A_REAL_HASH'

ignoredisk --only-use=sda
zerombr
clearpart --all --initlabel --drives=sda
autopart --type=lvm
selinux --enforcing
firewall --enabled --service=ssh
reboot

%packages
@^minimal-environment
chrony
%end

%post --log=/root/ks-post.log
systemctl enable chronyd
%end

clearpart --all wist de gegevens op de opgegeven schijf. Controleer de schijfnamen en WWN’s per servermodel en valideer dit eerst op een lege test-VM. Vervang de wachtwoord-hash in het voorbeeld door een sterke, echte hash en bewaar geheimen nooit op openbare webservers of in Git-repositories.

Stap 7: Kickstart-syntaxis valideren

sudo dnf install -y pykickstart
ksvalidator -v RHEL9 /var/www/html/ks/rocky9.cfg

curl --fail http://192.0.2.10/ks/rocky9.cfg | head
curl --fail http://192.0.2.10/rocky/9.8/.treeinfo | head
sudo restorecon -RFv /var/www/html/ks

Stap 8: Installatietest op UEFI VM

  1. Maak een UEFI VM met een lege schijf aan in het toegewezen VLAN.
  2. Controleer het adres, de next-server en de bootfile van het DHCP-aanbod via pakketcaptures.
  3. Controleer de inst.repo- en inst.ks-antwoorden in de kernel-argumenten.
  4. Bekijk tijdens de installatie zowel de Anaconda-logs als de HTTP-toegangslogs.
  5. Controleer na het opnieuw opstarten SELinux, de firewall, de tijdsynchronisatie en het beheerdersaccount.
sudo tcpdump -ni ens192 -vvv 'port 67 or port 68 or port 69'
sudo tail -f /var/log/httpd/access_log /var/log/httpd/error_log

# Controleren in de shell van het installatiescherm
ip address
cat /proc/cmdline
curl --fail http://192.0.2.10/ks/rocky9.cfg
journalctl -b --no-pager | tail -200

Stap 9: Validatie na installatie

cat /etc/rocky-release
uname -r
sudo dnf upgrade --refresh -y
sudo systemctl --failed --no-pager
getenforce
sudo firewall-cmd --list-all
chronyc tracking
sudo journalctl -p err -b --no-pager

Beheer na het voltooien van de PXE Kickstart-configuratie de installatieresultaten als reproduceerbare build-artefacten. Bewaar de ISO-checksum, de Kickstart-versie, de hash van het opstartbestand, het geteste firmwaretype en het verslag van de geslaagde installatie.

Beveiliging en operationele aandachtspunten

  • Beperk de toegang tot de Kickstart-URL tot alleen het vereiste installatie-VLAN.
  • Plaats registratietokens en SSH-privésleutels niet direct in bestanden.
  • Monitor de HTTP-toegangslogs op abnormale, grootschalige verzoeken.
  • Gebruik TFTP alleen voor het aanbieden van opstartbestanden en lever installatiepakketten via HTTP.
  • Wijzigingen in de productie-DHCP moeten altijd een beoordelings- en rollback-plan doorlopen.
  • Blokkeer PXE-paden voor installatievensters die niet in gebruik zijn.

Officiële bronnen en gerelateerde artikelen

Samenvatting van PXE Kickstart-configuratie

Het opzetten van PXE Kickstart is een proces waarbij DHCP, opstartoverdracht, HTTP-installatiebomen en een gevalideerde Kickstart als één geheel worden ontworpen. In dit UEFI x86_64-voorbeeld verifiëren we de verbinding tussen PXE/TFTP en de HTTP-installatieboom; pas als de ISO-checksum, syntaxiscontrole, installatie op een lege VM en de beveiligingsstatus na installatie zijn geslaagd, kan de onbeheerde installatie in productie worden genomen.