Booten vanaf een netwerk – PXE Boot

menu download icon

Wat is PXE?

Het Preboot Execution Environment (PXE, ook Pre-Execution Environment) is een manier om een computer te laten zelfstarten via het netwerk, onafhankelijk van eventuele programma’s op opslaggeheugens (harde schijf, cd/dvd, diskette, USB-geheugen). De computer haalt de software van een andere daarvoor geconfigureerde computer.

PXE maakt gebruikt van verschillende netwerkprotocollen zoals IP, UDP, DHCP en TFTP en van concepten als GUID/UUID en Universal Network Device Interface. De firmware van de PXE-client (de computer die zelfstart via PXE) wordt uitgebreid met een aantal voorgedefinieerde API’s.

Bron: Wiki

Meer info (ENG):
PXE started in the early 1990s as an improvement to a series of protocols used to bootstrap diskless clients. The idea was to provide a complete boot configuration over the network, so a diskless client, or a computer with no operating system installed, could download a complete configuration at boot time

Previous protocols, such as BOOTP, had similar goals; however, these tools were very error prone and brittle. The old tools also needed lots of customization, and different clients required different configurations. Intel addressed these issues in the late 1990s with its “Wired for Management” standard. Part of Intel’s system was PXE. Other manufacturers later followed suit and adopted the PXE design.

Understanding PXE
Like its predecessors, the PXE protocol uses the Trivial File Transfer Protocol (TFTP) to transfer files and DHCP for delivering network configuration data, such as an IP address. PXE also mixes in additional components to create an easy-to-use infrastructure suitable for installing servers, as well as booting diskless clients.

When PXE initiates at boot time, it sends out a request for a DHCP server. The server then replies with a special option that points the machine to look at the TFTP server. The boot file is then pulled down via TFTP, and the system boots. Once the initial boot occurs, the server kickstarts an install using the configuration file built using the Kickstart Configurator

PXE via het netwerk

Om PXE te gebruiken moet je een DHCP server hebben en een PXE/TFTP server, bijvoorbeeld een Router of Synology NAS die op het (huis)netwerk aangesloten is.

LET OP: Modems en/of routers van kabel/glasvezel aanbieders hebben geen of slechte PXE/TFTP functionaliteit i.c.m. met DHCP.

Client instellen

Stel een client computer zo in dat hij start vanaf het netwerk, door de optie LAN aan de zetten als BOOT Device:

PXE Boot in BIOS optie LAN

Veelal is tijdens de boot ook nog de PXE confguratie aan te passen (in mijn geval met SHIFT+F10 tijdens het opstarten), voorbeeld:

BIOS PXE Boot

Boot bestanden

Het voorbeeld wat ik hier maak is voor een Synology NAS met PXE actief, maar er is ook PXE/TFTP software voor elke PC te krijgen, zodat het niet perse via een NAS hoeft te gaan.

1) Maak een folder aan genaamd PXE.
2) Plaats in die folder de PXE boot bestanden (zie download onder aan deze pagina)
3) In de software, selecteer het bestand “pxelinux.0” uit die folder.

Menu bestanden – menu opties

1) in de PXE folder maak een subfolder aan genaamd “pxelinux.cfg“.
2) in de maak een nieuw bestand aan in deze folder genaamd “default” (zonder extensie), met de volgende inhoud:

Hier staan een aantal opties welke je kan configureren:

MENU TITLE ,hierachter kun je de label van het hoofdmenu opgeven.
MENU INCLUDE ,hierachter kun je opgeven welke bestanden er (meer) geladen moeten worden, je hebt zowieso het bestand met de menuconfiguratie nodig “pxelinux.cfg/graphics.conf“.
MENU AUTOBOOT ,hierachter kan je opgeven welke zin onderaan het menu weergegeven moet worden het # (hekje) is het aantal seconden dat aftelt in seconden welke je hebt opgegeven als TIMEOUT. (600 = 60 seconden)
LABEL  ,begin van een menu item.
MENU LABEL ,hierachter kan je de menu titel instellen.

Een handleiding is hier te vinden op syslinux.org.

Het menu ziet er dan al zo uit:

PXE Boot menu leeg

Ps. Als je een configuratie bestand vergeet of het kan niet gevonden worden, dan zie je dat bij het opstarten van de PXE boot:

PXE Boot geen configuratie gevonden

De structuur ziet er dan zo uit:

Bootable images toevoegen aan het menu

Laten we een ISO image gaan toevoegen aan het menu om te booten, we nemen bijvoorbeeld Hiren’s BootCD, op het moment van schrijven versie 15.2.

1) Maak een folder aan in de PXE folder genaamd “images“.
2) Plaats de ISO “Hiren’s.BootCD.15.2.iso” in deze map.
3) open het menu “pxelinux.cfg\default” en voeg deze regels daar aan toe

TER INFO
– Je ziet dat je een stuk “hulp” tekst kan toevoegen tussen de TEXT HELP en ENDTEXT parameters.
– Het dakje ^ maakt een sneltoets aan voor het karakter waar je hem voor hebt geplaatst.

De structuur ziet er dan zo uit:

Het menu ziet er dan zo uit, en zodra je de Hirens Boot CD optie kiest wordt de ISO geladen:

PXE Boot LAN Hirens ISO laden

Je kan bijvoorbeeld nog een DOS of Windows bootdisk toevoegen.

1) Plaats de IMG bestanden in de map “images”.
3) open het menu “pxelinux.cfg\default” en voeg deze regels daar aan toe

Voorbeeldmenu

Dit is een PXE menu voorbeeld:

Resultaat:

PXE Boot menu voorbeeld

Zelf boot bestanden bij elkaar zetten

Zelf boot bestanden bij elkaar zetten als er een nieuwe release van syslinux uit is gekomen, je kan ze hier vinden:

v4.02
chain.c32 > bios\com32\chain\chain.c32
mboot.c32 > bios\com32\mboot\mboot.c32
menu.c32 > bios\com32\menu\menu.c32
vesamenu.c32
> bios\com32\menu\vesamenu.c32
libcom.c32 > bios\com32\lib\libcom.c32
lpxelinux.0
> bios\core\lpxelinux.0
memdisk > bios\memdisk\memdisk

v6.02 schijnt ook andere bestanden nodig te hebben:
ldlinux.c32 > bios\com32\elflink\ldlinux\ldlinux.c32
libutil.c32 > bios\com32\libutil\libutil.c32

Meer menu’s toevoegen

Je kan eenvoudig meer menu’s toevoegen, begin met een nieuw menu bestand, bijvoorbeeld “pxelinux.cfg\menu2“, zet daar in:

Vanuit het “hoofdmenu” (default) maak je dan de koppeling:

Menu bestanden – grafische instellingen voor het simpele menu (optioneel)

Het menu is op veel manieren in te stellen, zoals met het laden van een extra bestand.
1) maak in de folder “pxelinux.cfg” een nieuw bestand aan genaamd “graphics.conf“, met de volgende inhoud:

2) Sla het bestand op.
3) Laad de instellingen in het menu door middel van het laden van dit configuratiebestand met:

MENU INCLUDE pxelinux.cfg/graphics.conf

Grafische menu’s gebruiken

Je kan eenvoudig een grafisch menu gebruiken door

default menu.c32

te vervangen naar:

default vesamenu.c32

(doe dit ook in de submenu’s en links)

Je kan zelfs een achtergrond kiezen PNG of JPG met de volgende specificaties: 640×480 pixels 16bpp, inladen kan met:

MENU BACKGROUND achtergrond.png

Voorbeeld:

PXE boot vesamenu voorbeeld

Voor het bovenste menu heb je ook een configuratie nodig, om het allemaal overzichterlijk te houden, kun je een PNG en CFG bestand aanmaken in een folder en die eenmalig aanroepen, voorbeeld:

1) Maak een folder aan genaamd “vesamenu“.
2) Plaats daarin het PNG of JPG bestand genaamd “vesamenu01.png“.
3) Maak een CFG bestand aan genaamd “vesamenu01.cfg” met de volgende inhoud:

Je kan het CFG bestand aanroepen in het hoofmenu (default) met:

MENU INCLUDE vesamenu/vesamenu01.cfg

Het default menu ziet er dan bijvoorbeeld zo uit:

 

Informatie:
admin-magazine.com
howtogeek.com
defcon.no