Betriebskonzept

Es gibt inzwischen eine Reihe von Linux Diskless Client Projekten, die unterschiedliche Betriebskonzepte verfolgen. LTSP ist ein System aus Paketen, welches eine Art Mini-Distribution für Thin Clients darstellt. OpenSLX Clients hingegen verwenden als Betriebssystem eine der ganz normalen Linux Distribution, die auf den Diskless Betrieb angepasst wird. Diese Anpassung geschieht "minimal-invasiv", d.h. es werden keine Konfigurationsdateien etc. im Root-Verzeichnis einer Installation selbst gespeichert. Alles geschieht "on-the-fly" beim Booten des Clients (jedes Mal neu - daher "state-less"). Dieses benötigt jedoch unwesentlich Resourcen, so dass aufgrund einer geeigneten Anordnung im Runlevel eine Workstation stateless deutlich schneller startet, als von eigener Festplatte.

Hierzu setzt OpenSLX auf vier Stadien/Stages:

  • Stage2 stellt für Clients deren Rootfilesystem konkret zur Verfügung. Dazu gehört mindestens ein passender Kernel (üblicherweise direkt aus der verwendeten Distribution), mindestens ein zum Kernel passendes Initialramfs und eine Client-Konfiguration. Die Client-Konfiguration kann eine Reihe von Dateien enthalten, die dann im Stage3 an die passende Stelle entpackt werden (siehe ClientConfiguration). Das Client Rootfilesystem kann auf verschiedene Wege bereitgestellt werden. Das klassische Verfahren ist NFS, aber eine Stage1 Installation kann ebenfalls die Grundlage eines NBD/SquashFS Containers (oder ein iSCSI-Target) sein. Die eingangs genannten Komponenten werden über eine vorgegebene Filesystem-Struktur verteilt, siehe BootRootVerzeichnisse. Das Generieren des passenden InitialRamFS erledigt das Skript slxconfig-demuxer.
  • PreBoot ist ein spezielles, optionales Stadium für andere Boot-Systeme als PXE. Es umfasst einen generischen Kernel und ein spezielles InitRamFS, welches zum Starten des eigentlichen Stage3 dient. Es kann dabei dem Nutzer analog zu PXELinux eine Auswahl verschiedener Systeme anbieten und ihn nach Konfigurationseinstellungen für den gerade startenden Client fragen.
  • Stage3 findet auf jedem einzelnen Client innerhalb des InitialRamFS statt. Hierin erfolgt das individuelle Setup (ClientConfiguration) der Maschine (Linux Workstation). Diesen Bereich decken im großen und ganzen die Skripten init (SLX-Init), hwautocfg und servconfig ab. Lokale Erweiterungen (für alle Clients, die ein bestimmtes InitRamFS verwenden) sind mittels preinit.local (ganz am Anfang von SLX-Init) und postinit.local ziemlich zum Ende von SLX-Init möglich. postinit.local lässt sich mittels ConfTGZ per fileget zur Verfügung stellen.
  • Stage4 umfasst das klassische (Linux-)Init und seine Runlevel. Hier kann ein Administrator mittels boot.local eigene Erweiterungen realisieren. Viele klassische Runlevel-Skripten müssen hier gar nicht mehr ausgeführt werden, da die Hardware-Erkennung bereits vollständig in Stage3 erfolgte und die Netzwerkverbindung bereits seit Stage3 besteht.

Stage1 und Stage2 finden serverseitig statt, wobei es sich dabei nicht um eine dedizierte Maschine handeln muss. Stage3 und Stage4 werden auf dem Client bei jedem Startvorgang ausgeführt.