Linux.DHCP

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen

Ziel

Ein DHCP Server (dhcpd) 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

Installation

zypper install dhcp-server
chkconfig --add dhcpd
joe /etc/sysconfig/dhcpd
# 
# Man muss das Interface eintragen das am Netzwerk hängt
# auf dem man DHCP Server Dienste anbieten will
#
DHCPD_INTERFACE="enp2s0"


joe /etc/dhcpd.conf
 # Hier mal meine dhcp.conf
 # Meinem Beispiel Rechner "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 {
   
   #
   # den Hostnamen auf dem Client bewusst setzen!
   # (der Client muss das natürlich zulassen!)
   #
   use-host-decl-names on;

   host sandiego {
     hardware ethernet 00:13:D4:42:7E:A0;
     fixed-address 192.168.115.4;
   }

   host indigo {
     hardware ethernet 00:13:D4:42:7E:A0;

     #
     # In der Regel sollte man ja seinen Nameserver so
     # konfiguerieren dass die Namesauflösung von "indigo" 
     # in eine IP-Adresse schafft. Man kann bei fixed-address
     # durchaus auch einen Hostnamen angeben. DHCPD wird
     # dann den Nameserver befragen welche IP Adresse vergeben
     # werden soll. Die vermeidet Fehler und Redundanzen bei
     # der Festlegung der IP Adresse.
     # Bei mir steht die IP Adresse dann nur in 2 Dateien 
     # (anstelle von 3).
     #
     # /var/lib/named/~domaene~.zone
     # /var/lib/named/192.168.115.zone
     #
     # Teste die Namensauflösung aber zuvor mit
     # $> host indigo
     # Hier muss die passende IP-Adresse erscheinen
     #
     fixed-address indigo;
   }

   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

heiwakoen

joe /etc/sysconfig/dhcpd

DHCPD_INTERFACE="eth1"


joe /etc/dhcpd.conf

 
option domain-name "friedenspark";
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

ddns-update-style none; ddns-updates off;
authoritative;
log-facility local7;


subnet 192.168.1.0 netmask 255.255.255.0 {

 range 192.168.1.100 192.168.1.110;

} 

#

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

Installations Server

Darüber hinaus hilft DHCP auch bei der Installation von völlig "nackten" Systemen über das lokale Netzwerk. Alternativ lesen Sie Linux.Install mit Informationen über die Installtion von Linux mit Hilfe eines USB-Speichers. 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"

Win32

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:

Linux

http://www.thomas-krenn.com/de/wiki/ISO_Image_von_CD_oder_DVD_unter_Linux_erstellen

ISO wieder benutzen

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