diff options
author | Christian Rößler | 2016-04-28 16:49:16 +0200 |
---|---|---|
committer | Christian Rößler | 2016-04-28 16:49:16 +0200 |
commit | 612c0e38d6af5553f2b9322e4202494c3e0c2857 (patch) | |
tree | efa635e1bd8e7da93b3e3fb3f4f41d1f8b1e6dfe /remote/modules/run-virt | |
parent | [run-virt] Linux VMs fd1: resolution corr. and native network shares, poc. (diff) | |
download | tm-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-x | remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_installer | 110 | ||||
-rwxr-xr-x | remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_runtime | 81 |
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 |