OpenSUSE installeren met PXE boot
Inhoud
Inleiding
SUSE Linux is een distributie die vrij regelmatig met nieuwe versies komt. Daarom zou het ideaal zijn om systemen te kunnen installeren zonder telkens nieuwe CD's of DVD's te moeten branden. In dit artikel bespreken we de beste manier om SUSE volledig over het netwerk te installeren.
PXE is een manier om computers op te starten zonder diskette, harde schijf of CD-ROM. De BIOS start meteen via het netwerk op met behulp van het PXE-protocol. Om dit mogelijk te maken heeft u een server nodig die geschikt is voor PSE en een client-computer die een code-module heeft die PXE kan draaien voor de opgegeven netwerkinterface. De meeste nieuwere moederborden met een on-board netwerkpoort hebben al deze module als onderdeel van hun BIOS-image. Als u wilt opstarten vanaf een netwerkkaart (ISA/PCI/etc), dan dient u de juiste module op een BootROM (alleen van toepassing als de netwerkkaart een ROM-socket heeft) te zetten of in de BIOS-image (alleen van toepassing als u een geschikt image-programma beschikbaar hebt, zoals van AMIFLASH). Er zijn maar weinig besturingssystemen die PXE-serverconfiguratie ondersteunen - maar Windows 2000 Server en SUSE Linux bieden het.
Voorbereiding
Voor een succesvolle netwerkinstallatie hebt u het volgende nodig:
- een bestaande SUSE Linux (die dhcp en tftp host),
- een internetverbinding (bij voorkeur breedband),
- een computer met ondersteuning voor PXE boot.
DHCP- & TFTP-server instellen
DHCP instellen
PXE is gebaseerd op een BOOTP-server die alle essentiƫle informatie verzendt waarmee het systeem zijn netwerklaag kan starten. Die taak kan worden gedaan met de welbekende DHCPd-server die met SUSE wordt meegeleverd. Hier is een voorbeeld van zo'n configuratie: (standaardconfiguratiebestand is /etc/dhcpd.conf):
host target_host { hardware ethernet xx:xx:xx:yy:yy:yy; fixed-address 192.168.1.10; server-name "192.168.1.1"; next-server 192.168.1.1; filename "/tftpboot/pxelinux.0"; }
Merk op dat we 2 regels voor de PXE-boot hebben toegevoegd. Het is inderdaad noodzakelijk om het IP-adres van de TFTP-bootserver (server-name) en de bestandsnaam dat de PXE-bootstrap (filename) bevat op te geven. U herstart vervolgens de DHCPd-server als volgt:
# rcdhcpd restart
Let op: Afhankelijk van welke TFTP-server u gebruikt en of deze in een chroot-omgeving draait kan het zijn dat "filename" dient te worden opgegeven zonder het bijhorende pad. Bij de standaard TFTP-server van openSUSE en bij een RedHat-server is dat het geval. Op deze servesrs ziet "filename" er als volgt uit:
filename "pxelinux.0";
Met de ISC DHCP-server versie 3 (meegeleverd met openSUSE) is het mogelijk om de DHCP-server zo in te stellen dat die alleen reageert op boot-verzoeken. Op die manier kan deze DHCP-server parallel draaien met een aandere standaard DHCP-server. Dit kan wenselijk zijn in het geval dat de standaard DHCP-server niet kan worden ingesteld om een bootserver- of bootbestandsnaam aan te leveren (bij veel DSL-routers is dat het geval). De PXE-client zal de DHCP-aanbiedingen die geen bootserver- of bootbestandsnaam bevatten negeren.
Hieronder vindt u een compleet configuratiebestand voor dit scenario:
default-lease-time 600; max-lease-time 7200; ddns-update-style none; ddns-updates off; allow booting; option domain-name "my.domain"; option domain-name-servers my.dnsserver; option routers my.router; # definieer regels im DHCP-requests van PXE- en Etherboot-clients te identificeren. class "pxe" { match if substring (option vendor-class-identifier, 0, 9) = "PXEClient"; } class "etherboot" { match if substring (option vendor-class-identifier, 0, 9) = "Etherboot"; } subnet 192.168.1.0 netmask 255.255.255.0 { option broadcast-address 192.168.1.255; pool { default-lease-time 180; # geen lange lease-tijd vereist voor opstarten max-lease-time 360; # opgestart systeem doet eigen dhcp-request server-name "mynbootserver"; next-server mynbootserver.; # in het geval uw lokale DNS alleen # ongekwalificeerde domeinen blijft volgen '.' filename "pxelinux.0"; allow members of "pxe"; allow members of "etherboot"; # allow etherboot, too range 192.168.1.201 192.168.1.211; } }
atftpd instellen
Het is aan te bevelen om het pakket atftp te gebruiken omdat atftp de enige vrije TFTP-server is die RFC volledig ondersteunt. Eenmaal geĆÆnstalleerd dient u te controleren of alles OK is in het bestand /etc/sysconfig/atftp. Hier een voorbeeldconfiguratie:
ATFTPD_OPTIONS="--daemon --user tftp -v" ATFTPD_USE_INETD="no" ATFTPD_DIRECTORY="/srv/tftp"
Merk in dit voorbeeld op dat de hoofdmap voor TFTP is gezet op /srv/tftp. U dient de TFTP-server als volgt de (her)starten:
Opmerking: de standaard TFTP-server die met RedHat Enterprise Linux wordt meegeleverd werkt goed zonder verdere configuratie. Start de service eenvoudigweg met commando:
chkconfig tftp on
tftpd-hpa instellen
tftpd-hpa is de FTFP-server van H. Peter Anvin, beschikbaar in het pakket "tftpd". In de standaardopzet is deze geconfigureerd om op te starten vanuit xinetd en zal de map die in /etc/xinetd.d/tftp is opgegeven worden gebruikt als hoofdmap. Meestal is dat /tftpboot. Opties om als gebruiker zonder privileges uit te voeren kunnen via xinetd worden doorgegeven (oftewel via /etc/xinetd.d/tftp).
PXE-boot opzetten
Alles ophalen
Voordat u de PXE-omgeving opzet dient u het pakket syslinux te installeren. Dit pakket levert een zeer bruikbaar bestand:
/usr/share/syslinux/pxelinux.0
Als u syslinux niet kunt installeren, dan kunt u dit kleine bestand hier downloaden.
PXE-boot opbouwen
U hebt nu in principe alles wat u nodig hebt om uw PXE-bootomgeving op te bouwen. Ga naar de hoofdmap van TFTP (standaard is /srv/ftp) en maak de eerste structuur aan zoals hieronder wordt aangegeven:
# cd /srv/tftp # mkdir tftpboot # cd tftpboot # mkdir pxelinux.cfg
Kopieer het PXE-bootstrap-bestand naar de map tftpboot:
# cp /usr/share/syslinux/pxelinux.0 /srv/tftp/tftpboot
Maak nu het configuratiebestand voor PXE aan. Deze zit niet diep in zijn structuur van het bestand syslinux.cfg.
# vi /srv/tftp/tftpboot/pxelinux.cfg/default
Hier is een voorbeeld van zo'n configuratiebestand, pas deze aan aan uw eigen configuratie.
default linux prompt 1 timeout 30 # Install Linux label linux kernel linux append initrd=initrd splash=silent showopts
Opmerking: Als u een RedHat-gebaseerde server gebruikt, dan heeft uw standaardconfiguratie nog enkele extra opties nodig voor de regel die met "append" begint:
append root=/dev/ram0 load_ramdisk=1 initrd=initrd splash=silent showopts ramdisk_size=4096 init=linuxrc
Dit configuratiebestand refereert naar 2 belangrijke bestanden: linux en initrd. Deze bestanden dienen te worden gedownload vanuit de netwerkinstallatiebron van SUSE (of een mirror daarvan). Merk op dat de bron afhankelijk is van uw hardware (i386 of x86_64).
- dus voor i386:
# cd /srv/tftp/tftpboot # wget http://download.opensuse.org/distribution/SL-OSS-factory/inst-source/boot/i386/loader/initrd # wget http://download.opensuse.org/distribution/SL-OSS-factory/inst-source/boot/i386/loader/linux
- dus vooor x86_64:
# cd /srv/tftp/tftpboot # wget http://download.opensuse.org/distribution/SL-OSS-factory/inst-source/boot/x86_64/loader/initrd # wget http://download.opensuse.org/distribution/SL-OSS-factory/inst-source/boot/x86_64/loader/linux
Opmerking: Als u een RedHat-gebaseerde server gebruikt, dan dient uw mappenstructuur voor de TFTP-server er als volgt uit te zien:
/tftpboot /tftpboot/pxelinux.0 /tftpboot/initrd.img /tftpboot/vmlinuz /tftpboot/pxelinux.cfg /tftpboot/pxelinux.cfg/default
PXE opstarten
U moet er voor zorgen dat de computer waarop de installatie moet plaatsvinden zodanig is ingesteld dat deze via het netwerk kan opstarten en te controleren of PXE is geactiveerd. Daarna zal alles naar verwachting werken. Veel plezier met PXE!
Valkuilen / bekende problemen
PXELINUX-boot is erg traag
Het kan zijn dat het tijdens het laden an PXELINUX lijkt alsof het wel erg lang duurt om door al de verschillende regels te lopen zoals deze:
pxelinux.cfg/01-88-99-aa-bb-cc-dd pxelinux.cfg/C000025B pxelinux.cfg/C000025 pxelinux.cfg/C00002 pxelinux.cfg/C0000 pxelinux.cfg/C000 pxelinux.cfg/C00 pxelinux.cfg/C0 pxelinux.cfg/C pxelinux.cfg/default
U dient er zeker van te zijn dat u next-server in het bestand /etc/dhcpd.conf hebt ingesteld op het adres van uw TFTP-server. Als u geen hostnaam hebt, zoals getoond in de voorbeelden, voeg dan een regel als deze toe:
next-server 192.168.77.254;
Geen opties geaccepteerd
Als uw waarschuwingen krijgt zoals de volgende in /var/log/messages
:
in.tftpd: tftp: client does not accept options
Dit is normaal. PXELINUX blijkt niet alle opties te accepteren, maar dit heeft geen effect op het opstarten.
Socket-fouten tijdens het draaien van uw openSUSE's in.tftp
Als u foutmeldingen als deze krijgt:
in.tftpd: cannot bind to local socket: Address already in use
dan zijn waarschijnlijk de opties voor de server in /etc/xinet.d/tftp niet goed ingesteld. Controleer ze zorgvuldig.
Links voor aanvullende informatie
-- MightyBob 16:34, 1 april 2006 (UTC)