Linux.DHCP

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen

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

YaST2 -> Netzwerk Dienste -> TFTP -> 
 aktivieren
 Verzeichnis auf /tftpboot einstellen

YaST2 -> Netzwerkdienste -> Netzwerkdienste (INetd) -> 
 xinetd selbst sollte aktiv sein 
 TFTP muss an sein

md /tftpboot/pxelinux.cfg

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
  • Datei "deafault"

default harddisk

# hard disk
label harddisk
  localboot 0x80

# install
label linux
  kernel linux
  append initrd=initrd install=smb://192.168.115.90/suse noapci acpi=off

# amd64
label amd64
  kernel linux
  append initrd=initrd install=smb://192.168.115.90/suse64 apm=off apci=off textmode

# memory test
label memtest
  kernel memtest

implicit        1
display         message
prompt          1
timeout         200

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