vmchooser plugin¶
- vmchooser plugin
- Kurzbeschreibung
- Abhängigkeit
- Optionen
- _active_
- _env_
- _xmlpath_
- Installation
- Anwendung
- Allgemeine Information
- Entwickler-Information (_vmchooser_ Programm)
- Daten für den Start einer virtuellen Maschine
- short_description
- long_description
- os
- priority
- image_name
- creator
- phone
- virtualmachine
- active
- pools
- icon
- printers-Knoten
- scanners-Knoten
- username
- hostname
- XML-Datei
- Beispiele zum Aufruf
Ist ein OpenSLX Plugin. Es dient der Auswahl von Desktop-Sessions in virtualisierten Umgebungen. Alternativ zu einer Linux Gnome- oder KDE-Session kann eine Virtualisierungsumgebung wie VMware, (QEMU, Virtual Box, ...) gestartet werden, die einen eigenen Desktop zur Verfügung stellt.
Kurzbeschreibung¶
Erstellt eine Standard-Sitzung, in dem die verfügbaren Sitzungen und Virtualisierte Maschinen (wozu Images und Konfigurationsdateien vorliegen müssen) zur Auswahl angezeigt werden. Bei Doppelklick / klick auf den Button wird die Sitzung / das Image mit dem Kommando in der .desktop-Datei von /usr/share/xsessions via /var/opt/openslx/bin/run-virt.sh gestartet.
Die Liste der angezeigten VM-Sessions wird durch das Skript xmlfilter.sh bestimmt. Dieses nimmt in "$1" den Pfad zur Liste der beschreibenden XMLs und gibt als Ergebnis eine Liste zu interpretierender XML-Dateien mit vollem Pfad aus. Es kann daher in weitem Rahmen an eigene Bedürfnisse angepasst werden.
Das Plugin stellt neben dem vmchooser Binary eine Reihe von internen Skripten (z.B. run-virt.sh) zur Verfügung, die jedoch nicht separat funktionieren. vmchooser kann in zwei Modi laufen:- Bereitstellen einer Auswahlliste
- Direktes Starten einer bestimmten virtuellen Maschine:
vmchooser /var/lib/virt/vmware/vmware65/winxp-img.xml
Das interne Skript run-virt.sh (enthält abstrakte, für alle Virtualisierer gemeinsamen Komponenten) nutzt Plugin-Komponenten, die vom jeweiligen Virtualisierungs-Plugin bereitgestellt werden und unterhalb von /etc/opt/openslx/run-{vmware,qemu-kvm,virtualbox}.include abgelegt sind. Hier werden alle virtualisierer-spezifischen Dinge abgehandelt (siehe hierzu die jeweiligen run-virt.include Dateien der einzelnen Plugins).
Abhängigkeit¶
Dieses Plugin benötigt das desktop Plugin. Sinnvollerweise ist mindestens ein Virtualisierungs-Plugin zusätzlich installiert.
Optionen¶
active¶
Beschreibung:
Aktiviert das Plugin: Bei der Aktivierung in Stage3 wird die .desktop-Datei in das Verzeichnis /etc/X11/session plaziert. Die Aufgabe des Desktop Plugins ist es, dieses Verzeichnis der Session-Suche hinzuzufügen.
Werte:
- 1: aktiviert
- 0: deaktiviert
Standard: 1 (Plugin aktiviert)
env¶
Beschreibung:
Env(ironment) Option hinzugefügt. Diese ist nicht zwingend notwendig und zeigt nur Images an, die zu dieser bestimmten Gruppe gehören.
Werte:
- String
Standard: "default"
xmlpath¶
Beschreibung:
Pfad zu den XMLs in Stage4 (im hochgefahrenen Netzwerk-Client). Hier wird nach beschreibenden XMLs gesucht. Die XMLs werden dann angezeigt und auf Benutzereingabe das asoziierte VM-Image gestartet. Die Syntax der XMLs muss der von
Werte:
- String
Standard: "/var/lib/virt"
Dieses sollte jeweils geändert werden zu "/var/lib/virt/vmware/vmware55" (VM-Player 1) oder "/var/lib/virt/vmware/vmware65" (VM-Player 2.5) ...
Installation¶
Der Aufruf zur Installation:
slxos-export export <vendorOS> <exportType> slxconfig-demuxer
Anwendung¶
Das Plugin setzt sich als Standard-Sitzung in die Login-Manager und bietet eine Auswahl an verfügbaren Sitzungen. Als besonderes Feature reicht es den Benutzernamen (in dem XML-Element <username>) und den Hostname (XML-Element <hostname> und <computername>) in die XML weiter, die durch das vmware-plugin in das virtuelle System weitergereicht wird. Durch Tools wie bootpgm kann man damit beispielsweise den Hostname unter der virtuellen Maschine dynamisch setzen. Mit der Benutzer-Information könnte man weitere Aktionen starten, wie z.B. die richtigen Home-Verzeichnisse einbinden.
Allgemeine Information¶
Dieses Plugin kopiert die default.desktop-Datei nach /etc/X11/session, welche von den Display-Managern geladen wird. Bei Aufruf des Wrapper-Skript wird zur Zeit nur die Option xmlpath an das vmchooser-Programm übergeben.
Entwickler-Information (vmchooser Programm)¶
Das vmchooser-Plugin hat ein grafisches Hilfprogramm, das den phantasievollen Namen vmchoooser trägt und in /opt/openslx/plugin-repo/vmchooser/ liegt.
Bei Aufruf des vmchooser-Hilfsprogramm kann man --help oder -h als Parameter angeben, um sich die Hilfe anzeigen zu lassen.
Aktuell sieht die Ausgabe dann so aus:
SessionChooser Usage:
{-p |--path=} path to vmware (.xml) files
{-l |--lpath=} path to linux session (.desktop) files
{-s |--size=} [widthxheight]
{-v |--version} print out version
{-h |--help} prints help
Der Chooser benutzt Skripte von /var/lib/vmware/runscripts/{printers,scannners}.sh, um die Drucker und Scanner in die jeweilige XML-Datei einzufügen (näheres in "_addPrinters.cxx_":source:openslx-src-tools/vmchooser/trunk/vmchooser/addPrinters.cxx und "_addScanners_":source:openslx-src-tools/vmchooser/trunk/vmchooser/addScanners.cxx). In "_addInfo.cxx_":source:openslx-src-tools/vmchooser/trunk/vmchooser/addInfo.cxx wird der Computername und Benutzer in die XML eingefügt.
Bei der Filterung wird das Skript "_xmlfilter.sh_":source:openslx/trunk/os-plugins/plugins/vmchooser/files/xmlfilter.sh (im selben Verzeichnis wie der vmchooser) ausgeführt, um die XML-Dateien zu filtern. Hier kann beispielsweise unter anderem auch nach dem aktuellen Poolnamen gefiltert werden. Die Ausgabe dieses Skripts sollte ähnlich "ls -1" sein, d.h. eine XML-Datei mit absolutem Pfad in jeder Zeile. Diese XML-Dateien werden dann zur Auswahl angezeigt.
Standardmäßig filtert das "_xmlfilter.sh_":source:openslx/trunk/os-plugins/plugins/vmchooser/files/xmlfilter.sh-Skript die XML-Dateien nach dem XML-Element <slxgroup>, die in Stage3 über das Initramfs übergeben wird (siehe Plugin-Option env). Dieses Element sollte demnach in der XML vorhanden sein, damit der vmchooser überhaupt etwas anzeigt.
Allgemein kann man dieses Filter-Skript als Ersetzung und Erweiterung zu der Option -p[XML-Ordner] sehen. Mit diesem Skript ist es leichter, die Filterkriterien auszuwählen und ermöglicht es auch, mehrere Ordner als XML-Quellen anzugeben.
Mit -l[Linux Session Pfad] können die verfügbaren Linux-Sessions durch Angabe des Pfads bestimmt werden.
Daten für den Start einer virtuellen Maschine¶
Die dem vmchooser vorliegende XML-Datei sollte verschiedene Parameter beinhalten, um einen reibungslosen Start der virtuellen Maschine zu ermöglichen. Hier werden zunächst verschiedene Daten vorgestellt, die in einer validen XML-Datei schon vorhanden sind:
short_description¶
Beschreibung:
Dieser Parameter ist obligatorisch für die Auswahl im vmchooser. Die Daten werden aus dem Attribut param herausgelesen und für den Titel der Session in der Auswahlliste verwendet.
Wert: String
long_description¶
Beschreibung:
Dieser Parameter ist freiwillig. Die Daten werden aus dem Attribut param herausgelesen und für eine Informationsanzeige als Tooltip in der Auswahlliste verwendet.
Wert: String
os¶
Beschreibung: Dieser Wert ist für vmware Pflicht. Vom vmchooser wird es nur ausgelesen, aber nicht verändert. Dieser Wert wird direkt in die vmx-Konfiguration von vmplayer übernommen. Bei unterschiedlichen vmplayer-Versionen treten hier unterschiedliche Werte auf.
Wert: String
Beispiel: winxppro
priority¶
Beschreibung: Falls dieser Wert nicht gefunden wird, wir eine Standardpriorität von 5 angenommen. Hier kann beinflußt werden, auf welcher Position die Image-Einträge angezeigt werden. Ein niedrigerer Wert bedeutet höhere Position in der Auswahlliste im vmchooser.
Wert: Integer
image_name¶
Beschreibung: Der Dateinamen für die Vmware-Image-Datei. Der absolute Pfad vom XML wird vom vmchooser hinzugefügt. Es ist also eine gute Idee, die XML mit relativem Pfadnamen auf die vmware-Images zu versehen. Am besten, die Vmware-Image-Datei befindet sich im selben Ordner wie die XML-Datei.
Wert: String
creator¶
Beschreibung: Der Ersteller des Images. Rein für Informationszwecke. Nicht notwendig für den Betrieb.
Wert: String
email¶
Beschreibung: Die Email des Erstellers. Rein für Informationszwecke. Nicht notwendig für den Betrieb.
Wert: String
phone¶
Beschreibung: Telefon des Erstellers. Rein für Informationszwecke. Nicht notwendig für den Betrieb.
Wert: String
h3.enable3d
Beschreibung: Konfiguration für vmware (virtualbox). Aktiviert die 3D-Unterstützung in den virtuellen Maschinen.
Wert: Bool (true|false)
virtualmachine¶
Beschreibung: Welche virtuelle Maschine soll für das Image verwendet werden. Üblicherweise vmware beim vmware-plugin.
Wert: String (vmware|virtualbox|...)
active¶
Beschreibung: Wert, ob das Image aktiv ist. Nicht in vmchooser berücksichtigt, kann aber leicht in xmlfilter.sh hinzugefügt werden.
Wert: Bool (true|false)
pools¶
Beschreibung: Eine durch Leerzeichen getrennte Liste der Umgebungen, in denen dieses Image zur Auswahl angezeigt werden soll. (siehe auch Option vmchooser::env)
Wert: String
icon¶
Beschreibung: Das Icon zum Anzeigen. Falls der Eintrag in <os param="*[wW]in*"/> existiert, wird ein Windows(tm)-Symbol angezeigt. Andernfalls gibt es die selbsterklärenden Möglichkeiten, das Symbol zu ändern (siehe Werte). Ausnahme: Falls <os param="linux"/> eingetragen ist, wird ein Linux-Symbol angezeigt, es sei denn, im <icon>-Wert steht eines von "ubuntu","suse","gentoo".
Wert: String (Eines aus {"ubuntu","suse","gentoo","macos","bsd"}).
Die folgenden Werte werden beim Ausführen von vmchooser in eine dynamisch generierte XML-Datei hineingeschrieben (/tmp/runXXXXX.xml). Die neuen Werte werden dabei abhängig von Hostnamen, Benutzer und verschiedene Skripte generiert und sind für die Weitergabe in die Images gedacht.
printers-Knoten¶
Beschreibung: Enthält eine Menge von Kind-Knoten namens printer, die jeweils ein Attribut name - einen Druckernamen - und path - meist den öffentlichen Freigabe-Pfad zum Drucker - beinhalten. Als Knoten-Inhalt kann noch eine Beschreibung eingegeben werden.
vmchooser ruft zur Beschaffung der notwendigen Daten das Skript /etc/opt/openslx/printer.sh auf. Schon vorhandene Knoten werden aber einfach übernommen. Das Skript printer.sh in /etc/opt/openslx/ sollte dem vmchooser folgendes Format übergeben (wobei [TAB] ein Tabulator-Zeichen bedeutet):
PFAD[TAB]DRUCKER[TAB]BESCHREIBUNG
Wert: <printer name="Druckername" path="\\Pfad\zu\Drucker">Beschreibung</printer>-Knoten
scanners-Knoten¶
Beschreibung: Enthält eine Menge von Kind-Knoten namens scanner, die jeweils ein Attribut name - einen Scannernamen - und path - meist den öffentlichen Freigabe-Pfad zum Scanner - beinhalten. Als Knoten-Inhalt kann noch eine Beschreibung eingegeben werden. Das Skript scanner.sh in /etc/opt/openslx/ sollte dem vmchooser folgendes Format übergeben (wobei [TAB] ein Tabulator-Zeichen bedeutet):
PFAD[TAB]SCANNER[TAB]BESCHREIBUNG
vmchooser ruft zur Beschaffung der notwendigen Daten das Skript /etc/opt/openslx/printer.sh auf. Schon vorhandene Knoten werden aber einfach übernommen.
Wert: <scanner name="Scannername" path="\\Pfad\zu\Scanner">Beschreibung</scanner>-Knoten
username¶
Beschreibung: Benutzernamen zur Weitergabe in die virtuelle Maschine
Wert: aktueller Benutzername
hostname¶
Beschreibung: Hostname zur Weitergabe in die virtuelle Maschine
Wert: aktueller Hostname
XML-Datei¶
Siehe auch folgende Seite für os param bei VMware.
<?xml version="1.0" encoding="utf-8"?>
<settings>
<entry>
<!-- like the names of the virtualization plugins "vmware", "virtualbox", "qemukvm" -->
<virtualmachine param="vmware"/>
<!-- VM-name with ending .vmdk, .img, .vdi, .qcow2 -->
<image_name param="vm-image.vmdk"/>
<!-- sort after parameters then alphabet, values 0(top) - 9(bottom) -->
<priority param="5"/>
<!-- title shown in the menu -->
<title param="My VM Image"/>
<!-- description shown when image is chosen -->
<description>Image for lectures with a lot of software: office, ...
</description>
<!-- if active="true" the image is selectable via vmchooser -->
<active param="true"/>
<!-- in which environment this image will be selectable via vmchooser -->
<environment param="default"/>
<!-- image locked with a password? -->
<locked param="false"/>
<creator param="Your Name"/>
<email param="your@e-mail.add"/>
<phone param="0123-12345678"/>
<!-- when should this image be deactivated automatically -->
<valid_until param="DD-MM-YY"/>
<!-- type of the OS: if you do not know use "other" -->
<!-- vmware refer to: http://sanbarrow.com/vmx/vmx-guestos.html -->
<os param="winxppro"/>
<!-- "nat", "bridged", "hostonly" -->
<network param="nat"/>
<!-- use a different virtual network card than default -->
<netcard param="e1000"/>
<!-- activate serial port: "ttyS0", "auto" (recommended) -->
<serialport param="false"/>
<!-- activate parallel port: "parport0" (recommended) -->
<parport param="false"/>
<!-- enable 3D support -->
<enable3d param="true"/>
<!-- which shared folders should be connected -->
<shared_folders param="true">
<!-- name="Home" path="/home/$USER" for internal VMware sf -->
<shared_folder name="" path="" pass=""></shared_folder>
</shared_folders>
<!-- which printers should be connected -->
<printers>
<printer name="" path="">Human readable description</printer>
</printers>
<!-- which scanners should be connected -->
<scanners>
<scanner name="" path="">Description</scanner>
</scanners>
<!-- added automatically through vmchooser when started
<username param="user-id"/>
-->
<!-- obsolete, maybe for future implementations
<xdm param="false">
</xdm>
-->
<!-- recently added - Icon to display in list
values: macos,bsd,gentoo,ubuntu,suse
vmware images with <os param="*[Ww]in*"/> get windows symbol
vmware images with <os param="linux"/> defaults to linux symbol, overridden by <icon> (ubuntu/suse/gentoo)
vmware images with <os param="xyz"/> defaults to vmware symbol, overridden by <icon> (all values)
-->
<icon param="*****"/>
</entry>
</settings>
Beispiele zum Aufruf¶
Das vmchooser-Programm kann durch einen einfachen Aufruf mit der XML-Datei als Argument aufgerufen werden, um beispielsweise eine Vmware-Image einfach auszuführen. Dabei werden alle Optionen herausgelesen und wichtige Informationen in eine temporäre XML-Datei geschrieben, um sie in das virtuelle System weiterzugeben. Es kann somit jegliche Art von Information in das Gast-System weitergegeben werden (B:\config.xml unter Windows).
Bei dieser Art von Aufruf wird keine Auswahlliste angezeigt.
/var/opt/openslx/bin/vmchooser /pfad/zu/mein_img_config.xml
Wenn man die Auswahlliste testen will - mit seinem Image -, muss man die Datei /etc/opt/openslx/vmchooser-stage3.conf anpassen, damit der Wert vmchooser_xmlpath auf den gewollten Pfad zeigt. Bemerke: vmchooser_env muss auch auf die richtige Gruppe gestellt sein (die Gruppe, die auch in dem <env>-Wert in der XML steht. Alternativ kann man für den Pfad einfach nur die p|path-Option verwenden
/var/opt/openslx/bin/vmchooser --path=/pfad/zu/meinen_xmls/