Linux.DHCP
Ein DHCP Server verschafft den Clients während der BOOT Phase lebenswichtige Informationen. Diese sind z.B.
- die eigene IP Adresse
- der Standard Gateway für den Zugriff ins Internet
- der Name eines Timeserver Hosts zum stellen der eigenen Uhrzeit
Der DHCP hilft auch bei der Installation von völlig "nackten" Systemen. Dabei bietet der DHCP Server einen kleinen BOOT-Record an, den die Clients laden und ausführen können. In der Folge kann man ein ISO Image einer Linux DVD zur Verfügung stellen Ziel: SuSE über Netzwerk installieren. Dabei will die neue Kiste auch über das Netzwerk booten. Lösung: Ein bereits funktionierendes Linux System (vorzugweise klassisch über die DVD installiert) dient als "Installations-Server". Dazu muss folgendes vorbereitet werden.
DVD nach .iso "rippen"
Die ganze Installations-DVD habe ich mit nero -> Track speichern -> Format ISO auf das Dateisystem meines linux Servers als einzelne Datei "suse92.iso" abgelegt. Damit die ganze DVD zugänglich wird habe ich ein Verzeichnis auf das iso Image gemountet:
mount -o loop suse92.iso /srv/freigabe/boot/suse92
Diesen Ordner mit Samba freigeben
-> siehe hier meine Infos zu samba
[suse]
path = /srv/freigabe/boot/suse92 read only = yes browseable = yes
DHCP
1) YaST2->Netzwerkdienste->DHCP->entsprechende Angaben machen! Wichtig ist vor allem die Festlegung auf das Interface welches die DHCP Anfragen beantworten soll. Bzw. welche Interfaces an DHCP gebunden werden sollen.
Man sollte nun zum Test einige Clients via DHCP konnektieren lassen, um die IP-Adress-Zuweisung auf Funktion zu prüfen. Nachdem der DHCP durch yast gut eingerichtet war, habe ich ab dann die dhcpd.conf selbst per Hand erweitert.
joe /etc/dhcpd.conf die folgende Zeile oben dazu filename "pxelinux.0";
# Hier mal meine dhcp.conf # Meinem system "sandiego" teile ich eine feste IP zu! option domain-name "lummerland"; option domain-name-servers 192.168.115.90; option routers 192.168.115.90; option ntp-servers ptbtime1.ptb.de; option netbios-name-servers 192.168.115.90; filename "pxelinux.0"; max-lease-time 7200; ddns-update-style none; ddns-updates off; authoritative; log-facility local7; default-lease-time 600; subnet 192.168.115.0 netmask 255.255.255.0 { host sandiego { hardware ethernet 00:13:D4:42:7E:A0; fixed-address 192.168.115.4; } range 192.168.115.190 192.168.115.199; default-lease-time 14400; max-lease-time 172800; }
- Anzeigen, welche IP-Adressen im Moment vergeben sind (bzw. waren)
cat /var/lib/dhcp/db/dhcp.leases // Ermittlung der MAC Adressen angeschlossener Systeme
TFTP
md /srv/tftpboot md /srv/tftpboot/pxelinux.cfg YaST2 -> Netzwerk Dienste -> TFTP -> aktivieren Verzeichnis auf /srv/tftpboot einstellen YaST2 -> Netzwerkdienste -> Netzwerkdienste (INetd) -> xinetd selbst sollte aktiv sein TFTP muss an sein
Booten über das Netzwerk ermöglichen
- die Dateien linux initrd message memtest in das Verzeichnis /srv/tftpboot.
cd /srv/boot/boot/loader cp -a linux initrd message memtest /srv/tftpboot cp -a isolinux.cfg /srv/tftpboot/pxelinux.cfg/default
syslinux installieren
rpm -F /srv/boot/suse/i586/syslinux-3.11-18.i586.rpm
- Kopieren Sie die Datei /usr/share/syslinux/pxelinux.0 durch die Eingabe von:
cp -a /usr/share/syslinux/pxelinux.0 /srv/tftpboot cp isolinux.cfg /srv/tftpboot/pxelinux.cfg/default joe /srv/tftpboot/pxelinux.cfg/default // folgende Zeilen entfernen gfxboot readinfo framebuffer // Für die bei "manual installation" insmod=e100 // f?e Intel 100MBit Karte insmod=bcm5700 // f?e Broadcom netdevice=eth0 // Netzwerlkarte auswählen falls deren mehrere Da sind install=smb://192.168.100.1/usr/suse92
Quellen
Suse PXE Infos http://portal.suse.com/sdb/de/2003/06/tsieden_pxe-install.html
weitere PXE Infos: http://syslinux.zytor.com/pxe.php
Bemerkungen
- Auf einem MSI Board hatte ich heute einen nicht auf anhieb Funktionierenden Netzwerk Chip (irgend ein VIA Teil). In diesem Fall hab ich einfach eine RTL8139 in das Board gesteckt, und nun mit "Kernel-Module" laden das entsprechende Modul hinzugefügt, dann ging die Installation wiederum über ein liebes Linux Samba Share.
Aufsetzen eines Installations Servers, der die SuSE DVD als über Netz Bootbares Medium anbietet. Mein Ziel ist einen neuen Rechner ohne CD oder DVD komplett über Netz zu installieren. Folgende Dienste sollten in die Konfiguration aufgenommen werden:
#chkconfig --add tftp chkconfig --add dhcpd
mit Win32 nero den "Track speichern" mit dem Typ ISO das ISO Image auf den DHCP Server stellen das Image mit
mount -o loop suse92.iso /mein/Verzeichnis
in das Dateisystem einhängen!
joe /etc/dhcp.conf
filename "pxelinux.0";
md /srv/tftpboot
YaST2->Software->Installationsquelle wechseln 1. YaST starten 2. Modul Software aufrufen 3. Installationsquelle wechseln 4. Hinzuf?FTP 5. Folgendes genau so eintragen:
Protokoll: [X] FTP Servername: ftp.gwdg.de Verzeichnis auf dem Server: pub/linux/suse/ftp.suse.com/suse/i386/9.2 Authentifikation: [X] Anonymous
syslinux installieren!
Konfiguration des tftp Servers
Erstellen Sie (falls es noch nicht existiert) das Verzeichnis /srv/tftpboot und /srv/tftpboot/pxelinux.cfg
Wechseln Sie in das Verzeichnis Ihres Installationsrepositorys und kopieren Sie durch die Eingabe von: cp -a boot/loader/linux boot/loader/initrd boot/loader/message boot/loader/memtest /srv/tftpboot die Dateien linux initrd message memtest in das Verzeichnis /srv/tftpboot. Installieren Sie das Paket syslinux.
Kopieren Sie die Datei /usr/share/syslinux/pxelinux.0 durch die Eingabe von: cp -a /usr/share/syslinux/pxelinux.0 /srv/tftpboot in das Verzeichnis /srv/tftpboot.
Wechseln Sie in das Verzeichnis Ihres Installationsrepositorys und kopieren Sie durch die Eingabe von: cp -a boot/loader/isolinux.cfg /srv/tftpboot/pxelinux.cfg/default die Datei isolinux.cfg nach /srv/tftpboot/pxelinux.cfg/default Editieren Sie die Datei /srv/tftpboot/pxelinux.cfg/default und entfernen Sie die Zeilen die mit:
gfxboot readinfo framebuffer
beginnen.
Für die in den append Zeilen der Label default failsafe und apic die folgenden Einträge an: insmod=e100 Dieser Eintrag bewirkt, dass auf dem PXE-Client das Kernelmodul für die Intel 100MBit/s Netzwerkkarte geladen wird. Dieser Eintrag ist abhängig von der Hardware Ihres Clients, und muss entsprechend geändert werden. Bei einer Broadcom GigaBit Netzwerkkarte würde dieser Eintrag insmod=bcm5700 lauten. netdevice=eth0 Dieser Eintrag spezifiziert das Netzwerkinterface des Clients, welches für Netzwerkinstallation benutzt werden soll, und ist nur dann notwendig, wenn mehrere Netzwerkkarten in den Clients verbaut sind. Dieser Eintrag muss dann entsprechend angepasst werden. Bei nur einer Netzwerkkarte kann dieser Eintrag komplett entfallen. install=nfs://192.168.100.1/usr/local/dist/SLES8 Dieser Eintrag legt den nfs Server und die Installationsquelle für Installation der Clients fest, und muss gegebenenfalls angepasst werden. Eine, für SuSE Linux Enterprise Server 8 - Netzwerkinstallation, angepasste /srv/tftpboot/pxelinux.cfg/default finden Sie hier:
default linux # default label linux kernel linux append initrd=initrd ramdisk_size=65536 insmod=e100 install=nfs://192.168.100.1/usr/local/dist/SLES8 # failsafe label failsafe kernel linux append initrd=initrd ramdisk_size=65536 ide=nodma apm=off acpi=off insmod=e100 install=nfs://192.168.100.1/usr/local/dist/SLES8
# apic label apic kernel linux append initrd=initrd ramdisk_size=65536 apic insmod=e100 install=nfs://192.168.100.1/usr/local/dist/SLES8 # manual label manual kernel linux append initrd=initrd ramdisk_size=65536 manual=1 # rescue label rescue kernel linux append initrd=initrd ramdisk_size=65536 rescue=1 # memory test label memtest kernel memtest # hard disk label harddisk kernel linux append SLX=0x202 implicit 0 display message prompt 1 timeout 100