From 612c0e38d6af5553f2b9322e4202494c3e0c2857 Mon Sep 17 00:00:00 2001 From: Christian Rößler Date: Thu, 28 Apr 2016 16:49:16 +0200 Subject: [run-virt] Linux-VMs fd1, some more fixes, Ubuntu 14.04 LTS --- .../opt/openslx/vmchooser/data/linux/vm_installer | 110 ++++++++++++++------- .../opt/openslx/vmchooser/data/linux/vm_runtime | 81 +++++++++------ 2 files changed, 126 insertions(+), 65 deletions(-) (limited to 'remote/modules') 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 -- cgit v1.2.3-55-g7522 From 7708d4c1434d9f46367effbe27d30aae4117057b Mon Sep 17 00:00:00 2001 From: Christian Rößler Date: Thu, 28 Apr 2016 17:54:14 +0200 Subject: [run-virt] Linux-VMs fd1: Stoooopid bug! --- .../modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_installer | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'remote/modules') 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 39b39126..de3a8bb0 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 @@ -2,7 +2,7 @@ PS=$(which ps) GREP=$(which grep) -LOGGER=$(whoch logger) +LOGGER=$(which logger) MKDIR=$(which mkdir) MOUNT=$(which mount) MOUNTDIR=/mnt/diskmount/ -- cgit v1.2.3-55-g7522 From cd7f652158d33d1660f24be8057f4232aadf6973 Mon Sep 17 00:00:00 2001 From: Christian Rößler Date: Fri, 29 Apr 2016 15:23:03 +0200 Subject: [run-virt] Linux-VMs fd1: Xreset, umounter --- .../data/linux/includes/50_postliminaries.inc | 21 ++++++++++++ .../vmchooser/data/linux/includes/50_umounter.inc | 12 +++++++ .../opt/openslx/vmchooser/data/linux/umnt_shares | 40 ++++++++++++++++++++++ .../opt/openslx/vmchooser/data/linux/vm_runtime | 26 ++++++++++---- 4 files changed, 93 insertions(+), 6 deletions(-) create mode 100644 remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/50_postliminaries.inc create mode 100644 remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/50_umounter.inc create mode 100755 remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/umnt_shares (limited to 'remote/modules') 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..3c03f074 --- /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: remapMode 0 (do nothing) detected." + exit 0 + ;; + 1) logger "openslx sharemapper: remapMode 1 (native mode) detected." + umount_shares + umount_home + postliminaries_native + ;; + 2) logger "openslx sharemapper: remapMode 2 (fallback mode) detected." + umount_shares + umount_home + postliminaries_native + exit 0 + ;; + 3) logger "openslx sharemapper: remapMode 3 (vmware mode) detected." + postliminaries_vmware + exit 0 + ;; + *) logger "openslx sharemapper: 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_runtime b/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_runtime index 9dcfbd8e..a238e9a1 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,6 +9,7 @@ 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) @@ -17,7 +18,6 @@ XRESET=$(find /etc/X* -name "Xreset" 2>/dev/null) write_xsetup() { logger "openslx vm_runtime: writing ${XSETUP}..." - XSETUP=/etc/X11/xdm/Xsetup cat<<-BISHIER > "${XSETUP}" #!/bin/sh ${SHARESCRIPT} & @@ -26,11 +26,26 @@ write_xsetup() { } 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}" } +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 "${XSETUP}" +} + case "${DISTRIBUTION}" in opensuse) logger "openslx vm_runtime: openSuse detected." if [ ! -e "${XSETUP}" ]; then @@ -39,17 +54,18 @@ case "${DISTRIBUTION}" in 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." + 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: openSuse marker not found, patching after shebang line." + logger "openslx vm_runtime: Xsetup: openSuse marker not found, patching after shebang line." xsetup_patch_shebang fi + logger "openslx vm_runtime: patching ${RESET}." + xsetup_patch_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 @@ -65,8 +81,6 @@ case "${DISTRIBUTION}" in fi ;; debian) logger "openslx vm_runtime: Debian detected." - - ;; *) logger "openslx vm_runtime: Unknown distribution, exiting." exit 1 -- cgit v1.2.3-55-g7522 From 396a156f8de495cb39c0e37b31997d19da4919f0 Mon Sep 17 00:00:00 2001 From: Christian Rößler Date: Fri, 29 Apr 2016 15:26:42 +0200 Subject: [run-virt] Linux-VMs fd1: 'smores, Xreset Ubuntu --- .../run-virt/data/opt/openslx/vmchooser/data/linux/vm_runtime | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'remote/modules') 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 a238e9a1..53dcfc20 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 @@ -43,7 +43,7 @@ write_xreset() { 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 "${XSETUP}" + grep -q "${UMOUNTSCRIPT}" "${XRESET}" || sed "1 a ${UMOUNTSCRIPT} \&" -i "${XRESET}" } case "${DISTRIBUTION}" in @@ -62,7 +62,7 @@ case "${DISTRIBUTION}" in xsetup_patch_shebang fi logger "openslx vm_runtime: patching ${RESET}." - xsetup_patch_shebang + xreset_patch_shebang fi ;; ubuntu) logger "openslx vm_runtime: Ubuntu detected, version ${VERSION}." @@ -79,6 +79,12 @@ case "${DISTRIBUTION}" in 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." ;; -- cgit v1.2.3-55-g7522 From 367add5201d1612175c94203ab865b6006c10bd1 Mon Sep 17 00:00:00 2001 From: Christian Rößler Date: Tue, 3 May 2016 15:04:02 +0200 Subject: [run-virt] Linux-MVs fd1: systemd service file fix, other little fix --- .../run-virt/data/opt/openslx/vmchooser/data/linux/vm_installer | 4 ++-- .../modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_runtime | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'remote/modules') 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 de3a8bb0..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 @@ -25,9 +25,9 @@ case $(${PS} --pid 1 -o comm h) in [Service] Type=oneshot + ExecStartPre=${MKDIR} -p /mnt/diskmount + ExecStartPre=-${MOUNT} /dev/fd1 /mnt/diskmount 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 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 53dcfc20..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 @@ -62,7 +62,7 @@ case "${DISTRIBUTION}" in xsetup_patch_shebang fi logger "openslx vm_runtime: patching ${RESET}." - xreset_patch_shebang + patch_xreset_shebang fi ;; ubuntu) logger "openslx vm_runtime: Ubuntu detected, version ${VERSION}." -- cgit v1.2.3-55-g7522 From aa653b6ec685ebc3e552723d981c4da746af3675 Mon Sep 17 00:00:00 2001 From: Christian Rößler Date: Tue, 3 May 2016 17:05:03 +0200 Subject: [run-virt] Linux-VMs fd1: Slightly more explicit logging (little change) --- .../run-virt/data/opt/openslx/vmchooser/data/linux/umnt_shares | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'remote/modules') 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 index 3c03f074..b028cf76 100755 --- 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 @@ -13,25 +13,25 @@ done # CREATEMISSING (createMissingRemap): 0: Nichts tun, 1 xdg-Verzeichnisse case "$REMAPMODE" in - 0) logger "openslx sharemapper: remapMode 0 (do nothing) detected." + 0) logger "openslx sharemapper: umounter: remapMode 0 (do nothing) detected." exit 0 ;; - 1) logger "openslx sharemapper: remapMode 1 (native mode) detected." + 1) logger "openslx sharemapper: umounter: remapMode 1 (native mode) detected." umount_shares umount_home postliminaries_native ;; - 2) logger "openslx sharemapper: remapMode 2 (fallback mode) detected." + 2) logger "openslx sharemapper: umounter: remapMode 2 (fallback mode) detected." umount_shares umount_home postliminaries_native exit 0 ;; - 3) logger "openslx sharemapper: remapMode 3 (vmware mode) detected." + 3) logger "openslx sharemapper: umounter: remapMode 3 (vmware mode) detected." postliminaries_vmware exit 0 ;; - *) logger "openslx sharemapper: unknown remapMode in $SLXCONFIGFILE; doing nothing end exiting with error." + *) logger "openslx sharemapper: umounter: unknown remapMode in $SLXCONFIGFILE; doing nothing end exiting with error." exit 1. ;; esac -- cgit v1.2.3-55-g7522 From 1256e1d60c964e8798e0802508aa458ec2d5b3f6 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 11 May 2016 16:41:00 +0200 Subject: [run-virt] Fallback to nfs3 if auto-detect (usually 4) doesn't work --- .../run-virt/data/opt/openslx/scripts/systemd-mount_vm_store | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'remote/modules') 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 -- cgit v1.2.3-55-g7522 From 142a3921589a537657fba6372704716cabf105f6 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 11 May 2016 16:57:01 +0200 Subject: [kdm-theme-bwlp] Fix sed fail when building messages; add vmstore warning --- .../opt/openslx/scripts/systemd-kdm_hwinfo_warnings | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'remote/modules') 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 \< + # 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#")" } -- cgit v1.2.3-55-g7522 From eca3dcdb89f3d861654e1bc465257f490abbf9c9 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 12 May 2016 11:07:00 +0200 Subject: [kernel-vanilla] -> 4.4.10 --- remote/modules/kernel-vanilla/module.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'remote/modules') 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" -- cgit v1.2.3-55-g7522 From 81b256bf9f6ac208b37ec4fb2a0b854700750fe2 Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Thu, 19 May 2016 18:13:38 +0200 Subject: [pvs2] startup scripts for pvsclient & support for external scripts called by pvs2 --- .../modules/pvs2/data/opt/openslx/bin/pvsstartup | 15 +++++++++++++++ .../pvs2/data/opt/openslx/scripts/setup-pvsmgr | 2 +- .../openslx/vmchooser/sessionstart.d/50-PVSclient | 4 ++-- remote/modules/pvs2/module.build | 22 +++++++++++++++------- remote/modules/pvs2/module.conf | 6 ++++++ remote/modules/pvs2/module.conf.ubuntu | 7 ++++--- 6 files changed, 43 insertions(+), 13 deletions(-) create mode 100755 remote/modules/pvs2/data/opt/openslx/bin/pvsstartup (limited to 'remote/modules') 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 " -- cgit v1.2.3-55-g7522