Dies ist eine alte Version des Dokuments!


Generisches Modul

'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:

1. Archiv erzeugen

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

beispiel.conf
# 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.

Das Archiv wird im MiniLinux über das Rootverzeichnis entpackt. Achten Sie darauf, dass Sie für Ihre Ordner und Dateien korrekte Berechtigungen setzen.

Sie können Archive wie oben beschrieben auch unter Windows erstellen. Beachten Sie jedoch unbedingt, daß manche Windows-Packer dazu tendieren, bei Erstellung eines Archives im .tar- oder .tar.gz-Format, die Datei- und Verzeichnisberechtigungen („Permissions“) innerhalb des Archivs unerwünscht zu setzen1). Überprüfen Sie daher im Zweifelsfall resultierende Verzeichnis- und Dateirechte per Archivansicht oder auf einem Clientrechner!

Automatischer Programmstart

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

… 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

[Install]
WantedBy=multi-user.target

Abschließend müssen Sie noch ein Link im target-Unterverzeichnis anlegen:

cd etc/systemd/system/multi-user.target
ln -s ../programmstart.service
cd -

Das Packen und Prüfen der tgz-Datei erfolgt analog zum obigen Beispiel.

2. Neues Modul hochladen

Das Archiv muss anschließend über das Webinterface Ihres Satellitenservers hochgeladen werden. Wechseln Sie dazu zur Seite 'Lokalisierung + Integration' und wählen 'Neues Modul'. Dort können Sie als letzten Punkt ein 'Generisches Modul' hinzufügen. Wählen Sie dort Ihr vorbereitetes Archiv aus und vergeben einen eindeutigen Namen. Nach dem Hochladen wird zur Kontrolle der Inhalt des Archivs angezeigt.

Denken Sie daran, dass Sie das Modul noch der aktiven Systemkonfiguration zuweisen müssen. Ansonsten wird dieses nicht verwendet!

3. Client neustarten und überprüfen

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
1)
Beispiel: Ein mit 7zip erstelltes Archiv zur etc-Hierarchie enthielt (/)etc mit den Berechtigungen 777, was für SSH störende Auswirkungen hat (Schlüsselablehnung).
2)
Achtung: Im Falle von Skripten müssen Sie prüfen, on der passende Interpreter vorhanden ist, im Falle von Binaries müssen ggf. dynamisch gelinkte Bibliotheken eingeschlossen werden. Vergessen Sie auch nicht, ggf. das executable-Bit zu setzen.
Drucken/exportieren