summaryrefslogtreecommitdiffstats
path: root/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux
diff options
context:
space:
mode:
authorChristian Rößler2017-04-24 17:18:42 +0200
committerChristian Rößler2017-04-24 17:18:42 +0200
commit40cbdf108ab1d85c69fcfd1d506340b7b102f40c (patch)
tree855a4357b517de1239b5e8d7a9afe755bbebe1b6 /core/modules/run-virt/data/opt/openslx/vmchooser/data/linux
parent[pam] add missing content package (diff)
downloadmltk-40cbdf108ab1d85c69fcfd1d506340b7b102f40c.tar.gz
mltk-40cbdf108ab1d85c69fcfd1d506340b7b102f40c.tar.xz
mltk-40cbdf108ab1d85c69fcfd1d506340b7b102f40c.zip
[run-virt] Floppy (fd1)-scripts: Some more testing, some hardening
Diffstat (limited to 'core/modules/run-virt/data/opt/openslx/vmchooser/data/linux')
-rw-r--r--core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/LIESMICH11
-rw-r--r--core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/README13
-rw-r--r--core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/10_functions.inc21
-rwxr-xr-xcore/modules/run-virt/data/opt/openslx/vmchooser/data/linux/resolution17
-rwxr-xr-xcore/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_installer107
5 files changed, 122 insertions, 47 deletions
diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/LIESMICH b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/LIESMICH
index 7b526a9a..c9335628 100644
--- a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/LIESMICH
+++ b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/LIESMICH
@@ -2,26 +2,29 @@ Dieses Paket besteht aus folgenden Skripten:
vm_installer: Dieses Skript einmalig in einer lokalen, permanenten (also
nicht innerhalb des Poolsystems) Virtuellen Maschine ausführen.
- Es schreibt eine drei systemd-Servicedateien und verlinkt diese,
- um beim Systemstart foglende Skripte zu starten:
+ Es schreibt eine systemd-Servicedateien und verlinkt diese,
+ um beim Systemstart folgende Skripte zu starten:
resolution: (after display-manager.service): Dieses Skript wartet eine
gewisse Zeit, ob ein X-Server gestartet wurde, ändert
anschließend die Auflösung entsprechend der vom Basissystem
übergebenen Angabe in openslx.ini und überwacht diese eine
- gewisse Zeit lang.
+ gewisse Zeit lang, um nachträgliche Auflösungsänderungen,
+ zB. durch gespeicherte Einstellungen des Displaymanagers,
+ zu erkennen und rückzusetzen.
mnt_shares: (after basic.target): Wertet die Einträge remapMode (sowie
createMissingRemap, noch zu implementieren) der Datei
openslx.ini aus, und hängt anhand des per remapMode gegebenen
Wertes die in shares.dat angegebenen Netzlaufwerke ein. Die
- (evtl. nötige) Authentizizierung wird verschlüsselt vom
+ (evtl. nötige) Authentifizierung wird verschlüsselt vom
Grundsystem übergeben.
umnt_shares: (Before shutdown.target): Hängt gegebene Laufwerke beim
Herunterfahren der VM wieder aus.
+
resolution_standalone: Einzelstehende Version des resolution-Skriptes, die
keine Vorarbeiten seitens systemd bzw. vm_runtime benötigt.
Für geeignete Einbindung innerhalb der VM (Xsetup/Xreset)
diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/README b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/README
index 2476126b..53576259 100644
--- a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/README
+++ b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/README
@@ -1,19 +1,24 @@
-This package consists of the following scripts:
+This package consists of following scripts:
vm_installer: This script is to be started once in a local, permanent (so
not within the pool system environment) virtual machine. It
- writes three systemd service files and links them, so the
- scripts will be started at system startup resp. shutdown:
+ writes three systemd service files and links them, so
+ following scripts will be started at system startup resp.
+ shutdown:
resolution: (after display-manager.service): Sets resolution within the
virtual machine according to base system resolution given via
- config file openslx.ini, and re-checks it for some time..
+ config file openslx.ini, and re-checks it for some time.
mnt_shares: (after basic.target): Reads entries remapMode (and
createMissingRemap, todo) from the file openslx.ini, and
mounts the shares given by shares.dat according to remapMode.
mounts therein given network shares.
+umnt_shares: (Before shutdown.target): Umounts given shares at virtual
+ machine shutdown time .
+
+
resolution_standalone: Standalone version of resolution sctipt. Needs no
preliminary work done by systemd or vm_runtime.
One has to embed/start it via adequate means by hand
diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/10_functions.inc b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/10_functions.inc
index 97767c51..cc5246ee 100644
--- a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/10_functions.inc
+++ b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/10_functions.inc
@@ -34,15 +34,18 @@ function mounter()
logger "openslx sharemapper: $3 already mounted."
AUSGANG=2
else
- mount $1 $2 $3 2>/dev/null 1>&2
- ERR=$?
- if [ "$ERR" -gt 0 ]; then
- logger "openslx sharemapper: could not mount ${2} to ${3}."
- AUSGANG=1
- else
- logger "openslx sharemapper: ${2} mounted to ${3}."
- AUSGANG=0
- fi
+ x=2
+ while ! mount $1 $2 $3 2>/dev/null 1>&2; do
+ sleep $x
+ if [ "$x" -gt 10 ]; then
+ AUSGANG=1
+ logger "openslx sharemapper: could not mount ${2} to ${3}."
+ break
+ fi
+ let x=x+2
+ done
+ logger "openslx sharemapper: ${2} mounted to ${3}." # Todo: Schöner schreiben:)
+ AUSGANG=0
fi
return $AUSGANG
}
diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/resolution b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/resolution
index a8942b9f..a4811355 100755
--- a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/resolution
+++ b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/resolution
@@ -42,23 +42,22 @@ fi
# Das ist mitunter ein Problem, da die richtige zu finden - Distroabhängig!
# Hier ein Beispiel für openSuse 13.2, sollte auch für Debian, Ubuntu, Redhat usw. laufen:.
# XAUTHDATEI=$(ps aux | grep -o "root.*X.* \-auth *[^ ]*" | awk '{print $NF}')
-
-for wartezeit in 0 1 2 3 5 10 10 0 ende; do
+for wartezeit in 1 2 3 5 10 10 0 ende; do
[ "$wartezeit" = "ende" ] && { logger "openslx resolution utility: XAUTHFILE not found. Exiting." ; exit 1; }
XAUTHORITY=$(ps aux | grep -o "root.*X.* \-auth *[^ ]*" | awk '{print $NF}')
[ -n "${XAUTHORITY}" ] && break
sleep $wartezeit
done
-
logger "openslx resolution utility: XAUTHFILE found."
# Zu verbessern: Der Name des Verbundenen ist nicht immer bekannt. Daher nehmen wir das
-# erste 'connected' in der Ausgabe xrandrs:
-AUSGABE=$(DISPLAY="${DISPLAY}" XAUTHORITY="${XAUTHORITY}" xrandr -q|grep -m 1 " connected "|awk '{print $1}')
-if [ -z "$AUSGABE" ]; then
- logger "openslx resolution utility: Could not detect output device. Exiting."
- exit 1
-fi
+# erste 'connected' in der Ausgabe xrandrs Und warten evtl. ein Weilchen)::
+for wartezeit in 1 1 1 2 0 ende; do
+ [ "$wartezeit" = "ende" ] && { logger "openslx resolution utility: Could not detect output device. Exiting." ; exit 1; }
+ AUSGABE=$(DISPLAY="${DISPLAY}" XAUTHORITY="${XAUTHORITY}" xrandr -q|grep -m 1 " connected "|awk '{print $1}')
+ [ -n "$AUSGABE" ] && break
+ sleep $wartezeit
+done
# Pruefen, ob xrand eine passende modeline ausgibt:
if [ "$(DISPLAY=${DISPLAY} XAUTHORITY=${XAUTHORITY} xrandr | grep -c ${RESOLUTION})" -eq 0 ]; then
diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_installer b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_installer
index 323ed0a4..240c0a27 100755
--- a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_installer
+++ b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_installer
@@ -1,5 +1,7 @@
#!/bin/bash
+# set -x
+
PS=$(which ps)
GREP=$(which grep)
LOGGER=$(which logger)
@@ -18,6 +20,25 @@ case $(${PS} --pid 1 -o comm h) in
else
SERVICEDIR=/usr/lib/systemd/system/
fi
+
+ if [ -L "${SERVICEDIR}/graphical.target.wants/${SERVICEMOUNT}" ] \
+ || [ -L "${SERVICEDIR}/graphical.target.wants/${SERVICEUMOUNT}" ] \
+ || [ -L "${SERVICEDIR}/graphical.target.wants/${SERVICERESOLUTION}" ]; then
+ while [ "$RESCRIPT" != "y" ] && [ "$RESCRIPT" != "n" ]; do
+ RESCRIPTDEF=y
+ read -e -p "There seems to an older install. Delete (y/n, Default is $RESCRIPTDEF, Ctrl-C to exit): " RESCRIPT
+ RESCRIPT="${RESCRIPT:-$RESCRIPTDEF}"
+ done
+ fi
+
+ if [ "${RESCRIPT}" == "y" ]; then
+ # Just unlink stuff...
+ echo "Deleting old links..."
+ unlink "${SERVICEDIR}/graphical.target.wants/${SERVICEMOUNT}" 2>/dev/null
+ unlink "${SERVICEDIR}/shutdown.target.wants/${SERVICEUMOUNT}" 2>/dev/null
+ unlink "${SERVICEDIR}/basic.target.wants/${SERVICERESOLUTION}" 2>/dev/null
+ fi
+
echo "openslx praeinstaller: installing systemd service (mounter) to ${SERVICEDIR}/${SERVICEMOUNT}."
cat <<-HEREDOC > "$SERVICEDIR"/"$SERVICEMOUNT"
[Unit]
@@ -50,30 +71,74 @@ case $(${PS} --pid 1 -o comm h) in
RemainAfterExit=no
THEREDOC
- echo "openslx praeinstaller: installing systemd service (resolution utility) to ${SERVICEDIR}/${SERVICERESOLUTION}."
- cat <<-THEREDOC > "$SERVICEDIR"/"${SERVICERESOLUTION}"
- [Unit]
- Description=openSLX resolution utility
- After=display-manager.service
-
- [Service]
- Type=oneshot
- ExecStartPre=${MKDIR} -p /mnt/diskmount
- ExecStartPre=-${MOUNT} /dev/fd1 /mnt/diskmount
- ExecStart=${LOGGER} "openslx service file: resolution utility started."
- ExecStart=${MOUNTDIR}/linux/resolution
- ExecStart=${LOGGER} "openslx service file: done."
- RemainAfterExit=yes
- THEREDOC
+# This bloc was meant for a resolution setting alternative via xorg.conf.d. As this did not work on time, it's
+# just commented for now due to programmer's laziness, who was too lazy to store it elsewhere.
+# echo
+# echo "openslx praeinstaller: Which resolution script to install?"
+# echo
+# echo "There are two possibilies:"
+# echo ""
+# echo '1) A script which waits until the xserver started, then checks for possible'
+# echo ' modelines (writes one if no sufficient modeline is detected, and waits for'
+# echo ' some time afterwards whether resolution changes again (eg. via display manager'
+# echo ' or such stuff. Fairly stable no more XSetup/Xreset patching.'
+# echo
+# echo '2) Just a screen configuration dropped to xorg.conf.d, which restricts'
+# echo ' possible screen resolutions to just one. This may give trouble when screen,'
+# echo ' monitor etc. are hard-wired elsewhere (xorg.conf, xorg.conf.d).'
+# echo
+#
+# while [ "$RESCRIPT" != "1" ] && [ "$RESCRIPT" != "2" ]; do
+# RESCRIPTDEF=1
+# read -e -p "Well, which one do you choose? (1/2, Default is $RESCRIPTDEF): " RESCRIPT
+# RESCRIPT="${RESCRIPT:-$RESCRIPTDEF}"
+# done
+#
+# case $RESCRIPT in
+# 1) echo "openslx praeinstaller: installing systemd service (resolution utility) to ${SERVICEDIR}/${SERVICERESOLUTION}."
+ echo "openslx praeinstaller: installing systemd service (resolution utility) to ${SERVICEDIR}/${SERVICERESOLUTION}."
+ cat <<-SOMEWHEREDOC > "$SERVICEDIR"/"${SERVICERESOLUTION}"
+ [Unit]
+ Description=openSLX resolution utility
+ After=display-manager.service
+ [Service]
+ Type=oneshot
+ ExecStartPre=${MKDIR} -p /mnt/diskmount
+ ExecStartPre=-${MOUNT} /dev/fd1 /mnt/diskmount
+ ExecStart=${LOGGER} "openslx service file: resolution utility started."
+ ExecStart=${MOUNTDIR}/linux/resolution
+ ExecStart=${LOGGER} "openslx service file: done."
+ RemainAfterExit=yes
+ SOMEWHEREDOC
+# ;;
+# 2) echo "openslx praeinstaller: installing systemd service (xorg.conf.d entry) to ${SERVICEDIR}/${SERVICERESOLUTION}."
+# cat <<-THEREDOC > "$SERVICEDIR"/"${SERVICERESOLUTION}"
+# [Unit]
+# Description=openSLX xorg.conf.d entry
+# Before=display-manager.service
+# [Service]
+# Type=oneshot
+# ExecStartPre=${MKDIR} -p /mnt/diskmount
+# ExecStartPre=-${MOUNT} /dev/fd1 /mnt/diskmount
+# ExecStart=${LOGGER} "openslx service file: resolution utility started."
+# ExecStart=${MOUNTDIR}/linux/xorgconf
+# ExecStart=${LOGGER} "openslx service file: done."
+# RemainAfterExit=yes
+# THEREDOC
+# ;;
+# *) echo "openslx praeinstaller: This should not have happened: RESCRIPT ($RESCRIPT) not set!"
+# exit 1
+# ;;
+#esac
- [ ! -d /etc/systemd/system/graphical.target.wants ] && mkdir /etc/systemd/system/graphical.target.wants 2>/dev/null
- [ ! -d /etc/systemd/system/basic.target.wants ] && mkdir /etc/systemd/system/basic.target.wants 2>/dev/null
- [ ! -d /etc/systemd/system/shutdown.target.wants ] && mkdir /etc/systemd/system/shutdown.target.wants 2>/dev/null
+ [ ! -d "$SERVICEDIR"/graphical.target.wants ] && mkdir "$SERVICEDIR"/graphical.target.wants 2>/dev/null
+ [ ! -d "$SERVICEDIR"/basic.target.wants ] && mkdir "$SERVICEDIR"/basic.target.wants 2>/dev/null
+ [ ! -d "$SERVICEDIR"/shutdown.target.wants ] && mkdir "$SERVICEDIR"/shutdown.target.wants 2>/dev/null
- ln -s "${SERVICEDIR}"/"${SERVICEMOUNT}" /etc/systemd/system/graphical.target.wants/"${SERVICEMOUNT}"
- ln -s "${SERVICEDIR}"/"${SERVICEUMOUNT}" /etc/systemd/system/shutdown.target.wants/"${SERVICEUMOUNT}"
- ln -s "${SERVICEDIR}"/"${SERVICERESOLUTION}" /etc/systemd/system/basic.target.wants/"${SERVICERESOLUTION}"
+ ln -s "${SERVICEDIR}"/"${SERVICEMOUNT}" "$SERVICEDIR"/graphical.target.wants/"${SERVICEMOUNT}"
+ ln -s "${SERVICEDIR}"/"${SERVICEUMOUNT}" "$SERVICEDIR"/shutdown.target.wants/"${SERVICEUMOUNT}"
+ ln -s "${SERVICEDIR}"/"${SERVICERESOLUTION}" "$SERVICEDIR"/basic.target.wants/"${SERVICERESOLUTION}"
echo "openslx praeinstaller: doing systemd reload."
systemctl daemon-reload