PXE Server met CentOS

http://www2.l4l.be/node/20

In dit document gaan we een PXE server opzetten. Op Wikipedia vind je een mooie definitie van dit protocol, maar het komt er in het kort op neer dat het een verzameling is van protocollen die er voor zorgen dat je iets van het netwerk kan starten. Dit kan een complete omgeving zijn maar een PXE server kan ook dienst doen als installatie-medium.

We gaan CentOS gebruiken als basis, en gaan vervolgens de CentOS installatie-dvd aanbieden als installatie-medium.

DHCP server

Je hebt in ieder geval in je netwerk een dhcp server nodig, die zoals altijd de ip adressen moet uitdelen, maar ook moet gaan vertellen wat de PXE server is en welk bestand geladen moet worden.

Hiervoor kan een bestaande dhcp server gebruikt worden, of je kunt deze PXE server ook meteen inrichten als dhcp server.

Het gaat om de volgende scope options:

  • 66: Boot Server Hostname: servernaam
  • 67: Bootfile Name: linux-install/pxelinux.0

In dit document behandelen we verder niet de configuratie van een dhcp server onder Linux, dit zal elders op de site gebeuren, maar deze twee regels moeten worden toegevoegd aan het /etc/dhcpd.conf:

next-server pxe-server-ip-adres;
filename "linux-install/pxelinux.0";

Installatie & Configuratie

De installatie gaat behoorlijk eenvoudig, door als root in een terminal het volgende commando uit te voeren:

sudo yum install xinetd tftp-server syslinux system-config-netboot httpd

We gaan er voor zorgen dat de benodigde services gestart worden tijdens het boot-proces:

/sbin/chkconfig --level 345 httpd on
/sbin/chkconfig --level 345 xinetd on
/sbin/chkconfig --level 345 tftp on

En de services nu starten:

/sbin/service xinetd start
/sbin/service httpd start

We controleren ook even of de tftp service wel degelijk gestart is:

netstat -l | grep tftp

Zou moeten geven:

udp        0      0 *:tftp                      *:*                             

CentOS draait standaard een firewall die alle inkomende verkeer tegenhoud, dus zullen we wat poorten moeten openen. Dit doen we met behulp van het commando: system-config-securitylevel

-> rode button Customize
-> Allow incoming: SSH
WWW (HTTP)
Other ports: tftp:udp tftp:tcp

Vervolgens nog even controleren of het gelukt is:

iptables --list | grep -e ssh -e http -e tftp

Zou als output moeten geven:

ACCEPT  udp  --  anywhere   anywhere     state NEW udp dpt:tftp
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:tftp
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http

Ik kies er overigens voor om de iso’s die ik wil aanbieden te plaatsen in /tftboot/iso, maar waar de iso’s zich bevinden maakt in principe niet uit.

PXE kan niet de lokale disk gebruiken om vanaf daar de installatie-bestanden aan te bieden, je kunt hiervoor gebruik maken van ftp, nfs of http. Ik gebruik http, dus zullen we ook de webserver moeten configureren.

Als eerste stap maken we een directory aan waar de bestanden in aangeboden moeten worden:

mkdir /var/www/linux-install-media/centos52 -p

En we mounten de iso aan deze directory:

mount -o loop /tftpboot/iso/CentOS-5.5-i386-bin-DVD.iso /var/www/linux-install-media/centos55

Nu de configuratie: in de directory: /etc/httpd/conf.d/ maken we een bestand aan met bijvoorbeeld de naam linux-install-media.conf. In dit bestand komt het volgende te staan:

<Directory /var/www/linux-install-media/>
Options Indexes
AllowOverride None
</Directory>

Alias /pxe-linux /var/www/linux-install-media/

Herstart nu de webserver:

/sbin/service httpd restart

We zijn er bijna, de enige stap die nu nog moet gebeuren is aanmaken van de benodige bestanden en een entry in het “boot&”-menu. Hiervoor levert CentOS een utility mee: pxeos.

pxeos -a -i "CentOS 5.5 Install" -p HTTP -sip-adres -L /pxe-linux/centos55 -k vmlinuz CentOS

Boot nu een client van het netwerk, en als alles gelukt is krijg je nu een menu te zien waarmee je de CentOS installatie kunt starten.

Geplaatst in CentOS, Linux, Netwerk tools
%d bloggers op de volgende wijze: