summaryrefslogtreecommitdiffstats
path: root/remote
diff options
context:
space:
mode:
authorroot2016-05-25 10:35:26 +0200
committerroot2016-05-25 10:35:26 +0200
commit111adbfe6603cf7122b57d092abe9553e2815913 (patch)
treedecdd0e7b241ce0f37033a468f5e54a649f5f7da /remote
parent[rfs-stage32] Use proper variable in conf (diff)
parent[pvs-fr] Konfig -114 (diff)
downloadtm-scripts-111adbfe6603cf7122b57d092abe9553e2815913.tar.gz
tm-scripts-111adbfe6603cf7122b57d092abe9553e2815913.tar.xz
tm-scripts-111adbfe6603cf7122b57d092abe9553e2815913.zip
Merge branch 'master' of git://git.openslx.org/openslx-ng/tm-scripts
Diffstat (limited to 'remote')
-rwxr-xr-xremote/modules/kdm-theme-bwlp/data/opt/openslx/scripts/systemd-kdm_hwinfo_warnings21
-rw-r--r--remote/modules/kernel-vanilla/module.conf2
-rwxr-xr-xremote/modules/pvs2/data/opt/openslx/bin/pvsstartup15
-rwxr-xr-xremote/modules/pvs2/data/opt/openslx/scripts/setup-pvsmgr2
-rwxr-xr-xremote/modules/pvs2/data/opt/openslx/vmchooser/sessionstart.d/50-PVSclient4
-rw-r--r--remote/modules/pvs2/module.build22
-rw-r--r--remote/modules/pvs2/module.conf6
-rw-r--r--remote/modules/pvs2/module.conf.ubuntu7
-rwxr-xr-xremote/modules/run-virt/data/opt/openslx/scripts/systemd-mount_vm_store8
-rw-r--r--remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/50_postliminaries.inc21
-rw-r--r--remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/50_umounter.inc12
-rwxr-xr-xremote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/umnt_shares40
-rwxr-xr-xremote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_installer110
-rwxr-xr-xremote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_runtime103
14 files changed, 283 insertions, 90 deletions
diff --git a/remote/modules/kdm-theme-bwlp/data/opt/openslx/scripts/systemd-kdm_hwinfo_warnings b/remote/modules/kdm-theme-bwlp/data/opt/openslx/scripts/systemd-kdm_hwinfo_warnings
index 877a8c73..b542fabb 100755
--- a/remote/modules/kdm-theme-bwlp/data/opt/openslx/scripts/systemd-kdm_hwinfo_warnings
+++ b/remote/modules/kdm-theme-bwlp/data/opt/openslx/scripts/systemd-kdm_hwinfo_warnings
@@ -20,30 +20,35 @@ build_replacement_xml() {
. "/run/hwinfo"
local CONTACT_RZ=
# Warning: add_replace_xml doesn't escape <>& (XML), and also doesn't escape , and & (sed), so e.g. < should be written as \&lt;
+ # Also don't use # as it's the sed delimiter
if [ "$HW_KVM" = "DISABLED" ]; then
- add_replace_xml "ff0000" "64Bit-Gast-Support (VT-x oder AMD-V) ist im BIOS deaktiviert. 64Bit VMs können nicht gestartet werden."
+ add_replace_xml "ff0000" "* 64Bit-Gast-Support (VT-x oder AMD-V) ist im BIOS deaktiviert. 64Bit VMs können nicht gestartet werden."
CONTACT_RZ=jau
elif [ "$HW_KVM" = "UNSUPPORTED" ]; then
- add_replace_xml "000000" "CPU hat keinen 64Bit-Gast-Support (VT-x oder AMD-V). 64Bit VMs können nicht gestartet werden."
+ add_replace_xml "000000" "* CPU hat keinen 64Bit-Gast-Support (VT-x oder AMD-V). 64Bit VMs können nicht gestartet werden."
fi
if [ -n "$HW_MBRAM" ] && [ "$HW_MBRAM" -lt 3400 ]; then
local GB=$(( ( HW_MBRAM + 300 ) / 1024 ))
- add_replace_xml "000000" "Dieser PC hat wenig RAM (${GB}GB). Die Leistung von VM-Sitzungen wird nicht optimal sein."
+ add_replace_xml "000000" "* Dieser PC hat wenig RAM (${GB}GB). Die Leistung von VM-Sitzungen wird nicht optimal sein."
fi
if [ "$HW_ID44" = "0" ]; then
- add_replace_xml "000000" "Keine ID44-Partition gefunden. VMs bekommen wenig RAM zugewiesen."
+ add_replace_xml "000000" "* Keine ID44-Partition gefunden. VMs bekommen wenig RAM zugewiesen."
if [ "$HW_HDDCOUNT" = "0" ]; then
- add_replace_xml "000000" " * Keine Festplatte erkannt; eine Festplatte wird empfohlen, wenn Sie VMs nutzen wollen"
+ add_replace_xml "000000" " Keine Festplatte erkannt; eine Festplatte wird empfohlen, wenn Sie VMs nutzen wollen."
elif [ -n "$HW_HDDCOUNT" ]; then
CONTACT_RZ=klar
fi
if [ -n "$HW_MBRAM" ] && [ "$HW_MBRAM" -lt 4500 ]; then
- add_replace_xml "ff0000" " * Da der PC wenig RAM hat, ist die Einrichtung einer ID44-Partition dringend zu empfehlen"
+ add_replace_xml "ff0000" " Da der PC wenig RAM hat, ist die Einrichtung einer ID44-Partition dringend zu empfehlen."
fi
elif [ -n "$HW_ID44" ] && [ "$HW_ID44" -lt 10000 ]; then
- add_replace_xml "000000" "Die ID44-Partition ist sehr klein. VM-Sitzungen könnten nach einiger Zeit aus Speichermangel abstürzen."
+ add_replace_xml "000000" "* Die ID44-Partition ist sehr klein. VM-Sitzungen könnten nach einiger Zeit aus Speichermangel abstürzen."
CONTACT_RZ=fjeden
fi
+ if ! awk '{print $2}' /proc/mounts | grep -q '^/mnt/vmstore$'; then
+ add_replace_xml "ff0000" "* Der VM-Store konnte nicht eingehängt werden. VMs können nicht gestartet werden."
+ add_replace_xml "ff0000" " Versuchen Sie das Problem zu lösen, indem Sie den Computer neu starten."
+ fi
if [ -n "$CONTACT_RZ" ]; then
add_replace_xml "000000" " -- "
add_replace_xml "000000" " -- Wenden Sie sich ggf. an den bwLehrpool-Support Ihres Rechenzentrums -- "
@@ -52,7 +57,7 @@ build_replacement_xml() {
add_replace_xml() {
[ -z "$DATA" ] && DATA=$(echo "$TEMPLATE" | sed "s,_COLOR_,#000000,;s,_TEXT_,Hinweise für den Admin/Hardware-Betreuer:,")
- DATA="$DATA $(echo "$TEMPLATE" | sed "s,_COLOR_,#$1,;s,_TEXT_,$2,")"
+ DATA="$DATA $(echo "$TEMPLATE" | sed "s,_COLOR_,#$1,;s#_TEXT_#$2#")"
}
diff --git a/remote/modules/kernel-vanilla/module.conf b/remote/modules/kernel-vanilla/module.conf
index 1fee4ea8..9d057125 100644
--- a/remote/modules/kernel-vanilla/module.conf
+++ b/remote/modules/kernel-vanilla/module.conf
@@ -1,5 +1,5 @@
REQUIRED_BINARIES=""
REQUIRED_LIBRARIES=""
REQUIRED_DIRECTORIES=""
-REQUIRED_KERNEL="4.4.8"
+REQUIRED_KERNEL="4.4.10"
REQUIRED_GIT="git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git"
diff --git a/remote/modules/pvs2/data/opt/openslx/bin/pvsstartup b/remote/modules/pvs2/data/opt/openslx/bin/pvsstartup
new file mode 100755
index 00000000..def24a81
--- /dev/null
+++ b/remote/modules/pvs2/data/opt/openslx/bin/pvsstartup
@@ -0,0 +1,15 @@
+#!/bin/ash
+
+# TODO UNTESTED!
+timediff=5
+while [ $timediff -gt 3 ]; do
+ start="$(date +%s)"
+ pvsclient $@
+ ret=$?
+ end="$(date +%s)"
+ /opt/openslx/pvs2/unlock.sh
+ [ "$ret" == "0" ] && break
+ timediff=$(( end - start ))
+done
+
+
diff --git a/remote/modules/pvs2/data/opt/openslx/scripts/setup-pvsmgr b/remote/modules/pvs2/data/opt/openslx/scripts/setup-pvsmgr
index dedb0995..7a6c13d9 100755
--- a/remote/modules/pvs2/data/opt/openslx/scripts/setup-pvsmgr
+++ b/remote/modules/pvs2/data/opt/openslx/scripts/setup-pvsmgr
@@ -1,4 +1,4 @@
#!/bin/ash
openbox &
-exec /opt/openslx/bin/pvsmgr
+exec /opt/openslx/bin/pvsmgr --manager-only
diff --git a/remote/modules/pvs2/data/opt/openslx/vmchooser/sessionstart.d/50-PVSclient b/remote/modules/pvs2/data/opt/openslx/vmchooser/sessionstart.d/50-PVSclient
index 0ad739e0..86f26a17 100755
--- a/remote/modules/pvs2/data/opt/openslx/vmchooser/sessionstart.d/50-PVSclient
+++ b/remote/modules/pvs2/data/opt/openslx/vmchooser/sessionstart.d/50-PVSclient
@@ -19,8 +19,8 @@ if [ -n "${PVSMGR_SESSION_CMD}" ]; then
fi
# If the ENV var PVS has been set by vmchooser start pvsclient
if [ -n "$PVS_AUTO_CONNECT" -a "$PVS_AUTO_CONNECT" == "TRUE" ]; then
- pvsclient --auto &
+ pvsstartup --auto &
else
- pvsclient &
+ pvsstartup &
fi
exit 0
diff --git a/remote/modules/pvs2/module.build b/remote/modules/pvs2/module.build
index 8277aa1c..70b88350 100644
--- a/remote/modules/pvs2/module.build
+++ b/remote/modules/pvs2/module.build
@@ -5,25 +5,33 @@ fetch_source() {
}
build() {
-
local SRCDIR="${MODULE_DIR}/src/"
- local BUILDDIR="$SRCDIR/build/"
- local DESTDIR="$MODULE_BUILD_DIR/opt/openslx/bin"
+ local BUILDDIR="${SRCDIR}/build/"
+ local DESTDIR="${MODULE_BUILD_DIR}/opt/openslx/bin"
# first activate qt 4
activate_qt 4
- mkdir -p "$DESTDIR" || perror "Could not mkdir $DESTDIR!"
- mkdir -p "$BUILDDIR" || perror "Could not mkdir $BUILDDIR!"
- cd "$BUILDDIR" || perror "Could not cd to $BUILDDIR!"
+ mkdir -p "${DESTDIR}" || perror "Could not mkdir ${DESTDIR}!"
+ mkdir -p "${BUILDDIR}" || perror "Could not mkdir ${BUILDDIR}!"
+ cd "${BUILDDIR}" || perror "Could not cd to ${BUILDDIR}!"
pinfo "Running cmake"
cmake .. || perror "'cmake ..' failed."
pinfo "Running make"
make || perror "'make' failed."
- mv pvsmgr pvsclient $DESTDIR
+ mv pvsmgr pvsclient "${DESTDIR}"
cd - > /dev/null
+ # copy external scripts under 'sample_configuration'
+ mkdir -p "${MODULE_BUILD_DIR}/opt/openslx/pvs2/"
+ if [ -d "${SRCDIR}/sample_configuration" ]; then
+ cp ${SRCDIR}/sample_configuration/*.sh "${MODULE_BUILD_DIR}/opt/openslx/pvs2/" \
+ || perror "Could not copy external scripts to '${MODULE_BUILD_DIR}/opt/openslx/pvs2/'!"
+ chmod +x ${MODULE_BUILD_DIR}/opt/openslx/pvs2/*.sh \
+ || perror "Could not set executable bit for external scripts."
+ fi
+
# needed for copying REQUIRED_CONTENT_PACKAGES to build/
COPYLIST="list_dpkg_output"
[ -e "$COPYLIST" ] && rm "$COPYLIST"
diff --git a/remote/modules/pvs2/module.conf b/remote/modules/pvs2/module.conf
index 9ef50afd..5e7a9a6f 100644
--- a/remote/modules/pvs2/module.conf
+++ b/remote/modules/pvs2/module.conf
@@ -2,6 +2,12 @@ REQUIRED_GIT="git://git.openslx.org/pvs2.git"
REQUIRED_BINARIES="
pvsmgr
pvsclient
+ xinput
+ wmctrl
+"
+REQUIRED_DIRECTORIES="
+ /opt/openslx/pvs2/
+ /usr/lib/
"
REQUIRED_LIBRARIES="
"
diff --git a/remote/modules/pvs2/module.conf.ubuntu b/remote/modules/pvs2/module.conf.ubuntu
index 4dcf2794..8a48ec93 100644
--- a/remote/modules/pvs2/module.conf.ubuntu
+++ b/remote/modules/pvs2/module.conf.ubuntu
@@ -1,11 +1,12 @@
REQUIRED_INSTALLED_PACKAGES="
libqt4-dev
libvncserver-dev
+ xinput
+ wmctrl
"
REQUIRED_CONTENT_PACKAGES="
libqt4-svg
libqtgui4
-"
-REQUIRED_DIRECTORIES="
- /usr/lib/
+ xinput
+ wmctrl
"
diff --git a/remote/modules/run-virt/data/opt/openslx/scripts/systemd-mount_vm_store b/remote/modules/run-virt/data/opt/openslx/scripts/systemd-mount_vm_store
index 9d478918..363e5253 100755
--- a/remote/modules/run-virt/data/opt/openslx/scripts/systemd-mount_vm_store
+++ b/remote/modules/run-virt/data/opt/openslx/scripts/systemd-mount_vm_store
@@ -13,8 +13,12 @@ OUTFILE=$(mktemp)
# no bash, so this is a bit ugly...
if [ "${SLX_VM_NFS#//}" = "${SLX_VM_NFS}" ]; then
# doesn't start with '//' -> assume NFS
- /opt/openslx/bin/timeout -t 10 -s 9 mount -v -t nfs -o ro,async,nolock "$SLX_VM_NFS" /mnt/vmstore
+ /opt/openslx/bin/timeout -t 6 -s 9 mount -v -t nfs -o ro,async,nolock "$SLX_VM_NFS" /mnt/vmstore
RET=$?
+ if [ "$RET" != "0" ]; then
+ /opt/openslx/bin/timeout -t 6 -s 9 mount -v -t nfs -o vers=3,ro,async,nolock "$SLX_VM_NFS" /mnt/vmstore
+ RET=$?
+ fi
else
# starts with '//' -> assume CIFS
export USER="$SLX_VM_NFS_USER"
@@ -25,7 +29,7 @@ else
RET=$?
fi > "$OUTFILE" 2>&1
-if [ $RET -ne 0 ]; then
+if [ "$RET" -ne "0" ]; then
if [ -s "$OUTFILE" ]; then
slxlog "mount-vmstore-fail" "Mounting '$SLX_VM_NFS' failed. VMs will not boot." "$OUTFILE"
sleep 1
diff --git a/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/50_postliminaries.inc b/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/50_postliminaries.inc
new file mode 100644
index 00000000..f6f1cf7d
--- /dev/null
+++ b/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/50_postliminaries.inc
@@ -0,0 +1,21 @@
+postliminaries_native()
+{
+ # USERHOMEDIR=~/PERSISTENT, not ~! ################
+ rmdir "$USERHOMEDIR" && logger "openslx unmounter: home directory entry (PERSISTENT) deleted." \
+ || logger "openslx unmounter: could not delete home directory (PERSISTENT) entry - not empty / unmounted!"
+}
+
+postliminaries_vmware()
+{
+ unlink "$USERHOMEDIR"
+ ERR=$?
+ if [ "$ERR" -ne 0 ]; then
+ logger "openslx unmounter: vmware mode: could not unlink ${USERHOMEDIR}!"
+ logger "openslx unmounter: vmware mode: this is a severe problem; I do not know what to do - exiting!"
+ exit 1
+ else
+ logger "openslx unmounter: vmware mode: ${USERHOMEDIR} unlinked."
+ # checking whether there was a directory moved out earlier:
+ [ -d "${USERHOMEDIR}"_mov ] && mv "${USERHOMEDIR}"_mov "${USERHOMEDIR}"
+ fi
+}
diff --git a/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/50_umounter.inc b/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/50_umounter.inc
new file mode 100644
index 00000000..e161b961
--- /dev/null
+++ b/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/50_umounter.inc
@@ -0,0 +1,12 @@
+umount_home() {
+ umount /home/"${LOCALUSER}"/PERSISTENT && logger "openslx unmounter: umounted home (PERSISTENT)." \
+ || logger "openslx unmounter: could not home (PERSISTENT)!"
+}
+
+umount_shares() {
+ index=0
+ for SHARE in $( mount | grep SHARE | tr -s ' ' | cut -f 3 -d " " ); do
+ umount "${SHARE}" && logger "openslx unmounter: umounted ${SHARE}." \
+ || logger "openslx unmounter: could not umount ${SHARE}!"
+ done
+}
diff --git a/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/umnt_shares b/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/umnt_shares
new file mode 100755
index 00000000..b028cf76
--- /dev/null
+++ b/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/umnt_shares
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# set -x
+
+logger "openslx sharemapper: umounter started."
+
+OWNDIR=$(dirname $0)
+for i in "$(dirname $0)"/includes/*.inc; do
+ source "$i"
+done
+
+# REMAPMODE (remapMode): 0: None, 1 Native, 2 Native Fallback, 3 vmware
+# CREATEMISSING (createMissingRemap): 0: Nichts tun, 1 xdg-Verzeichnisse
+
+case "$REMAPMODE" in
+ 0) logger "openslx sharemapper: umounter: remapMode 0 (do nothing) detected."
+ exit 0
+ ;;
+ 1) logger "openslx sharemapper: umounter: remapMode 1 (native mode) detected."
+ umount_shares
+ umount_home
+ postliminaries_native
+ ;;
+ 2) logger "openslx sharemapper: umounter: remapMode 2 (fallback mode) detected."
+ umount_shares
+ umount_home
+ postliminaries_native
+ exit 0
+ ;;
+ 3) logger "openslx sharemapper: umounter: remapMode 3 (vmware mode) detected."
+ postliminaries_vmware
+ exit 0
+ ;;
+ *) logger "openslx sharemapper: umounter: unknown remapMode in $SLXCONFIGFILE; doing nothing end exiting with error."
+ exit 1.
+ ;;
+esac
+
+exit 0
+
diff --git a/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_installer b/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_installer
index 84d52d0a..978cee20 100755
--- a/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_installer
+++ b/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_installer
@@ -1,48 +1,86 @@
#!/bin/bash
PS=$(which ps)
+GREP=$(which grep)
+LOGGER=$(which logger)
MKDIR=$(which mkdir)
MOUNT=$(which mount)
+MOUNTDIR=/mnt/diskmount/
SERVICEFILE=openslx-scriptinstall.service
# systemd erkennen
case $(${PS} --pid 1 -o comm h) in
- systemd) echo "openslx praeinstaller: systemd detected."
- if [ -d /etc/systemd/system ]; then
- SERVICEDIR=/etc/systemd/system/
- else
- SERVICEDIR=/usr/lib/systemd/system/
- fi
- echo "openslx praeinstaller: installing systemd service file to ${SERVICEDIR}/${SERVICEFILE}."
-
- cat <<-HEREDOC > "$SERVICEDIR"/"$SERVICEFILE"
- [Unit]
- Description=openSLX script installer
- Before=display-manager.service graphical.target
-
- [Service]
- Type=oneshot
- ExecStart=${MKDIR} -p /mnt/diskmount
- ExecStart=${MOUNT} /dev/fd1 /mnt/diskmount
- ExecStart=/mnt/diskmount/linux/vm_runtime
- RemainAfterExit=no
- HEREDOC
-
- [ ! -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
-
- ln -s ${SERVICEDIR}/${SERVICEFILE} /etc/systemd/system/graphical.target.wants/${SERVICEFILE}
- ln -s ${SERVICEDIR}/${SERVICEFILE} /etc/systemd/system/basic.target.wants/${SERVICEFILE}
-
- echo "openslx praeinstaller: doing systemd reload."
-
- systemctl daemon-reload
- ;;
- init) echo "openslx praeinstaller: init(V) detected."
- ;;
- *) echo "openslx praeinstaller: Unbekannter init-Dienst - exiting with error.
- exit 1"
- ;;
+ systemd) echo "openslx praeinstaller: systemd detected."
+ if [ -d /etc/systemd/system ]; then
+ SERVICEDIR=/etc/systemd/system/
+ else
+ SERVICEDIR=/usr/lib/systemd/system/
+ fi
+ echo "openslx praeinstaller: installing systemd service file to ${SERVICEDIR}/${SERVICEFILE}."
+
+ cat <<-HEREDOC > "$SERVICEDIR"/"$SERVICEFILE"
+ [Unit]
+ Description=openSLX script installer
+ Before=display-manager.service graphical.target
+
+ [Service]
+ Type=oneshot
+ ExecStartPre=${MKDIR} -p /mnt/diskmount
+ ExecStartPre=-${MOUNT} /dev/fd1 /mnt/diskmount
+ ExecStart=${LOGGER} "openslx service file: started."
+ ExecStart=${MOUNTDIR}/linux/vm_runtime
+ ExecStart=${LOGGER} "openslx service file: done."
+ RemainAfterExit=no
+ HEREDOC
+
+ [ ! -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
+
+ ln -s "${SERVICEDIR}"/"${SERVICEFILE}" /etc/systemd/system/graphical.target.wants/"${SERVICEFILE}"
+ ln -s "${SERVICEDIR}"/"${SERVICEFILE}" /etc/systemd/system/basic.target.wants/"${SERVICEFILE}"
+
+ echo "openslx praeinstaller: doing systemd reload."
+ systemctl daemon-reload
+ ;;
+ init) echo "openslx praeinstaller: init(V) detected."
+ SERVICEDIR=/etc/init.d/
+ [ ! -d "${SERVICEDIR}" ] && { echo "openslx praeinstaller: No init directory $SERVICEDIR found, exiting."; exit 1; }
+ SERVICEFILE=openslx-scriptinstall
+ echo "openslx praeinstaller: installing init service file to ${SERVICEDIR}/${SERVICEFILE}."
+ cat <<-THEREDOC > "${SERVICEDIR}"/"${SERVICEFILE}"
+ #!/bin/sh -e
+ ### BEGIN INIT INFO
+ # Provides: openSLX_scriptinstaller
+ # Required-Start: 2 3 4 5
+ # Required-Stop: 0 1 6
+ # Default-Start: 2 3 4 5
+ # Default-Stop: 0 1 6
+ # X-Interactive: false
+ # Short-Description: openSLX script package starter.
+ ### END INIT INFO
+ #
+ # Starts via Xsetup patching the openSLX script package
+ # to correct screen resolution and mount network shares
+ # when Xsetup is started.
+
+ case "\$1" in
+ start) ${LOGGER} "openslx init file: started."
+ ${MKDIR} -p /mnt/diskmount
+ ${MOUNT} | ${GREP} -q /mnt/diskmount || ${MOUNT} /dev/fd1 /mnt/diskmount
+ ${MOUNTDIR}/linux/vm_runtime
+ ${LOGGER} "openslx init file: done."
+ ;;
+ stop|restart|force-reload) exit 0 ;;
+ *) echo "Usage: $0 {start}" >&2; exit 1 ;;
+ esac
+ THEREDOC
+ chmod +x "${SERVICEDIR}"/"${SERVICEFILE}"
+ echo "openslx praeinstaller: enabling ${SERVICEFILE}."
+ update-rc.d "${SERVICEFILE}" defaults
+ ;;
+ *) echo "openslx praeinstaller: Could not determine mother-of-all-processes (not systemd, not init)."
+ echo "openslx praeinstaller: Giving up, exiting."
+ exit 1
esac
exit 0
diff --git a/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_runtime b/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_runtime
index 761a5bf9..0a81c38d 100755
--- a/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_runtime
+++ b/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_runtime
@@ -9,45 +9,88 @@ VERSION=$(lsb_release -rs)
SCRIPTDIR=/mnt/diskmount/linux/
RESOLUTIONSCRIPT="${SCRIPTDIR}"/resolution
SHARESCRIPT="${SCRIPTDIR}"/mnt_shares
+UMOUNTSCRIPT="${SCRIPTDIR}"/umnt_shares
XSETUP=$(find /etc/X* -name "Xsetup" 2>/dev/null)
XRESET=$(find /etc/X* -name "Xreset" 2>/dev/null)
[ ! -f "${RESOLUTIONSCRIPT}" -o ! -f "${SHARESCRIPT}" ] && \
- { logger "openslx vm_runtime: Could not find needed scripts from disk. Exiting." ; exit 1 ; }
+ { logger "openslx vm_runtime: could not find needed scripts on disk. Exiting." ; exit 1 ; }
-case "${DISTRIBUTION}" in
- opensuse) logger "openslx vm_runtime: openSuse detected."
- if [ -z "${XSETUP}" ]; then
- logger "openslx vm_runtime: writing ${XSETUP}..."
- XSETUP=/etc/X11/xdm/Xsetup
- cat<<-BISHIER > "${XSETUP}"
- #!/bin/sh
- ${SHARESCRIPT} &
- ${RESOLUTIONSCRIPT} &
- BISHIER
- else
- logger "openslx vm_runtime: patching ${XSETUP}."
- if ! [ grep -c /etc/sysconfig/displaymanager "$XSETUP" 2>/dev/null 1>&2 ]; then
- logger "openslx vm_runtime: openSuse marker found, patching."
- sed "s#/etc/sysconfig/displaymanager#/etc/sysconfig/displaymanager\n"${SHARESCRIPT}" \&\n${RESOLUTIONSCRIPT} \&#g" \
- -i "${XSETUP}"
- else
- logger "openslx vm_runtime: openSuse marker not found, patching after shebang line."
- sed "1 a ${RESOLUTIONSCRIPT} \&" -i "${XSETUP}"
- sed "1 a ${SHARESCRIPT} \&" -i "${XSETUP}"
- fi
- fi
- ;;
- ubuntu) logger "openslx vm_runtime: Ubuntu detected."
+write_xsetup() {
+ logger "openslx vm_runtime: writing ${XSETUP}..."
+ cat<<-BISHIER > "${XSETUP}"
+ #!/bin/sh
+ ${SHARESCRIPT} &
+ ${RESOLUTIONSCRIPT} &
+ BISHIER
+}
+patch_xsetup_shebang() {
+ # Patching after first line, to be exact.
+ logger "openslx vm_runtime: patching ${XSETUP} after shebang line, if necessary."
+ grep -q "${RESOLUTIONSCRIPT}" "${XSETUP}" || sed "1 a ${RESOLUTIONSCRIPT} \&" -i "${XSETUP}"
+ grep -q "${SHARESCRIPT}" "${XSETUP}" || sed "1 a ${SHARESCRIPT} \&" -i "${XSETUP}"
+}
- ;;
- debian) logger "openslx vm_runtime: Debian detected."
+write_xreset() {
+ logger "openslx vm_runtime: writing ${XRESET}..."
+ cat<<-BISHIER > "${XRESET}"
+ #!/bin/sh
+ ${UMOUNTSCRIPT} &
+ BISHIER
+}
+patch_xreset_shebang() {
+ # Patching after first line, to be exact.
+ logger "openslx vm_runtime: patching ${XRESET} after shebang line, if necessary."
+ grep -q "${UMOUNTSCRIPT}" "${XRESET}" || sed "1 a ${UMOUNTSCRIPT} \&" -i "${XRESET}"
+}
- ;;
- *) logger "openslx vm_runtime: Unknown distribution, exiting."
- exit 1
+case "${DISTRIBUTION}" in
+ opensuse) logger "openslx vm_runtime: openSuse detected."
+ if [ ! -e "${XSETUP}" ]; then
+ XSETUP=/etc/X11/xdm/Xsetup
+ write_xsetup
+ else
+ logger "openslx vm_runtime: patching ${XSETUP}."
+ if ! [ grep -c /etc/sysconfig/displaymanager "$XSETUP" 2>/dev/null 1>&2 ]; then
+ logger "openslx vm_runtime: Xsetup: openSuse marker found, patching."
+ sed "s#/etc/sysconfig/displaymanager#/etc/sysconfig/displaymanager\n"${SHARESCRIPT}" \&\n${RESOLUTIONSCRIPT} \&#g" \
+ -i "${XSETUP}"
+ else
+ logger "openslx vm_runtime: Xsetup: openSuse marker not found, patching after shebang line."
+ xsetup_patch_shebang
+ fi
+ logger "openslx vm_runtime: patching ${RESET}."
+ patch_xreset_shebang
+ fi
+ ;;
+ ubuntu) logger "openslx vm_runtime: Ubuntu detected, version ${VERSION}."
+ # Ubuntu has at least in version 14.04 LTS a bug leading to missing Xsetup/Xreset entries:
+ grep -q "session-setup-script=/etc/X11/Xsetup" /etc/lightdm/lightdm.conf.d/50-myconfig.conf \
+ || { sed "$ a session-setup-script=/etc/X11/Xsetup" -i /etc/lightdm/lightdm.conf.d/50-myconfig.conf
+ logger "openslx vm_runtime: session-setup-script patched into /etc/lightdm/lightdm.conf.d/50-myconfig.conf."; }
+ grep -q "session-reset-script=/etc/X11/Xreset" /etc/lightdm/lightdm.conf.d/50-myconfig.conf \
+ || { sed "$ a session-reset-script=/etc/X11/Xreset" -i /etc/lightdm/lightdm.conf.d/50-myconfig.conf
+ logger "openslx vm_runtime: session-reset-script patched into /etc/lightdm/lightdm.conf.d/50-myconfig.conf."; }
+ if [ ! -e "${XSETUP}" ]; then
+ XSETUP=/etc/X11/Xsetup
+ write_xsetup
+ else
+ patch_xsetup_shebang
+ fi
+ if [ ! -e "${XRESET}" ]; then
+ XRESETP=/etc/X11/Xreset
+ write_xreset
+ else
+ patch_xreset_shebang
+ fi
+ ;;
+ debian) logger "openslx vm_runtime: Debian detected."
+ ;;
+ *) logger "openslx vm_runtime: Unknown distribution, exiting."
+ exit 1
+ ;;
esac
exit 0