:: root-Dateisystem

Dieses System kann realtiv einfach erstellt werden. Ein Linux wird mit den notwendigen Anwendungen auf einer Festplatte installiert und dann in einen Unterordner des Servers kopiert. Dieser Ordner wird zunächst beschreibbar über NFS freigegeben. Wenn der Client damit erfolgreich bootet, wird die Freigabe auf (ro) geändert. Bei einem erneuten Bootvorgang kann man nun erkennen, welche Programme Schreibzugriff auf die Festplatte erfordern und wo sie schreiben wollen. Die entsprechenden Dateien werden in eine Ramdisk verschoben und dann gelinkt. Ein entsprechendes System kann über http://ldc.goe.net/ bezogen werden, wobei dieses Clientsystem wesentlich mehr kann als erforderlich! Die Dateien, die in die Ramdisk kommen, werden in einem Pfad abgelegt und dann mit tar gepackt. In den bootskripten wird dieses tarfile dann in die ramdisk entpackt.

Aktualisierungen des Systems führt man durch, nachdem die NFS-Freigabe auf (rw), also beschreibbar, umgestellt hat.

:: DHCPD

Der dhcpd vom ISC ist der Dreh- und Angelpunkt des Systems. Über seine Konfigurationsdatei wird geregelt, welcher Client was bootet. Diese Einstellungen werden für Klassen, Subnetze oder einzelne hosts getroffen - je nach Bedarf und verwendeten bootsystemen. Bei Klonfähigen Clients (die ja identische Hardware haben) benötigt man nur eine Konfiguration - wenn viel verschiedene Hardware genutzt wird, ist meist für jede einzelne eine eigene Konfiguration erforderlich. Im folgenden eine Konfiguration für einen ISC-dhcpd Version 3.x, die dynamisch die DNS-Namen einträgt und alternativ Etherboot, PXE und bpbatch als boot-Methoden unterstützt. Bei Verwendung des PXE wird im Anschluß Etherboot aufgerufen. Um Etherboot direkt anzusprechen, werden entweder grub als bootmanager oder bootdisketten benutzt.

ddns-update-style interim;
use-host-decl-names on;
default-lease-time 10000;
max-lease-time 20000;
option o9 code 9 = string;
option o128 code 128 = string;
option o135 code 135 = string;
option menue1 code 192 = string;
option menue2 code 193 = string;
option menue3 code 194 = string;
option o128 E4:45:74:68:00:00;
option vendor-class-identifier "";
set vendor-cls=vendor-class-identifier;
# BP Batch
option o135 = "-i";

option space PXE;
class "PXEClient" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
# Etherboot
filename "sis900.lzpxe";
# BP Batch
#filename "bpbatch";
option vendor-encapsulated-options "06:01:08:09:05:00:00:02:52:42:ff";
option vendor-class-identifier "3c:09:01:06:ff";
}
class "Etherboot" {
match if substring (option vendor-class-identifier, 0, 9) = "Etherboot";
# Fuer Etherboot noetig
option vendor-encapsulated-options 3c:09:45:74:68:65:72:62:6f:6f:74:ff;
# einzelner Kernel
filename="cel1000";
# Von Festplatte booten
#filename "/dev/hda";
# Fuer ein Bootmenue
#option menue1 = "Netzboot:::cel1000:::";
#option menue2 = "Floppyboot:::floppy:::";
#option menue2 = "Floppyboot:::/dev/fd0:::";
#option menue3 = "Harddisk:::/dev/hda:::";
}

#######################################
# dns autoupdate

key DHCP {
algorithm hmac-md5;
secret "XXXXXXXXXXXXXXXXXXXXX";
}

zone schulung.lokal. { 
	primary 127.0.0.1; 
	key DHCP; 
}

zone firma.lokal. { 
	primary 127.0.0.1; 
	key DHCP; 
}

zone 1.168.192.in-addr.arpa { 
	primary 127.0.0.1; 
	key DHCP; 
}

zone 101.168.192.in-addr.arpa { 
	primary 127.0.0.1; 
	key DHCP; 
}
########################################
subnet 192.168.101.0 netmask 255.255.255.0 {
  range 192.168.101.170 192.168.101.245;
  option domain-name-servers 192.168.101.1;
  option domain-name "schulung.lokal";
  option routers 192.168.101.1;
  option subnet-mask 255.255.255.0;
  option broadcast-address 192.168.101.255;
  option root-path "192.168.101.1:/rootfs";
}

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.150;
  option domain-name-servers 192.168.1.1;
  option domain-name "firma.lokal";
  option routers 192.168.1.1;
  option netbios-name-servers 192.168.1.1;
  option subnet-mask 255.255.255.0;
  option broadcast-address 192.168.1.255;
  option root-path "192.168.1.1:/rootfs2";
}

:: TFTP

Dieser Dienst wird zur Verteilung der PXE-Images, der Etherboot-Kernel und auf Wunsch auch zur Verteilung kompletter Festplattenimages genutzt. Bei der Konfiguration ist nichts wesentliches zu beachten.

:: NFS Server

Sowohl mit Kernel- als auch Userspaceserver kann gearbeitet werden. Bei einigen Distributionen muß man selbst sicherstellen, das auch der Portmapper gestartet wird, der zum Betrieb notwendig ist. Die Freigabe des rootfilesystems erfolgt in der /etc/exports wie gewohnt.

:: Kernel und Images

Der Kernel für Etherboot muß mit der Option gebaut werden, das root-Dateisystem per NFS einzubinden. Es empfiehlt sich, den Kernel ohne ladbare Module zu erzeugen, dadurch erspart man sich die Konfiguration von initrd. Der fertige Kernel wird mit "mknbi" zu einem ladbaren Image verwandelt, das über den tftp-Server verteilt wird. http://rom-o-matic.net/ kann genutzt werden, um ROMs für Netzwerkkarten zu erzeugen.

Weiter zur Ablaufbeschreibung
Zurück zur der Einführung

Startseite

IT at it's best

Themen