[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Diskless Workstations mit Debian



On Fre, 12 Nov 2004, jensebluemchen wrote:
> ich bin gerade dabei ein Netzwerk mit Diskless Workstations aufzubauen. Da 
> ich Linux Neuling bin komme ich allerdings gerade nicht weiter.

Habe ich gemacht für unser Institut. Aber als Linux Neuling ist das
glaube ich ein gröberes Unterfangen.

Meine Unterlagen/BEschreibung auf woody basierend:

HOWTO boot diskless clients mit etherboot, shared nfs sys etc etc etc
=======================================================================
(relativ alt, Änderungen 12.8.2004 NP)

1) etherboot rom für die entsprechende Karte basteln und brennen. 
	Ich habe eines mit Optionen für MENU, MOTD, local devices
	und DHCP!
	(Umstellung auf PXE ist geplannt)

2) dhcp am server (siehe dhcp.conf) verteilt kernel image (nbi format)
	erstellen mit
	mknbi-linux --ip="dhcp" vmlinuz > vmlinuz.net
   natürlich mit entsprechenden files. (In dhcp.conf steht der file name!)
   WICHTIG config Punkte für kernel compilieren:
	CONFIG_IP_PNP=y
	CONFIG_IP_PNP_DHCP=y
	CONFIG_DEVFS_FS=y		JA devfs ist NOTWENDIG!!!

3) Maschine startet und wirft etherboot rom auf netzwerk karte an, die
   sendet boot requests, bekommt vom server den kernel mit tftpboot.

4) kernel bootet mit ip="dhcp" (von mknbi-linux übernommen), sucht daher
   mit nfs ein root fs, die infos bekommt es vom dhcp server (hostname,
   router, gw, ... siehe dhcp.conf), mounted root fs = das shared fs
   für alle DCs (!ACHTUNG: Wir haben die fs von server und diskless
   clients getrennt, wenn server auf eine 64bit architektur umzieht
   macht das keine Probleme)

5) Ein neues debian start script habe ich erstellt: diskless dass nach
	diskless:/etc/rcS.d/S02diskless
   gelinkt wird. WICHTIG: S01devfsd muss vorher gestartet werden, wird
   aber automatisch wenn man devfsd installiert.

Kommentiertes diskless.sh
#
# diskless.sh
#
# mounting local files systems specific for this client.
#
#
# check auf HAUPT diskless client, von dem Installation gemacht wird, der
# auf alles schreib berechtigungen hat. Der client hat die Master /etc und
# Master /var directories. Alle anderen machen dies:
if [ ! `hostname` = polaris ] ; then
# lo up, klaro
	ifconfig lo 127.0.0.1 up
#
#	Hier gibt es einen ssh key (dcstart.id_dsa) der KEINE passphrase
#	hat, aber wo auf dem server immer das gleiche Programm ausgefuehrt
#	wird: gamma:/usr/local/sbin/build-dc-etc
#
	ssh -i /root/.ssh/dcstart.id_dsa gamma.logic.tuwien.ac.at
# mount proc notwendig
	mount -n /proc
# protmap notwendig für  nfs mounten
	/etc/init.d/portmap start
# mounten 
	echo -n "mount new etc ... "
	mount -n -o nolock -t nfs 128.130.175.3:/usr/dc/debian-dc/`hostname`/etc /etc
	echo "done."
	echo -n "Mounting local var directory under /var:"
	mount -o nolock -t nfs 128.130.175.3:/usr/dc/debian-dc/`hostname`/var /var
	echo " done"
# sagt eh alles
	echo -n "Fixing /etc/mtab: "
	cat /proc/mounts > /etc/mtab
	echo "done"
fi

################################


Was tut nun build-dc-etc:
#!/bin/bash
#
# build-dc-etc
#
# Usage: build-dc-etc
#
# The relevant IP adresse is taken from the SSH_CLIENT environment variable!

set $SSH_CLIENT
IP=$1
echo "------------> IP=$IP"

cd /usr/dc/debian-dc
if [ ! -d $IP ] ; then
        echo "`basename $0`: The IPADDR: $IP does not exist in /usr/dc/debian-dc
/"
        exit 1
fi
echo "Syncing /etc files ..."
rsync -av root/etc/ $IP/etc 2>&1
echo "Syncing /var files ..."
rsync -av --exclude='tmp/*' --exclude='lib/logcheck/*' --delete root/var/ $IP/va
r 2>&1
cd $IP
echo -n "Cleaning up /var directory ... "
echo -n "nfs state ... "
rm -rf var/lib/nfs/*
echo "done."
echo -n "Copying changed /etc files ... "
cp -a etc-changefiles/* etc/ 2>&1
echo "done."
echo -n "Generating XF86Config-4 file ... "
. etc/X11/X-spec.txt
sed -e "s/%%DEVICE%%/$DEVICE/g;s/%%MONITOR%%/$MONITOR/g;s/%%LONG%%/$LONG/g" ../X
F86Config-4.generic > etc/X11/XF86Config-4
echo "done."
echo "Local DC setup complete."

#####################################################################

5a) Änderungsfiles (etc.changes) enthalten bei uns NUR
	/etc/hostname		der richtige hostname, wichtig!
	/etc/X11/XF86Config-4	da verschiedene Monitore
    sonst NICHTS im Moment, kann aber jederzeit angepasst werden
    (Ideen dafür: empty cron scripts, ...)

6) Ab hier geht alles ganz normal debian mäßig weiter, keine Änderungen im
   ganz normalen ablauf, NICHTS sonst.

6a) Natürlich darf man nicht auf nis etc vergessen ;-) Wie kommen sonst
    die Infos über Benutzer an die DCs.

7) Weitere Punkte (die aber eventuell auch anders zu lösen sind, je nach
   Erfordernissen): 
	/var/mail und /home wird auch per nfs vom server verteilt,
   	mailprogramme laufen lokal
	mails werden vom lokalen exim an den server exim weitergeleitet, der
	macht rewriting etc etc



Wie läuft die erste Installation, die des Master DC ab: Einfach: Entweder von
floppy oder cdrom (falls vorhanden) booten, händisch filesystems per nfs
mounten, alles übers netz installieren.

Unser file Struktur am server:
SERVER DC DIR/
--> tftpboot
----> motd
----> debian
-------> lx-2.2.21.net
--> debian-dc
----> root
------> etc
------> var
----> andererdc1
------> etc		da wird immer alles vom master etc reinkopiert
------> var		das wird von cron scripts vom master var erstellt.
------> etc-changefiles hier sind nur die Änderungsfiles, hostname, X config
----> anderedc2
------> etc
------> var
------> etc-changefiles
...


Herzliche Grüße

Norbert

-------------------------------------------------------------------------------
Norbert Preining <preining AT logic DOT at>         Technische Universität Wien
gpg DSA: 0x09C5B094      fp: 14DF 2E6C 0307 BE6D AD76  A9C0 D2BF 4AA3 09C5 B094
-------------------------------------------------------------------------------
Far out in the uncharted backwaters of the unfashionable
end of the western spiral arm of the Galaxy lies a small
unregarded yellow sun.
                 --- Douglas Adams, The Hitchhikers Guide to the Galaxy



Reply to: