Dies ist eine alte Version des Dokuments!


Linux in virtuellen Maschinen

Hilfsskripte

Die für Linux vorhandenen Skripte sind innerhalb per Poolsystem gebooteter VMs auf dem zweiten Floppylaufwerk (/dev/fd1) nach dem Mounten im Unterverzeichnis 'linux' zu finden1). Sie finden die jeweils aktuellste Version im Netz hier. Bitte betrachten Sie diese Skripte als Vorlagen; an Erweiterungen derselben und anderen Lösungen sind wir sehr interessiert.

Händisches Mounten (es wird angenommen, /mnt sei leer, Rootrechte erforderlich):

mount /dev/fd1 /mnt

… anschließend finden Sie die Skripte unter /mnt/linux und können diese umkopieren. Bitte lesen Sie in jedem Fall die mitgelieferte Datei linux/LIESMICH bzw. linux/README.

Die Hilfsskripte beziehen ihre Informationen aus den im Grundverzeichnis der Pseudofloppy befindlichen Dateien openslx.ini und shares.dat. Die Datei HOSTRES.TXT wird nur noch aus Kompatibilitätsgründen eine Weile mitgeführt. Stützen Sie sich nicht auf HOSTRES.TXT, wenn Sie eigene Skripte schreiben bzw. die vorhandenen erweitern.

Automatische Anpassung der Auflösung

Damit sich die Auflösung innerhalb von bwLehrpool automatisch anpassen kann, muss ein entsprechendes Skript automatisch bei der Anmeldung ausgeführt werden, welches die optimale Auflösung des verwendeten Bildschirms ermittelt und diese Auflösung anschließend setzt. Bei den Vorlagen für Windows-VMs ist dafür beispielswiese die 'openslx.exe' im Laufwerk B:\ bereits im Autostart eingetragen. Für Linux-Umgebungen ist die Herangehensweise aufgrund der Distributionsverscheidenheit ein wenig anders.

Zur Auflösungsanpassung stehen bisher zwei Möglichkeiten zur Verfügung:

  • lediglich Auflösungsanpassung, verbunden mit etwas Handarbeit: resolution_standalone,
  • ein Paket mit Auflösungsanpassung und nativem (innerhalb einer Linux-VM) Einhängen von Netzlaufwerken.

resolution_standalone

Ziehen Sie das Skript resolution_standalone entweder von der Pseudodiskette /dev/fd1 (s.o.) einer gestarteten VM, direkt per git2) oder direkt3), kopieren es nach /usr/local/bin und sorgen für ein executable-Bit4).

Das weitere Vorgehen ist sehr stark von Ihrer Distribution anhängig. Der übliche Weg5) beim X-Start wäre über Xsetup bzw. bei X-Ende Xreset. Bedauerlicherweise ist nicht nur der Pfad zu Xsetup distributionsabhängig, sondern auch abhängig vom verwendeten Displaymanager, die wieder ihre eigenen Tücken bieten.

openSuse (13.2)

Bereits eingebunden.

Ubuntu und Derivate

Einige Versionen liefern lightdm aus, leider mit mangelhafter Konfiguration6). Prüfen Sie daher, ob die Datei '/etc/lightdm/lightdm.conf.d/50-myconfig.conf' vorhanden ist (ggf. anlegen), und passen sie entsprechend an7)

[SeatDefaults]
autologin-user=student
session-setup-script=/etc/X11/Xsetup
session-cleanup-script=/etc/X11/Xreset

Linux Mint

Linux Mint nutzt mdm. Die zu prüfende Datei wäre in diesem Fall '/etc/mdm/mdm.conf'. Setzen Sie in diese ein, wenn nicht vorhanden:

[daemon]
AutomaticLoginEnable=true
AutomaticLogin=student

Bedauerlicherweise entspricht der mdm nach Auskunft der Mint-Entwickler einem älteren gdm und hat wie dieser seine Mucken. Ein PreSessionScriptDir (Default:/etc/mdm/PreSession/) ist zwar konfigurierbar, doch sucht und startet der mdm in diesem Verzeichnis nur „Default“ (sowie „.0“ und „[hostname]“). Daher sollte ziemlich am Anfang des Default-Skriptes

/usr/local/bin/resolution_standalone &

eingefügt werden.

Xsetup

Editieren Sie die Datei '/etc/X11/Xsetup' bzw. '/etc/X11/Xsetup', bzw. legen sie an, wenn nicht vorhanden, und fügen ein:

#!/bin/sh
/usr/local/bin/resolution_standalone &
Die Datei 'Xsetup' muss ausführbar sein → ggf. 'chmod 755 /etc/X11/Xsetup' ausführen.

Danach sollte sich die Auflösung in den Poolräumen automatisch anpassen.

Paket Auflösungsanpassung, native Netzlaufwerke

Es steht weiterhin eine noch etwas in Entwicklung befindliche Paketlösung zur Verfügung, die sowohl für die automatische Auflösungsanpassung als auch für die native Einbindung der Netzlaufwerke sorgt. Die hierzu verwendeten Skripte werden zur VM-Laufzeit von der Pseudofloppy nachgeladen; zur lokalen Installation ist nur das Skript 'vm_installer' vonnöten. Unterstützt werden systemd-basierte Distributionen; eine Lösung mit initV-/etc/init.d/-Mechanismus ist zwar teilweise inbegriffen, wird jedoch nicht mehr gewartet.

Der Ablauf stellt sich in diesem Fall wie folgt dar:

  • Das Skript 'vm_installer' erzeugt die systemd-Servicedateien 'openslx-resolution.service', 'openslx-mount.service' sowie 'openslx-umount.service' und verlinkt diese in graphical.target.wants, basic.target.wants und shutdown.target. Diese Servicedatei sorgen für das Mounten der Pseudofloppy unter /mnt/diskmount8) und starten die betreffenden Skripte resolution, mnt_shares und umnt_shares.

Dies sollte unter den derzeit unterstützten Distributionen (Liste folgt) direkt funktionieren.

Auflösungsanpassung

Das Skript resolution wartet eine gewisse Zeit auf den X-Server, paßt dessen Auflösung an, und prüft noch eine Weile, ob nach dem Userlogin (etwa von Seiten einer Desktopumgebung) evtl. eine andere, unerwünschte Auflösung gesetzt wird und korrigiert diese.

Native Einbindung Netzlaufwerke

Netzlaufwerke (Home und ggf. gemeinsame Netzlaufwerke) können über die mitgelieferten Linuxskripte nativ innerhalb Linux-VMs ein- und ausgebunden werden, wenn die hierzu notwendigen Angaben vom Grundsystem übermittelt werden.

Sie können überprüfen, wie (Home-)Netzlaufwerke eingebunden werden, wenn Sie den Wert „remapMode“ in der Datei openslx.ini im Grundverzeichnis der gemounteten Pseudofloppy /dev/fd1 betrachten:
  • 0 = Nichts tun.
  • 1 = Home nativ, also innerhalb der VM mounten
  • 2 = Fallback, also nativ probieren, bei Fehler VMWare-shared folder nutzen
  • 3 = VMWare-shared folder nutzen.

Bitte beachten Sie, daß Sie für den VMWare-shared folder-Mechanismus entweder die originalen VMWare-Tools benötigen, oder im Falle der open-vm-tools ein hgfs-Kernelmodul kompilieren müssen!

Aktualisierte Skripte per Konfigmodul

Wenn Sie die in Ihrer Minilinux-Version enthaltenen Skripte vorab aktualisieren oder einfach nur einen Bugfix oder eine Erweiterung einbringen und testen wollen, können Sie die enthaltenen Skripte per „Generisches Modul“ überlagern. Verfahren Sie hierzu wie folgt:

  • Legen Sie in irgendeinem Unterverzeichnis folgende Verzeichnisstruktur an: opt/openslx/vmchooser/data/linux/includes (
    mkdir -p ./opt/openslx/vmchooser/data/linux
  • Kopieren Sie das zu überlagernde Skript in das Unterverzeichnis ./opt/openslx/vmchooser/data/linux;
  • Falls Sie eine der von mnt_shares oder umnt_shares nachgeladenen include-Dateien ändern wollen, erzeugen Sie noch ein Unterverzeichnis 'includes' (hinter dem Verzeichnis 'linux' und legen die geänderte Include-Datei dort ab.
  • Packen Sie die Änderungen ein:
    tar czf floppyskripte.tgz opt/

    und laden die entstandene tgz-Datei per 'Modul hinzufügen', 'Generisches Modul' auf den Satellitenserver und fügen diese der Systemkonfiguration hinzu.

  • Es ist eventuell ratsam, eine eigene Systemkonfiguration der bestehenden nachzubauen (mit gleichen Modulen bestückt), dieser das generische Modul hinzuzufügen und diese abgeleitete Systemkonfiguration per Satellitenserver-Raumkonfiguration (siehe ua. „Raumkonfiguration“) zum Testen nur auf ausgewählten Rechnern / in ausgewählten Räumen starten zu lassen.

Sie finden ein solches generisches-Modul-Archiv übrigens hier.

1)
Eine Angabe, wie Sie das Floppyabbild im Clientsystem finden, dürfte wenig zielführend sein - das Abbild wird jeweils beim Start einer VM erst erstellt.
4)
[sudo] chmod 755 /usr/local/bin/resolution_standalone
5)
Darüber läßt sich natürlich trefflich streiten. Hier wurde der Weg mit root-Rechten und etwas Gewalt begangen, um user-unabhängig beim X-Start bzw. X-Ende zu agieren.
6)
Bug ist Ubuntu bekannt
7)
Bzgl. 'autolog-user student': Autologin in die VM wird empfohlen.
8)
/mnt/diskmount sollten Sie daher in Ihrer VM nicht für andere Zwecke anlegen.
Drucken/exportieren