blob: 0a81c38dd747e76caee391ed570c7c282f628130 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
#!/bin/bash
# set -x
# logger "openslx vm_runtime: Started."
DISTRIBUTION=$(lsb_release -is | tr '[A-Z]' '[a-z]' | sed -r 's/[^a-z0-9]//g;s/project$//g;s/scientificsl$/scientific/g')
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 on disk. Exiting." ; exit 1 ; }
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}"
}
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}"
}
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
|