Mike Passwalls Site: <http://mike.passwall.com/macnc/>
(Mike hat auch Patches für den dhcpd, pflegt sie aber nicht mehr,
weshalb man hier eher für Grundlagen vorbeischauen sollte, dann aber
entweder die Patches von Alistair für dhcpd 2.0.x oder die von Rob für
dhcpd 3.x nehmen sollte)
Alistair Ridells Seite: <http://frank.watsons.edin.sch.uk/~ali/nb/>
(Sehr ausführliche Anleitung, inkl. Patches)
Rob Lineweavers Patch: (<http://software.harrisonburg.k12.va.us/linux/src/>)
Die Frage, ob man mit dhcpd 2.x oder 3.x arbeitet, hängt wohl primär davon ab, ob man das Feature von dhcpd 3.x braucht, dynamisch auch einen DNS-Server updaten zu können. Für mich nicht unbedingt wichtig, da ich Netbooting als etwas Statisches betrachte, d.h. eigentlich vor der Einrichtung von Netboot-Konfigurationen auch gleich die entsprechenden IP-Adressen nebst DNS-Einträgen fixiere.
Im Folgenden gehe ich also einfach mal von dhcpd 2.0.5 mit Alistairs Patches aus...
Netbooting funktioniert wie folgt: Ein Mac, dessen [n] Taste beim Hochfahren gedrückt wird oder der im Kontrollfeld entsprechend "Netzwerk" als Startlaufwerk vergeben bekommen hat, schickt einen "Netboot Request" ins Netz hinaus. Ältere Macs benutzten dazu BOOTP, die neueren DHCP. An der Stelle kommen auch die dhcpd Patches ins Spiel, die nun eben auf eine derartige Anfrage auch mit korrekten Antworten reagieren können. Der Mac bekommt in der Folge vom DHCP-Server eine IP-Adresse übermittelt und als Teil der DHCP-Antwort ebenfalls noch, von wo er sich ein MacOS ROM File laden soll (per TFTP) und wo letzten Endes die einzelnen Disk-Images liegen, mit denen er dann starten soll (und mit welchem Namen und welchem Paßwort er sich am jeweiligen AFP-Server anmelden soll).
Um das möglichst reibungslos zum Laufen zu bringen, würde ich den TFTP-Server (beliebig) mit einigen '-v' starten, um die Verbosity zu erhöhen, d.h. man auch mitbekommt, wenn sich ein Mac das ROM-File zieht. Der Zugriff auf die Disk-Images erfolgt per AFPoverTCP mit einer erwähnenswerten Einschränkung: Die Authentifizierung des Clients erfolgt mittels Cleartext UAM, d.h. per Klartextpasswort (das hat mich graue Haare gekostet, weil ich diese UAM auf meinem Test-Server verboten hatte - Details können hier <news:B8B06552.1D302%Thomas.Kaiser@phg-online.de> nachgelesen werden ;-)
Ich habe mir hier so geholfen, daß ich einfach ein Volume erzeugt habe, auf das die Images kommen und die ROM-Datei(en). Ich weiss nicht genau, wie sich die einzelnen ROM-Dateien konkret auswirken - habe hier einfach die von 9.2.1 genommen (<http://users.phg-online.de/tk/netboot/images-volume.gif>). Bzgl. der Images sei noch erwähnt, daß Boot- und Applications-Image im Finder auf "geschützt" gestellt werden sollten, das private Image jedoch nicht, da auf dieses alle Schreibvorgänge abgewickelt werden (je Client eines --> daher bei mir einfach gleich mit der entsprechenden MAC-Adresse des Macs versehen)
Der Mac sieht sich nach einem Netboot-Server um, bekommt eine IP-Adresse aufgrund der Konfiguration mitgeteilt und als Teil der DHCP-Antwort ebenfalls, wo er sich die ROM-Datei per TFTP und die drei Images per AFPoverTCP ziehen soll. Im Log sieht das so aus:
Mar 10 03:03:58 netboot-1 dhcpd: DHCPDISCOVER from 00:30:65:8d:60:e2 via
eth0
Mar 10 03:03:58 netboot-1 dhcpd: Received BootP request from Macintosh
netboot client
Mar 10 03:03:58 netboot-1 dhcpd: DHCPOFFER on 195.30.238.154 to
00:30:65:8d:60:e2 via eth0
Mar 10 02:03:58 netboot-1 in.tftpd[4518]: RRQ from 195.30.238.154
filename /Mac OS ROM
Mar 10 03:04:14 netboot-1 afpd[4519]: ASIP session:548(2) from
195.30.238.154:3265(0)
Mar 10 03:04:14 netboot-1 afpd[4519]: cleartext login: user-1
Mar 10 03:04:14 netboot-1 afpd[4519]: login user-1 (uid 501, gid 501)
AFP2.2
Mar 10 03:04:46 netboot-1 dhcpd: DHCPREQUEST for 195.30.238.154 from
00:30:65:8d:60:e2 via eth0
Mar 10 03:04:46 netboot-1 dhcpd: DHCPACK on 195.30.238.154 to
00:30:65:8d:60:e2 via eth0
Im Moment schreib ich im Rahmen eines kommerziellen Projekts ein GUI für die Macs, die auf Netboot umgestellt werden sollen und ein Failover-Konzept samt -Skripts, damit ein ausfallender Netboot-Server direkt von einer Ersatz- oder Lastverteilungsmaschine übernommen werden kann. Bei Interesse kann man mich diesbzgl. per PM erreichen ;-)
TFTP: In der etc/inetd.conf entsprechend den TFTP Eintrag "aufgebohrt":
in.tftpd -s /usr/local/netboot/volumes/images/TFTP_root/ -v
(-s deshalb, weil das dann in einer chroot Umgebung läuft und TFTP
Clients dann nur Zugriff auf den Inhalt dieses einen Ordners haben)
DHCP: <http://users.phg-online.de/tk/netboot/troubleshooting/dhcpd.conf.txt>
AFP: Um Klartextpasswörter zu ermöglichen darauf achten, daß entweder in
der afpd.conf oder in der netatalk.conf (je nachdem, welche zum
Einsatz kommt) auch '-uamlist uams_clrtxt.so' vorkommt, da die
primitive AFP-Client Funktionalität, die im MacOS ROM steckt, nur
Klartextpasswörter unterstützt.
Die oben beschrieben Lösung sollte auf Free-, Open-, NetBSD, Linux, Solaris und True64 UNIX laufen. Unter MacOS X theoretisch auch, allerdings scheitert hier die Kompilierung von Netatalk im Moment noch aus mir unbekannten Gründen. Da aber MOSX ja bereits mit dem AppleFileServer einen AFP-Server an Bord hat, kann man max. 10 Clients damit booten (oder halt beliebige, wenn MOSXS zum Einsatz kommen sollte, welches aber auch gleich Netbooting 'out of the box' bietet - wenngleich ohne Failover-Features, etc.)
Thomas Kaiser, 25.3.2002