Diskless-Workstations

www.etherboot.org

www.rom-o-matic.net diskette, auf Festplatte oder eprom schnitzen im Webinterface

§

Diskless-Clients können einfach ausgeschaltet werden, brauchen nicht runterfahren, da das Dateisystem auf dem Server konsistent bleibt.

Anders als Citrix-Linux-Client oder X-Server läuft mit Diskless-Workstations die Software auf dem Client. VM-Ware kann auf Server und Client laufen.

Bootprom oder Diskette(Bootprom-Emulation) ist Netzwerkkartenspezifisch, gepackte und ungepackte, 16KB

Vorteile: zentrale Administration, Update von Programmen, diskless-stationen

Viel Arbeitsspeicher auf der WS, leistungsfähiger Switch und Server werden benötigt.

Programm(Paket) etherboot zum Bauen des Bootprom, bootrom-code

suche nach DHCP/BOOTP-Server rpm dhcp-server

Kernel vom Server holen und ausführen dhcp-server teilt den Server mit

tftp mittels Triviales-FTP

Root-FS über NFS mounten dhcp-server teilt den Server mit, 1Verzeichnis pro WS-Art

etherboot kann auch dos-Treiber für Netzwerkkarten einbinden.

Diskette für Diskless-Workstations schnitzen

etherboot installieren

/usr/share/doc/packages/etherboot/html/userman.html usermanual anschauen

/usr/lib/etherboot/zimg/* fertige gepackte Diskettensätze, 16 KB

/usr/lib/etherboot/img/* fertige ungepackte Diskettensätze, 32 KB

/usr/lib/etherboot/dsk für Festplatten, gibt auch fertige Proms, usw.

fdformat /dev/fd0h1440 Floppy formatieren und testen

cat boot1a.bin rtl8139.zimg > /dev/fd0 Vorbereitung für Floppy, möglicherweise nicht nötig(SuSE)

dd if=/usr/lib/etherboot/dsk/rtl8139.dsk of=/dev/fd0 Übertragung der Datei auf Diskette

für vmware braaucht man eine größere Datei.

dd if=/usr/lib/etherboot/dsk/rtl8139.dsk of=/tmp/floppy.img

dd if=/dev/zero count=1000 >> /tmp/floppy.img

Server für diskless

vi /etc/dhcpd.conf

ddns-update-style none;

option domain-name "local"; NIS

option domain-name-servers 192.168.4.40; DNS

subnet 192.168.6.128 netmask 255.255.255.192 { Maske

option broadcast-address 192.168.6.191;

option routers 192.168.6.129;

#range 192.168.6.131 192.168.6.190; Bereich

# server-name "IP-Adr./fqdn-name"; Angabe für folgendes boot-file

filename "/boot/bzImage.diskless"; vom DHCP-Server in /tftpdboot

host client138 {

hardware ethernet 00:c1:22:4d:ad:02; mit ifconfig auslesen

fixed-address 192.168.6.138; eigene IP.Adr.

server-name "192.168.6.130"; Programme

}

host client139 {

hardware ethernet 00:c1:22:4d:ad:09; mit ifconfig auslesen

fixed-address 192.168.6.139; eigene IP.Adr.

server-name "192.168.6.130"

filename "/tftpboot/otherImage.diskless"; 2.Image(z.B. andere Netzwerkkarte)

}

}

vi /etc/sysconfig/dhcpd dhcpd_interface="eth0"

touch /etc/dhcpd.leases erstellen

vi /etc/exports /tftpboot/"server-IP" clientIP(rw,no_root_squash)

/usr/sbin/in.tftpd -s /tftpboot Startverzeichnis angeben

dhcpd eth0 start dhcp-server-deamon starten , restarten nach jeder Änderung

/etc/init.d/nfsserver start nfsserver starten

diskless-Client-Server-Boot-Ablauf

DHCP-, TFTP-, NFS-Server solltender Einfachheit halber auf der gleichen Maschine sein.

client dd if=/lib/etherboot.dsk of=/dev/fd0 bootmedium Diskette

client BootROM-Code starten IP-Adresse, TFTP-Server, KernelDateiname über DHCP holen

DHCP-Server /etc/dhcpd.conf host clientname {

fixed-address 15.0.0.21;

hardware ethernet MAC-Adr.;

server-name "IP-Adr.";

filename "/tftfboot/Kernelname";

}

client tftp://TFTP-Server:/pfad/Kernelname Kernel laden

TFTP-Server xinetd startet Dienste im Bedarfsfall

/etc/xinetd.d/tftp Diable=no, Achtung ChangeRoot-Umgebung

client Kernel starten Name, IP, NetzKarte etc. verschwindet, wird überschrieben

NetzKarten-NIC-Support

DHCP-Support

NFS-Support

RootFS-over-NFS

DHCP-Server /etc/dhcpd.conf Infos werden übertragen, siehe oben:Server für diskless

rootpath=%S Wenn von /tftpboot/hostname-IP-Adr. geändert werden soll,

muß in dhcpd.conf root-path "server-IP:/tftpboot/Pfad" eingetragen werden.

use-host-decl-name on für gemeinsames Verzeichnis verschiedener clients

client Kernel mountet RootFS über NFS

rootserver:rootpath -> / rootserver=server-name, rootpath=/tftpboot/hostname-IP-Adr.

NFS-Server /etc/expoorts tftpboot für client exportieren

client rootdateisystem vom NFS-Server laden

NFS-Server /usr/sbin/rpc.mountd -d call im debug-Modus, mit syslog in /var/log/messages

client /etc/fstab /tftpboot/-Verzeichnisse mounten

NIS /tftpboot/ /bzImage.diskless

/tftpboot/home muß von allen clients gemountet werden

/tftpboot/home/peter

/tftpboot/home/gabi

/tftpboot/diskless.stage1 (minimal < 10 MB)

/tftpboot/client138 bootVerzeichnisse mounten, minimalGröße

/tftpboot/client138/etc

/tftpboot/client138/dev

/tftpboot/client138/bin

/tftpboot/client138/lib

/tftpboot/client138/sbin

/tftpboot/client138/usr

/tftpboot/client138/tmp

/tftpboot/client138/var

/tftpboot/diskless.stage2 nachträglich mounten, vollständiger Dateibaum

/tftpboot/diskless.stage2/usr 1 für alle clients, Große Verzeichnisse

/tftpboot/diskless.stage2/opt

/tftpboot/diskless.stage2/bin

/tftpboot/diskless.stage2/sbin

/tftpboot/diskless.stage2/boot

/tftpboot/diskless.stage2

/tftpboot/root

oder /tftpboot

/tftpboot/alle/ hier bin, home, opt, root, sbin, usr, lib, boot(booten) volles System

/tftpboot/client1/ <10MB bin, dev, etc, home, opt, root, sbin, usr, lib, media, mnt, tmp, proc, var

/tftpboot/client2/ <10MB bin, dev, etc, home, opt, root, sbin, usr, lib, media, mnt, tmp, proc, var

Das Vor- und Nach-mounten geschieht in den zuerst über DHCP , dann geht's weiter in /etc/init.tab , /etc/initboot, init.d, terminal,

rc3: Tastatur+Portmapper+nfs, hier beim nfs-script ein Verweis in die

fstab, dort IP-Adr:/tftpboot/diskless.stage2/usr /usr nfs auto,ro,no_root_squash 0 0

 

MiniClientSystem erstellen

/etc/inittab + /sbin/init Danach Fehlermeldung für Fehlermeldung eliminieren, Dateien und Verzeichnisse hinzufügen bis alles rund läuft. Debug-Modus hilft.

ldd /sbin/init

ldd /bin/bash nötige libraries für Programme finden

 

tftpd

Einträge in die /etc/exports auf nfs-server /tftpboot/ClientIP (rw,no_root_squash, etc.) Client greift als root zu

mkdir /tftpboot

mkdir /tftpboot/boot ist Startverzeichnis des tftpd, hinein kommt bzImage.diskless

mkdir /tftpboot/"IP_Adr.-des-Clients1" je Client 1 Verzeichnis, wird root-Verzeichnis des Client

mkdir /tftpboot/"IP_Adr.-des-Clients1"/bin Verzeichnis anlegen und füllen

mkdir /tftpboot/"IP_Adr.-des-Clients1"/etc und so weiter

vi /tftpboot/"IP_Adr.-des-Clients1"/etc/fstab anpassen

mkdir /tftpboot/"IP_Adr.-des-Clients2" ???? als Hardlink zu /tftpdboot/"IP_Adr.-des-Clients1" alles gleich

mkdir /tftpboot/"IP_Adr.-des-Clients3"

mkdir /tftpboot/"IP_Adr.-des-Clients3"/etc als Hardlink zu /tftpdboot/"IPClients3"/etc. alles gleich

mkdir /tftpboot/alle um alle gleich zu booten

 

 

 

inetd startet und stoppt andere Dienste wie tftp, pop3, drucker, vnc, time, echo usw.

/etc/inetd.conf Konfigurationsdatei des tftpd oder neu /etc/xinetd.conf -> /etc/xinetd.d/tftp

vi /etc/xinetd.d/tftp disable=no

/etc/init.d/inetd -restart bei Änderung jeder Konfiguration oder neu: /etc/init.d/xinetd restart

/usr/sbin/in.tftpd Internet-Deamon

/usr/sbin/in.tftpd -s /tftpboot deamon starten mit Startverzeichnis

/usr/sbin/dhcpd eth0 start dhcp-server starten

/etc/init.d/nfsserver start nfs-server starten

chmod xxx /tftpboot/clientIP Rechte setzen

kernel -> macht sowas wie -> mount -t nfs serverIP:/tftpboot/clientIP

 

diskless-kernel schnitzen

Konfiguration make menuconfig

Netzwerkkarte

DHCP

BOOTP

NFS in filesystems, network-file-systems

Root file system on NFS

make bzImage -> arch/i386/boot/bzImage

Paket mknbi installieren, etherboot braucht das

mkelf-linux --ip=dhcp –output=/tftproot/boot/bzImage.diskless Pfad/bzImage

patcht den Kernel nach bzImage.diskless, Pfad auch individuell

greife zu auf /tftpboot/%s

 


Hauptseite