summaryrefslogtreecommitdiffstats
path: root/remote/modules/run-virt
diff options
context:
space:
mode:
authorChristian Rößler2016-04-28 16:49:16 +0200
committerChristian Rößler2016-04-28 16:49:16 +0200
commit612c0e38d6af5553f2b9322e4202494c3e0c2857 (patch)
treeefa635e1bd8e7da93b3e3fb3f4f41d1f8b1e6dfe /remote/modules/run-virt
parent[run-virt] Linux VMs fd1: resolution corr. and native network shares, poc. (diff)
downloadtm-scripts-612c0e38d6af5553f2b9322e4202494c3e0c2857.tar.gz
tm-scripts-612c0e38d6af5553f2b9322e4202494c3e0c2857.tar.xz
tm-scripts-612c0e38d6af5553f2b9322e4202494c3e0c2857.zip
[run-virt] Linux-VMs fd1, some more fixes, Ubuntu 14.04 LTS
Diffstat (limited to 'remote/modules/run-virt')
-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_runtime81
2 files changed, 126 insertions, 65 deletions
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..39b39126 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=$(whoch 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
+ ExecStart=${LOGGER} "openslx service file: started."
+ ExecStart=${MKDIR} -p /mnt/diskmount
+ ExecStart=${MOUNT} | ${GREP} -q /mnt/diskmount || ${MOUNT} /dev/fd1 /mnt/diskmount
+ 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..9dcfbd8e 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
@@ -13,41 +13,64 @@ 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 ; }
+
+write_xsetup() {
+ logger "openslx vm_runtime: writing ${XSETUP}..."
+ XSETUP=/etc/X11/xdm/Xsetup
+ cat<<-BISHIER > "${XSETUP}"
+ #!/bin/sh
+ ${SHARESCRIPT} &
+ ${RESOLUTIONSCRIPT} &
+ BISHIER
+}
+
+patch_xsetup_shebang() {
+ 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}"
+}
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
+ 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: openSuse marker found, patching."
+ sed "s#/etc/sysconfig/displaymanager#/etc/sysconfig/displaymanager\n"${SHARESCRIPT}" \&\n${RESOLUTIONSCRIPT} \&#g" \
+ -i "${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: 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
+ logger "openslx vm_runtime: openSuse marker not found, patching after shebang line."
+ xsetup_patch_shebang
fi
- ;;
- ubuntu) logger "openslx vm_runtime: Ubuntu detected."
-
-
- ;;
- debian) logger "openslx vm_runtime: Debian detected."
+ 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
+ ;;
+ debian) logger "openslx vm_runtime: Debian detected."
- ;;
- *) logger "openslx vm_runtime: Unknown distribution, exiting."
- exit 1
+ ;;
+ *) logger "openslx vm_runtime: Unknown distribution, exiting."
+ exit 1
+ ;;
esac
exit 0