Linux.DHCP: Unterschied zwischen den Versionen
(→TFTP) |
|||
(24 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== 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) | |||
<code> | |||
cat /var/lib/dhcp/db/dhcp.leases // Ermittlung der MAC Adressen angeschlossener Systeme | |||
</code> | |||
== TFTP == | == TFTP == | ||
md | 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 == | == Booten über das Netzwerk ermöglichen == | ||
Zeile 48: | Zeile 138: | ||
cp -a isolinux.cfg /srv/tftpboot/pxelinux.cfg/default | 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: | * Kopieren Sie die Datei /usr/share/syslinux/pxelinux.0 durch die Eingabe von: | ||
Zeile 58: | Zeile 152: | ||
readinfo | readinfo | ||
framebuffer | framebuffer | ||
// | // Für die bei "manual installation" | ||
insmod=e100 // f?e Intel 100MBit Karte | insmod=e100 // f?e Intel 100MBit Karte | ||
insmod=bcm5700 // f?e Broadcom | insmod=bcm5700 // f?e Broadcom | ||
netdevice=eth0 // Netzwerlkarte | netdevice=eth0 // Netzwerlkarte auswählen falls deren mehrere Da sind | ||
install=smb://192.168.100.1/usr/suse92 | 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 == | == Quellen == | ||
Suse PXE Infos http://portal.suse.com/sdb/de/2003/06/tsieden_pxe-install.html | Suse PXE Infos http://portal.suse.com/sdb/de/2003/06/tsieden_pxe-install.html<br> | ||
weitere PXE Infos: http://syslinux.zytor.com/pxe.php<br> | |||
== Bemerkungen == | == 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 | * 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: | 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: | ||
Zeile 83: | Zeile 205: | ||
mount -o loop suse92.iso /mein/Verzeichnis | mount -o loop suse92.iso /mein/Verzeichnis | ||
in das Dateisystem | in das Dateisystem einhängen! | ||
joe /etc/dhcp.conf | joe /etc/dhcp.conf | ||
Zeile 124: | Zeile 246: | ||
die Datei isolinux.cfg nach /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: | Editieren Sie die Datei /srv/tftpboot/pxelinux.cfg/default und entfernen Sie die Zeilen die mit: | ||
gfxboot | gfxboot | ||
readinfo | readinfo | ||
framebuffer | framebuffer | ||
Für die in den append Zeilen der Label default failsafe und apic die folgenden | beginnen. | ||
insmod=e100 Dieser Eintrag bewirkt, | |||
netdevice=eth0 Dieser Eintrag spezifiziert das Netzwerkinterface des Clients, welches | Für die in den append Zeilen der Label default failsafe und apic die folgenden Einträge an: | ||
install=nfs://192.168.100.1/usr/local/dist/SLES8 Dieser Eintrag legt den nfs Server und die Installationsquelle | 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. | ||
Eine, | 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 linux | ||
Zeile 175: | Zeile 299: | ||
prompt 1 | prompt 1 | ||
timeout 100 | 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 |
Aktuelle Version vom 23. Oktober 2014, 14:08 Uhr
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