'Generische Module' ermöglichen es, beliebige Dateien in das Linux-Grundsystem der Clients einzubringen bzw. vorhandene Dateien zu überschreiben. Notwendig ist dies, wenn Sie z.B. spezielle iptables-Regeln, Druckkonfigurationen oder ähnliche Anpassungen innerhalb des Grundsystems vornehmen möchten.
Um Generische Module anzulegen sind folgende Schritte nötig:
Legen Sie ein Archiv an, dessen gegebene Verzeichnisstruktur eins zu eins in das gebootete Linux extrahiert wird - eine im Archiv enthaltene Datei etc/beispiel.conf wird im gebooteten System also auch unter /etc/beispiel.conf erscheinen.
Fangen Sie zunächst mit der nötigen Ordnerhierarchie für unser Beispiel an:
mkdir -p ~/gen_modul/etc/ cd ~/gen_modul/etc/
Legen Sie dort folgende Beispieldatei ab
# Ich bin ein Beispiel :)
Wechseln Sie dann in das von Ihnen angelegte Verzeichnis ~/generic_module:
cd ~/gen_modul
und packen Sie diese Datei als tar-gz-basiertes Archiv (Endung .tgz) so ein, dass das Verzeichnis 'etc' direkt im Archiv erscheint:
tar czf beispiel.tgz etc/
Prüfen Sie sicherheitshalber das Archiv:
tar tvf beispiel.tgz
So sollte das Archiv aussehen (Ausklappen)
Dieses tgz-Archiv kann dann im nächsten Schritt als Generisches Modul auf den Satellitenserver geladen werden.
Sollten Sie in Ihrem generischen Modul ein Programm2) abgelegt haben, das automatisch gestartet werden soll, müssen Sie weitere Vorkehrungen treffen. Der empfohlene Weg geht über einen systemd-Service, der zur Erreichung eines bestimmten systemd-Ziels („target“) gestartet wird. Gewöhnliche Optionen sind hier etwa graphical.target, multi-user.target, network-online.target usw.; unten genanntes Beispiel arbeitet mit multi-user.target.
Erzeugen Sie zuerst die nötigen Unterverzeichnisse, wie oben auf Ihr Arbeitsverzeichnis gen_modul bezogen:
mkdir -p etc/systemd/system/multi-user.target.wants
… und legen eine Datei etc/systemd/system/programmstart.service folgenden Inhalts an:
[Unit] Description=Mein Programm XYZ [Service] Type=oneshot ExecStart=/Pfad/zu/Ihrem/Programm RemainAfterExit=true
Abschließend müssen Sie noch ein Link im target-Unterverzeichnis anlegen:
cd etc/systemd/system/multi-user.target.wants ln -s ../programmstart.service cd -
Das Packen und Prüfen der tgz-Datei erfolgt analog zum obigen Beispiel.
Das Archiv muss anschließend über das Webinterface Ihres Satellitenservers hochgeladen werden. Wechseln Sie dazu zur Unterseite „Lokalisierung + Integratio„“ und klicken rechts unten unter der Spalte „Verfügbare Konfigurationsmodule“ auf die Schaltfläche „Neues Modul“. In der folgenden Anzeige „Modul hinzufügen“ erscheint als letzter Punkt „Generisches Modul“. Klicken Sie dort auf „hinzufügen“. Wählen Sie dort per „Durchsuchen…“ Ihr vorbereitetes Archiv aus drücken anschließend auf „Hochladen“.
Nach dem Hochladen erscheint eine mit dem Archivdateinamen vorausgefüllte Eingabemöglichkeit für den Modulnamen; vergeben Sie einen sprechenden, eindeutigen Namen. Darunter erhalten Sie zur Kontrolle den Inhalt des Archivs angezeigt. Falls die Dateien des Archivs nicht dem User root und der Gruppe root zugehörig sind, erscheint eine Warnmeldung und die vorausgewählte Option, die Besitzrechte der Dateien auf root:root zu setzen. Da anderen User/Gruppe zugeordnete Dateien sind nur in seltenen Fällen angebracht sind, ist im Allgemeinen empfohlen, die Rechte so zu übertragen.
Nach Klick auf „Weiter“ werden die bereits bestehenden Systemkonfigurationen aufgelistet. Sie können das soeben erzeugte generische Modul bequem mit einem Klick der Systemkonfiguration Ihrer Wahl zuweisen. Eine Zuordnung ist jedoch nicht obligatorisch; Sie können das gen. Modul auch später noch zuweisen.
Starten Sie einen bwLehrpool-Client, loggen sich ein und wählen unter 'Natives Linux' die 'Openbox' aus. Wenn alles funktioniert hat, sollte Ihre Datei nun verfügbar sein. Überprüfen Sie dies z.B. folgendermaßen:
cat /etc/beispiel.conf