This website is not maintained anymore. If you want to keep track of me or my projects (or hire me) check www.conveniencefactory.com or follow me @conveniencedev

Ruwebit
HARDWARE REVIEWS, DIY PROJECTS, IN-DEPTH ARTICLES
Start DIY projectsReviewsHow-to'sNewsAutomotiveAbout the websiteArchive | Most popularLast updatedTags Sitemap
how-to'slinux
Netwerk boot voor de gewone mens
Download article as PDF
By Maurice on June 17, 2009 popularity:
Booten via het netwerk kan natuurlijk al langer, maar waarom zou je het niet toepassen in je thuisnetwerk? Met een keuze uit verschillende images: automatische windows installatie via WindowsPE, een rescue CD image of een live Linux image... De mogelijkheden zijn eindeloos, je hebt eigenlijk geen DVDROM-speler meer nodig. In dit artikel geen stap voor stap how-to maar een aanzet om je op weg te helpen.
Heel veel netwerkkaarten en vooral moederborden ondersteunen booten via het netwerk met behulp van het BOOTP protocol en de Preboot eXecuting Environment (PXE).

PXE (wat in de firmware van je netwerkkaart of moederbord zit) zorgt er voor dat je een image via TFTP (een uitgekleed FTP protocol) kunt downloaden en daarmee kunt booten.

Wat heb je nodig

Naast een PC of laptop die BOOTP en PXE ondersteunt...
Een DHCP server in je netwerk die BOOTP ondersteunt (aanrader: dnsmasq)
Een TFTP server (ehm dnsmasq ondersteunt dit standaard)

Overigens, wanneer je PC of laptop geen netwerk boot ondersteunt, is het ook mogelijk om gPXE (zie verderop in het artikel) te booten vanaf CDROM.

Dnsmasq

Dnsmasq is een DNS en DHCP-server in een. Het ondersteunt booten via het netwerk en heeft een ingebouwde TFTP server.

Wanneer je Dnsmasq gaat gebruiken moet je de DHCP optie van je router uitzetten. Anders krijg je onverwacht gedrag.

Ik raad aan om een recente versie te gebruiken (2.48 of nieuwer), die heeft namelijk de mogelijkheid om boot menu's op te zetten (pxe-service keyword in dnsmasq.conf). Heeft je Linux distributie niet een recente dnsmasq in zijn repositories? Download dan de source hier en bouw het zelf even:

wget http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.49.tar.gz
tar -zxvf dnsmasq-2.49.tar.gz
cd dnsmasq-2.49
make
cp src/dnsmasq /usr/sbin


Hier staat een handig voorbeeld van hoe je /etc/dnsmasq.conf file er uit kan zien. Hier is de mijne (mijn router is 10.0.0.254, mijn DHCP server is 10.0.0.104):

# domain-needed This tells dnsmasq to never pass short names to the upstream
# DNS servers. If the name is not in the local /etc/hosts file then "not
# found" will be returned.
domain-needed

# bogus-priv All reverse IP (10.0.0.x) lookups that are not found
# in /etc/hosts will be returned as "no such domain" and not forwarded to
# the upstream servers.
bogus-priv

# expand_hosts So we can see our local hosts via our home domain without
# having to repeatedly specify the domain in our /etc/hosts file.
expand-hosts

# respect my authority
dhcp-authoritative

# ons domein
domain=mijnnetwerk.nl

# dynamische adressen
dhcp-range=10.0.0.1,10.0.0.50,12h

# statische toekenning aan hand van mac address
# clients in sync houden met /etc/hosts
#
dhcp-host=00:12:34:56:78:90,mijnhost,10.0.0.100,24h

# Gateway
# Override the default route supplied by dnsmasq, which assumes the
# router is the same machine as the one running dnsmasq.
dhcp-option=3,10.0.0.254

# Enable dnsmasq's built-in TFTP server
enable-tftp
tftp-root=/usr/share/tftpboot

# Boot image
dhcp-boot=pxelinux.0


Nu wordt verwacht dat in de directory /usr/share/tftpboot een image genaamd 'pxelinux.0' staat. Dit is een bootloader zoals syslinux maar dan eentje die via het netwerk boot. Echter, het is nogal omslachtig om aan de gang te krijgen, zie: http://syslinux.zytor.com/wiki/index.php/PXELINUX. Daarom gebruik is gPXE (zie verderop).

Eerst moet je voor een goedwerkende DNS functionaliteit van dnsmasq nog je /etc/hosts file updaten met je hosts, bijvoorbeeld:

127.0.0.1 localhost dhcpserver dhcpserver.mijnnetwerk.nl
10.0.0.100 mijnhost mijnhost.mijnnetwerk.nl

gPXE

De opensource variant van PXE is gPXE genaamd (voorheend Etherboot), die veel meer mogelijkheden biedt waaronder van een image booten via HTTP en scripting en uitgebreide boot-menu's ondersteunt. Je kunt de firmware van je netwerkkaart/bios van je moederbord flashen met gPXE, maar makkelijker is om een gPXE image te booten vanuit PXE.

Verwijder de regel met dhcp-boot uit je /etc/dnsmasq.conf en voeg dit toe:

# Boot for Etherboot gPXE. The idea is to send two different
# filenames, the first loads gPXE, and the second tells gPXE what to
# load. The dhcp-match sets the gpxe tag for requests from gPXE.
# (the # means a 'not')
# Dit heet pxe chaining:
# 1) De standaard pxe download gpxe
# 2) Die doet een nieuwe dhcp request
# 3) En laadt het volgende pxe image
dhcp-match=gpxe,175
dhcp-boot=net:#gpxe,gpxe-git-gpxe.pxe
dhcp-boot=bootlinux.pxe


Het werkt als volgt: de eerste keer dat er geboot wordt, wordt het 'gpxe-git-gpxe.pxe' dat gPXE bevat geladen. Daarna wordt door gPXE een nieuwe DHCP-request gedaan en weet dnsmasq dat het bootlinux.pxe image verwacht word.

Het gPXE image kun je als volgt genereren op http://rom-o-matic.net/:

Ga naar http://rom-o-matic.net/gpxe/gpxe-git/gpxe.git/contrib/rom-o-matic/
Kies NIC/ROM type: gpxe:all-drivers
Kies Choose ROM output format: PXE boostrap bladibla
Klik op Get rom

Kopieer de file naar /usr/share/tftpboot
Creeer daarin de file bootlinux.pxe:

#!gpxe
kernel vmlinuz vga=788
initrd initrd
boot


Even een snelle test: download hier vmlinuz en initrd.gz en kopieer deze ook naar /usr/share/tftpboot. Unpack initrd.gz met gunzip.

En je bent klaar om te booten. Start je PC op, kies netwerk boot en gPXE verschijnt na een tijdje. Daarna gaat het verder met het booten van het image.

gpxe-1.jpg


Boot menu's

Met pxe-service kun je een boot-menu creeren, bijvoorbeeld:

pxe-service=x86PC, "Boot from local disk", 0
pxe-service=x86PC, "Boot Linux", bootlinux.pxe, 10.0.0.104

Het kan ook op een andere manier (waar ik zelf de voorkeur aan geef), door syslinux te gebruiken, dit hier staat uitvoerig beschreven. Hier en hier nog meer informatie. Je hebt hier de menu.c32 file van syslinux voor nodig.

menu.png


Ik heb zelf een pincode menu gemaakt zo dat niet iedereen bij de potentieel gevaarlijke tools kan komen. Die scripts kun je hier downloaden.

code.png

PXE Knife

PXE Knife is een wat verouderde verzameling van allerlei handige tools, ondergebracht in een syslinux menu. Het is makkelijk zelf aan te passen naar je eigen behoefte en het kan diskimages booten (via memdisk van syslinux) en zelfs gemounte linux iso's via NFS.

pxeknife.png


Als je een Decompression error: output buffer overrun foutmelding krijgt. Dan moet je de igz-file renamen naar gz, unzippen met gunzip, renamen naar .img en het betreffende menu (.conf file) aanpassen.

Dingen waar je rekening mee moet houden

64-bit kernels booten niet op 32-bit machines
Draadloos gaat niet werken. Ik kan me voorstellen dat dit in de toekomst wel ondersteund kan gaan worden in gPXE.
Zorg dat netwerk boot aan staat in de BIOS, soms kan het nodig zijn om het boot-menu in te gaan (meestal F8, F11, of F12).

Nog een laatste tip: netwerk boot menu's testen gaat zoveel makkelijker met VirtualBox. Let wel dat je host interface als netwerk type kiest anders krijg je van de DHCP-server geen IP adres. Hier een voorbeeld van mijn configuratie.

Meer links

Links die ik in de loop der tijd verzamel over booten via het netwerk vind je hier

Copyright © 1999-2010 by Maurice de Bijl. This article was published on 2009-06-17 in how-to's  linux

Was this article useful to you? Please help me by using the toolbar below to tweet the article, give it an eKudo or add it to Hyves, Facebook, Delicous, Digg or another site. Thanks!

Download article as PDF

Comments on this article

There is 1 comment

Obfuscated IP-address: 293048073
Obfuscated E-mail address: fmvleirtmolf
Click for more details  2010-11-06 18:03:11 posted by Kees Epema
Bedankt voor dit goede artikel!
In je artikel lees ik dat je je router -dhcp uit moet zetten.

"...Wanneer je Dnsmasq gaat gebruiken moet je de DHCP optie van je router uitzetten. Anders krijg je onverwacht gedrag..."

Dat klopt denk ik niet, dnsMasq is juist bedoeld om te functioneren in een omgeving waar je je router-dhcp om een of andere reden niet uit kunt schakelen.
dnsmasq cached de dhcp van de router en fungeert daarna als proxy-server voor alle machines, die je van pxe boot deel wil laten uitmaken.
POPULAR TAGS
Show all tags
SEARCH KEYWORD
FOLLOW ME
Twitter