summaryrefslogtreecommitdiffstats
path: root/os-plugins
diff options
context:
space:
mode:
authorOliver Tappe2008-01-13 19:19:14 +0100
committerOliver Tappe2008-01-13 19:19:14 +0100
commitdb3bdeb697a06b35cce61b52d83858757e82b8ec (patch)
tree4edca1f2e15dc4fcb6a7f77e1a65727743fdf320 /os-plugins
parent* avoid possible warnings about undefined values in regex-substitution (diff)
downloadcore-db3bdeb697a06b35cce61b52d83858757e82b8ec.tar.gz
core-db3bdeb697a06b35cce61b52d83858757e82b8ec.tar.xz
core-db3bdeb697a06b35cce61b52d83858757e82b8ec.zip
reimplemented splashy stuff via Theme plugin:
* activated invocation of init-hooks * removed explicit splashy calls from init (they are now done in several init-hooks provided by the Theme plugin) * the stage3 plugins are now invoked via '.' instead via a separate shell, such that they can export changed environment variables * changed invocation of initial_boot() - we now pass in the list of initscripts as otherwise I have been unable to let this function access a changed D_INITSCRIPTS variable (it would only see initial content) * moved invocation of initial_boot from servconfig to init (again such that a changed D_INITSCRIPTS will be handled correctly) * config-demuxer now passes the active plugins into mkdxsinitrd * mkdxsinitrd accepts a list of active plugins (-p) and copies the hooks directly into the initialramfs, such that they are available immediately in stage3 The bootsplash stuff (splashy) seems to work properly, but the handling of displaymanager themes is currently broken. I will look into that tomorrow. git-svn-id: http://svn.openslx.org/svn/openslx/trunk@1472 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'os-plugins')
-rw-r--r--os-plugins/plugins/Example/XX_Example.sh23
-rw-r--r--os-plugins/plugins/Theme/OpenSLX/OSPlugin/Theme.pm10
-rw-r--r--os-plugins/plugins/Theme/XX_Theme.sh24
-rw-r--r--os-plugins/plugins/Theme/init-hooks/05-have-kernelvars/Theme.sh4
-rw-r--r--os-plugins/plugins/Theme/init-hooks/15-have-ip-config/Theme.sh2
-rw-r--r--os-plugins/plugins/Theme/init-hooks/25-have-network-root/Theme.sh2
-rw-r--r--os-plugins/plugins/Theme/init-hooks/40-started-hw-config/Theme.sh2
-rw-r--r--os-plugins/plugins/Theme/init-hooks/50-have-layered-fs/Theme.sh2
-rw-r--r--os-plugins/plugins/Theme/init-hooks/60-have-servconfig/Theme.sh2
-rw-r--r--os-plugins/plugins/Theme/init-hooks/70-before-plugins/Theme.sh2
-rw-r--r--os-plugins/plugins/Theme/init-hooks/80-after-plugins/Theme.sh20
-rw-r--r--os-plugins/plugins/Theme/init-hooks/99-handing-over/Theme.sh2
-rw-r--r--os-plugins/plugins/VMware/XX_VMware.sh338
13 files changed, 227 insertions, 206 deletions
diff --git a/os-plugins/plugins/Example/XX_Example.sh b/os-plugins/plugins/Example/XX_Example.sh
index 3f58d483..cee76daf 100644
--- a/os-plugins/plugins/Example/XX_Example.sh
+++ b/os-plugins/plugins/Example/XX_Example.sh
@@ -24,20 +24,15 @@
# if you have any questions regarding the use of this file, please drop a mail
# to: ot@openslx.com, or join the IRC-channel '#openslx' (on freenode).
-if ! [ -e /initramfs/plugin-conf/Example.conf ]; then
- exit 1
-fi
+if [ -e /initramfs/plugin-conf/Example.conf ]; then
+ . /initramfs/plugin-conf/Example.conf
+ if [ $Example_active -ne 0 ]; then
+ [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'Example' os-plugin ...";
-# for this example plugin, we simply take a filename from the configuration ...
-. /initramfs/plugin-conf/Example.conf
+ # for this example plugin, we simply take a filename from the
+ # configuration and cat that file (output the smiley):
+ cat /mnt/opt/openslx/plugin-repo/Example/$preferred_side
-if ! [ -n $active ]; then
- exit 0
+ [ $DEBUGLEVEL -gt 0 ] && echo "done with 'Example' os-plugin ...";
+ fi
fi
-
-echo "executing the 'Example' os-plugin ...";
-
-# ... and cat that file (output the smiley):
-cat /mnt/opt/openslx/plugin-repo/Example/$preferred_side
-
-echo "done with 'Example' os-plugin ...";
diff --git a/os-plugins/plugins/Theme/OpenSLX/OSPlugin/Theme.pm b/os-plugins/plugins/Theme/OpenSLX/OSPlugin/Theme.pm
index 5975fa3f..b029919e 100644
--- a/os-plugins/plugins/Theme/OpenSLX/OSPlugin/Theme.pm
+++ b/os-plugins/plugins/Theme/OpenSLX/OSPlugin/Theme.pm
@@ -78,6 +78,16 @@ sub getAttrInfo
default => 30,
},
+ 'theme::name' => {
+ applies_to_systems => 1,
+ applies_to_clients => 0,
+ description => unshiftHereDoc(<<' End-of-Here'),
+ the name of the theme to apply (or unset for no theme)
+ End-of-Here
+ content_regex => undef,
+ content_descr => undef,
+ default => undef,
+ },
};
}
diff --git a/os-plugins/plugins/Theme/XX_Theme.sh b/os-plugins/plugins/Theme/XX_Theme.sh
index 81d2a729..c1814d6f 100644
--- a/os-plugins/plugins/Theme/XX_Theme.sh
+++ b/os-plugins/plugins/Theme/XX_Theme.sh
@@ -2,17 +2,17 @@
#
# stage3 part of 'Theme' plugin - the runlevel script
#
-if ! [ -e /initramfs/plugin-conf/Theme.conf ]; then
- exit 1
-fi
-. /initramfs/plugin-conf/Theme.conf
+if [ -e /initramfs/plugin-conf/Theme.conf ]; then
+ . /initramfs/plugin-conf/Theme.conf
+ if [ $Theme_active -ne 0 ]; then
+ [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'Theme' os-plugin ...";
+
+# testmkd /mnt/var/lib/openslx/themes/displaymanager
+# testmkd /mnt/var/lib/openslx/bin
+# [ -d /usr/share/themes/displaymanager ] \
+# && cp -a /usr/share/themes/displaymanager \
+# /mnt/var/lib/openslx/themes
-if ! [ -n $active ]; then
- exit 0
+ [ $DEBUGLEVEL -gt 0 ] && echo "done with 'Theme' os-plugin ...";
+ fi
fi
-
-echo "executing the 'Theme' os-plugin ...";
-
-# nothing to do here, really
-
-echo "done with 'Theme' os-plugin ...";
diff --git a/os-plugins/plugins/Theme/init-hooks/05-have-kernelvars/Theme.sh b/os-plugins/plugins/Theme/init-hooks/05-have-kernelvars/Theme.sh
index c2d4551a..48c08581 100644
--- a/os-plugins/plugins/Theme/init-hooks/05-have-kernelvars/Theme.sh
+++ b/os-plugins/plugins/Theme/init-hooks/05-have-kernelvars/Theme.sh
@@ -1,10 +1,10 @@
# splashy stuff seems to depend on /proc/fb with VESA!?
# only activate with kernel option quiet
if grep -E "(VESA|VGA)" /proc/fb > /dev/null 2>&1 \
- && grep -qi " quiet " /proc/cmdline > /dev/null 2>&1; then
+ && grep -qi " quiet " /proc/cmdline > /dev/null 2>&1 ; then
export Theme_nosplash=0
else
export Theme_nosplash=1
fi
-[ ${Theme_nosplash} = 0 ] && /bin/splashy boot 2>/dev/null
+[ ${Theme_nosplash} -eq 0 ] && /bin/splashy boot 2>/dev/null
diff --git a/os-plugins/plugins/Theme/init-hooks/15-have-ip-config/Theme.sh b/os-plugins/plugins/Theme/init-hooks/15-have-ip-config/Theme.sh
index 6a3b0737..357db1fc 100644
--- a/os-plugins/plugins/Theme/init-hooks/15-have-ip-config/Theme.sh
+++ b/os-plugins/plugins/Theme/init-hooks/15-have-ip-config/Theme.sh
@@ -1 +1 @@
-[ ${Theme_nosplash} = 0 ] && /bin/splashy_update "progress 15" 2>/dev/null
+[ ${Theme_nosplash} = 0 ] && /bin/splashy_update "progress 15" >/dev/null 2>&1
diff --git a/os-plugins/plugins/Theme/init-hooks/25-have-network-root/Theme.sh b/os-plugins/plugins/Theme/init-hooks/25-have-network-root/Theme.sh
index 043d58d0..a0e4c7a9 100644
--- a/os-plugins/plugins/Theme/init-hooks/25-have-network-root/Theme.sh
+++ b/os-plugins/plugins/Theme/init-hooks/25-have-network-root/Theme.sh
@@ -1 +1 @@
-[ ${Theme_nosplash} = 0 ] && /bin/splashy_update "progress 25" 2>/dev/null
+[ ${Theme_nosplash} = 0 ] && /bin/splashy_update "progress 25" >/dev/null 2>&1
diff --git a/os-plugins/plugins/Theme/init-hooks/40-started-hw-config/Theme.sh b/os-plugins/plugins/Theme/init-hooks/40-started-hw-config/Theme.sh
index 7b56298b..934162c5 100644
--- a/os-plugins/plugins/Theme/init-hooks/40-started-hw-config/Theme.sh
+++ b/os-plugins/plugins/Theme/init-hooks/40-started-hw-config/Theme.sh
@@ -1 +1 @@
-[ ${Theme_nosplash} = 0 ] && /bin/splashy_update "progress 40" 2>/dev/null
+[ ${Theme_nosplash} = 0 ] && /bin/splashy_update "progress 40" >/dev/null 2>&1
diff --git a/os-plugins/plugins/Theme/init-hooks/50-have-layered-fs/Theme.sh b/os-plugins/plugins/Theme/init-hooks/50-have-layered-fs/Theme.sh
index 77505155..6801826d 100644
--- a/os-plugins/plugins/Theme/init-hooks/50-have-layered-fs/Theme.sh
+++ b/os-plugins/plugins/Theme/init-hooks/50-have-layered-fs/Theme.sh
@@ -1 +1 @@
-[ ${Theme_nosplash} = 0 ] && /bin/splashy_update "progress 50" 2>/dev/null
+[ ${Theme_nosplash} -eq 0 ] && /bin/splashy_update "progress 50" >/dev/null 2>&1
diff --git a/os-plugins/plugins/Theme/init-hooks/60-have-servconfig/Theme.sh b/os-plugins/plugins/Theme/init-hooks/60-have-servconfig/Theme.sh
index a305e1b9..9a21f208 100644
--- a/os-plugins/plugins/Theme/init-hooks/60-have-servconfig/Theme.sh
+++ b/os-plugins/plugins/Theme/init-hooks/60-have-servconfig/Theme.sh
@@ -1 +1 @@
-[ ${Theme_nosplash} = 0 ] && /bin/splashy_update "progress 60" 2>/dev/null
+[ ${Theme_nosplash} = 0 ] && /bin/splashy_update "progress 60" >/dev/null 2>&1
diff --git a/os-plugins/plugins/Theme/init-hooks/70-before-plugins/Theme.sh b/os-plugins/plugins/Theme/init-hooks/70-before-plugins/Theme.sh
index f96bf7da..96603a5a 100644
--- a/os-plugins/plugins/Theme/init-hooks/70-before-plugins/Theme.sh
+++ b/os-plugins/plugins/Theme/init-hooks/70-before-plugins/Theme.sh
@@ -1 +1 @@
-[ ${Theme_nosplash} = 0 ] && /bin/splashy_update "progress 70" 2>/dev/null
+[ ${Theme_nosplash} = 0 ] && /bin/splashy_update "progress 70" >/dev/null 2>&1
diff --git a/os-plugins/plugins/Theme/init-hooks/80-after-plugins/Theme.sh b/os-plugins/plugins/Theme/init-hooks/80-after-plugins/Theme.sh
index 4a749752..2e976ac5 100644
--- a/os-plugins/plugins/Theme/init-hooks/80-after-plugins/Theme.sh
+++ b/os-plugins/plugins/Theme/init-hooks/80-after-plugins/Theme.sh
@@ -1 +1,19 @@
-[ ${Theme_nosplash} = 0 ] && /bin/splashy_update "progress 80" 2>/dev/null
+if [ ${Theme_nosplash} -eq 0 ]; then
+
+ /bin/splashy_update "progress 80" >/dev/null 2>&1
+
+ # make the splashy_update binary available in stage4 ...
+ mkdir -p /mnt/var/lib/openslx/bin
+ cp -a /bin/splashy_update /mnt/var/lib/openslx/bin
+
+ # ... and create a runlevelscript that will stop splashy somewhere near
+ # the end of stage4
+ d_mkrlscript init splashy.stop "Stopping Splashy ..."
+ echo -e "\t/var/lib/openslx/bin/splashy_update exit 2>/dev/null \
+ \n\ttype killall >/dev/null 2>&1 && killall -9 splashy \
+ \n\trm -f /var/lib/openslx/bin/splashy_update 2>/dev/null" \
+ >>/mnt/etc/${D_INITDIR}/splashy.stop
+ d_mkrlscript close splashy.stop ""
+ D_INITSCRIPTS="${D_INITSCRIPTS} splashy.stop"
+
+fi \ No newline at end of file
diff --git a/os-plugins/plugins/Theme/init-hooks/99-handing-over/Theme.sh b/os-plugins/plugins/Theme/init-hooks/99-handing-over/Theme.sh
index 92bd6572..7a2c5856 100644
--- a/os-plugins/plugins/Theme/init-hooks/99-handing-over/Theme.sh
+++ b/os-plugins/plugins/Theme/init-hooks/99-handing-over/Theme.sh
@@ -1 +1 @@
-[ ${Theme_nosplash} = 0 ] && /bin/splashy_update "progress 100" 2>/dev/null
+[ ${Theme_nosplash} -eq 0 ] && /bin/splashy_update "progress 100" >/dev/null 2>&1
diff --git a/os-plugins/plugins/VMware/XX_VMware.sh b/os-plugins/plugins/VMware/XX_VMware.sh
index b73c56bb..4dd7a8d2 100644
--- a/os-plugins/plugins/VMware/XX_VMware.sh
+++ b/os-plugins/plugins/VMware/XX_VMware.sh
@@ -1,173 +1,171 @@
#! /bin/sh
# check if the configuration file is available
-if ! [ -e /initramfs/plugin-conf/VMware.conf ]; then
- exit 1
-fi
-
-# load needed variables
-. /initramfs/plugin-conf/VMware.conf
-
-# Test if this plugin is activated
-if ! [ -n $active ]; then
- exit 0
-fi
-
-
-echo "executing the 'VMware' os-plugin ...";
-
-# Load general configuration
-. /initramfs/machine-setup
-# we need to load the function file for:
-# uri_token, testmkd
-. /etc/functions
-# D_INITDIR is defined in the following file:
-. /etc/sysconfig/config
-
-echo " * VMware part 1"
-#############################################################################
-# vmware stuff first part: two scenarios
-# * VM images in /usr/share/vmware - then simply link
-# * VM images via additional mount (mount source NFS, NBD, ...)
-if [ "x${vmware}" != "x" ] && [ "x${vmware}" != "xno" ] ; then
- # map slxgrp to pool, so it's better to understand
- pool=${slxgrp}
- # if we dont have slxgrp defined
- [ -z "${pool}" ] && pool="default"
-
- # get source of vmware image server (get type, server and path)
- if strinstr "/" "${vmware}" ; then
- vmimgprot=$(uri_token ${vmware} prot)
- vmimgserv=$(uri_token ${vmware} server)
- vmimgpath="$(uri_token ${vmware} path)"
- fi
- if [ -n "${vmimgserv}" ] ; then
- testmkd /mnt/var/lib/vmware
- case "${vmimgprot}" in
- *nbd)
- ;;
- lbdev)
- # we expect the stuff on toplevel directory, filesystem type should be
- # autodetected here ... (vmimgserv is blockdev here)
- vmbdev=/dev/${vmimgserv}
- waitfor ${vmbdev} 20000
- echo -e "ext2\nreiserfs\nvfat\nxfs" >/etc/filesystems
- mount -o ro ${vmbdev} /mnt/var/lib/vmware || error "$scfg_evmlm" nonfatal
- ;;
- *)
- # we expect nfs mounts here ...
- for proto in tcp udp fail; do
- [ $proto = "fail" ] && { error "$scfg_nfs" nonfatal;
- noimg=yes; break;}
- mount -n -t nfs -o ro,nolock,$proto ${vmimgserv}:${vmimgpath} \
- /mnt/var/lib/vmware && break
- done
- ;;
- esac
- fi
-fi
-
-echo " * VMware part 2"
-
-#############################################################################
-# vmware stuff second part: setting up the environment
-
-# create needed directories and files
-if [ "x${vmware}" != "x" ] && [ "x${vmware}" != "xno" ] ; then
- for i in /etc/vmware/vmnet1/dhcpd /etc/vmware/vmnet8/nat \
- /etc/vmware/vmnet8/dhcpd /var/run/vmware /etc/vmware/loopimg \
- /etc/vmware/fd-loop /var/X11R6/bin /etc/X11/sessions; do
- testmkd /mnt/$i
- done
- # create needed devices (not created automatically via module load)
- for i in "/dev/vmnet0 c 119 0" "/dev/vmnet1 c 119 1" \
- "/dev/vmnet8 c 119 8" "/dev/vmmon c 10 165"; do
- mknod $i
- done
- # create the vmware startup configuration file /etc/vmware/locations
- # fixme --> ToDo
- # echo -e "answer VNET_8_NAT yes\nanswer VNET_8_HOSTONLY_HOSTADDR \n\
- #192.168.100.1\nanswer VNET_8_HOSTONLY_NETMASK 255.255.255.0\n\
- #file /etc/vmware/vmnet8/dhcpd/dhcpd.conf\n\
- # remove_file /etc/vmware/not_configured" >/mnt/etc/vmware/locations
-
- chmod 0700 /dev/vmnet*
- chmod 1777 /mnt/etc/vmware/fd-loop
- # loop file for exchanging information between linux and vmware guest
- if modprobe ${MODPRV} loop; then
- mdev -s
- else
- : #|| error "" nonfatal
- fi
- # mount a clean tempfs (bug in UnionFS prevents loopmount to work)
- strinfile "unionfs" /proc/mounts && \
- mount -n -o size=1500k -t tmpfs vm-loopimg /mnt/etc/vmware/loopimg
- # create an empty floppy image of 1.4MByte size
- dd if=/dev/zero of=/mnt/etc/vmware/loopimg/fd.img \
- count=2880 bs=512 2>/dev/null
- chmod 0777 /mnt/etc/vmware/loopimg/fd.img
- # use dos formatter from rootfs (later stage4)
- LD_LIBRARY_PATH=/mnt/lib /mnt/sbin/mkfs.msdos \
- /mnt/etc/vmware/loopimg/fd.img >/dev/null 2>&1 #|| error
- mount -n -t msdos -o loop,umask=000 /mnt/etc/vmware/loopimg/fd.img \
- /mnt/etc/vmware/fd-loop
- echo -e "usbfs\t\t/proc/bus/usb\tusbfs\t\tauto\t\t 0 0" >> /mnt/etc/fstab
- # needed for VMware 5.5.3 and versions below
- echo -e "\tmount -t usbfs usbfs /proc/bus/usb 2>/dev/null" \
- >>/mnt/etc/${D_INITDIR}/boot.slx
- # TODO: we still use this function? Prove if we can delete it.
- config_vmware chmod 1777 /mnt/var/run/vmware # define a variable where gdm/kdm should look for additional sessions # do we really need it? # export vmsessions=/var/lib/vmware/vmsessions
-
- # directory of templates and xdialog files
- vmdir=/mnt/var/lib/vmware
-
- if cp ${vmdir}/templates/xdialog.sh /mnt/var/X11R6/bin/ 2>/dev/null; then
- # create default.desktop for kdm
- echo -e "[Desktop Entry]\nEncoding=UTF8\nName=Default\nName[de]=Standard"\
- >/mnt/etc/X11/sessions/default.desktop
-
- #I dont like this part, but there is no simple workaround. We need to
- #create xdialog.sh on every box :(
- echo "Exec=/var/X11R6/bin/xdialog.sh" \
- >>/mnt/etc/X11/sessions/default.desktop
- echo "Type=Application" >>/mnt/etc/X11/sessions/default.desktop
-
- # /usr/share/xsessions/* files for the menu
- for i in /mnt/usr/share/xsessions/*.desktop; do
- # execute
- echo "\"$(grep '^Exec=' ${i}|sed 's/^Exec=//')\" \\" \
- >>/mnt/var/X11R6/bin/xdialog.sh
- # short description
- echo "\"$(grep '^Name=' ${i}|sed 's/^Name=//')\" \\" \
- >>/mnt/var/X11R6/bin/xdialog.sh
- # long description
- echo "\"$(grep '^Comment=' ${i}|sed 's/^Comment=//')\" \\" \
- >>/mnt/var/X11R6/bin/xdialog.sh
- done
- # all virtual machine clients
- cat ${vmdir}/xdialog-files/${pool}/*.xdialog \
- >>/mnt/var/X11R6/bin/xdialog.sh
- # closing bracket as last line ends with '\'
- echo ")" >>/mnt/var/X11R6/bin/xdialog.sh
- chmod 755 /mnt/var/X11R6/bin/xdialog.sh
-
- # copy xdm files, so we could choose them before we log in
- for i in ${vmdir}/xdmsessions/${pool}/*.desktop;do
- cp ${i} /mnt/etc/X11/sessions/
- done
- else
- error "$scfg_vmchs" nonfatal
- fi
- # we configured vmware, so we can delete the not_configured file
- rm /mnt/etc/vmware/not_configured 2>/dev/null
-
- # copy dhcpd.conf and nat for vmnet8 (nat)
- # fixme: It should be possible to start just one vmware dhcp which should
- # listen to both interfaces vmnet1 and vmnet8 ...
- cp /mnt/var/lib/vmware/templates/dhcpd.conf \
- /mnt/etc/vmware/vmnet8/dhcpd 2>/dev/null
- cp /mnt/var/lib/vmware/templates/nat.conf \
- /mnt/etc/vmware/vmnet8/nat 2>/dev/null
-fi
-
-echo "done with 'VMware' os-plugin ...";
+if [ -e /initramfs/plugin-conf/VMware.conf ]; then
+
+ # load needed variables
+ . /initramfs/plugin-conf/VMware.conf
+
+ # Test if this plugin is activated
+ if [ $VMware_active -ne 0 ]; then
+
+ [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'VMware' os-plugin ...";
+
+ # Load general configuration
+ . /initramfs/machine-setup
+ # we need to load the function file for:
+ # uri_token, testmkd
+ . /etc/functions
+ # D_INITDIR is defined in the following file:
+ . /etc/sysconfig/config
+
+ echo " * VMware part 1"
+ #############################################################################
+ # vmware stuff first part: two scenarios
+ # * VM images in /usr/share/vmware - then simply link
+ # * VM images via additional mount (mount source NFS, NBD, ...)
+ if [ "x${vmware}" != "x" ] && [ "x${vmware}" != "xno" ] ; then
+ # map slxgrp to pool, so it's better to understand
+ pool=${slxgrp}
+ # if we dont have slxgrp defined
+ [ -z "${pool}" ] && pool="default"
+
+ # get source of vmware image server (get type, server and path)
+ if strinstr "/" "${vmware}" ; then
+ vmimgprot=$(uri_token ${vmware} prot)
+ vmimgserv=$(uri_token ${vmware} server)
+ vmimgpath="$(uri_token ${vmware} path)"
+ fi
+ if [ -n "${vmimgserv}" ] ; then
+ testmkd /mnt/var/lib/vmware
+ case "${vmimgprot}" in
+ *nbd)
+ ;;
+ lbdev)
+ # we expect the stuff on toplevel directory, filesystem type should be
+ # autodetected here ... (vmimgserv is blockdev here)
+ vmbdev=/dev/${vmimgserv}
+ waitfor ${vmbdev} 20000
+ echo -e "ext2\nreiserfs\nvfat\nxfs" >/etc/filesystems
+ mount -o ro ${vmbdev} /mnt/var/lib/vmware || error "$scfg_evmlm" nonfatal
+ ;;
+ *)
+ # we expect nfs mounts here ...
+ for proto in tcp udp fail; do
+ [ $proto = "fail" ] && { error "$scfg_nfs" nonfatal;
+ noimg=yes; break;}
+ mount -n -t nfs -o ro,nolock,$proto ${vmimgserv}:${vmimgpath} \
+ /mnt/var/lib/vmware && break
+ done
+ ;;
+ esac
+ fi
+ fi
+
+ echo " * VMware part 2"
+
+ #############################################################################
+ # vmware stuff second part: setting up the environment
+
+ # create needed directories and files
+ if [ "x${vmware}" != "x" ] && [ "x${vmware}" != "xno" ] ; then
+ for i in /etc/vmware/vmnet1/dhcpd /etc/vmware/vmnet8/nat \
+ /etc/vmware/vmnet8/dhcpd /var/run/vmware /etc/vmware/loopimg \
+ /etc/vmware/fd-loop /var/X11R6/bin /etc/X11/sessions; do
+ testmkd /mnt/$i
+ done
+ # create needed devices (not created automatically via module load)
+ for i in "/dev/vmnet0 c 119 0" "/dev/vmnet1 c 119 1" \
+ "/dev/vmnet8 c 119 8" "/dev/vmmon c 10 165"; do
+ mknod $i
+ done
+ # create the vmware startup configuration file /etc/vmware/locations
+ # fixme --> ToDo
+ # echo -e "answer VNET_8_NAT yes\nanswer VNET_8_HOSTONLY_HOSTADDR \n\
+ #192.168.100.1\nanswer VNET_8_HOSTONLY_NETMASK 255.255.255.0\n\
+ #file /etc/vmware/vmnet8/dhcpd/dhcpd.conf\n\
+ # remove_file /etc/vmware/not_configured" >/mnt/etc/vmware/locations
+
+ chmod 0700 /dev/vmnet*
+ chmod 1777 /mnt/etc/vmware/fd-loop
+ # loop file for exchanging information between linux and vmware guest
+ if modprobe ${MODPRV} loop; then
+ mdev -s
+ else
+ : #|| error "" nonfatal
+ fi
+ # mount a clean tempfs (bug in UnionFS prevents loopmount to work)
+ strinfile "unionfs" /proc/mounts && \
+ mount -n -o size=1500k -t tmpfs vm-loopimg /mnt/etc/vmware/loopimg
+ # create an empty floppy image of 1.4MByte size
+ dd if=/dev/zero of=/mnt/etc/vmware/loopimg/fd.img \
+ count=2880 bs=512 2>/dev/null
+ chmod 0777 /mnt/etc/vmware/loopimg/fd.img
+ # use dos formatter from rootfs (later stage4)
+ LD_LIBRARY_PATH=/mnt/lib /mnt/sbin/mkfs.msdos \
+ /mnt/etc/vmware/loopimg/fd.img >/dev/null 2>&1 #|| error
+ mount -n -t msdos -o loop,umask=000 /mnt/etc/vmware/loopimg/fd.img \
+ /mnt/etc/vmware/fd-loop
+ echo -e "usbfs\t\t/proc/bus/usb\tusbfs\t\tauto\t\t 0 0" >> /mnt/etc/fstab
+ # needed for VMware 5.5.3 and versions below
+ echo -e "\tmount -t usbfs usbfs /proc/bus/usb 2>/dev/null" \
+ >>/mnt/etc/${D_INITDIR}/boot.slx
+ # TODO: we still use this function? Prove if we can delete it.
+ config_vmware chmod 1777 /mnt/var/run/vmware # define a variable where gdm/kdm should look for additional sessions # do we really need it? # export vmsessions=/var/lib/vmware/vmsessions
+
+ # directory of templates and xdialog files
+ vmdir=/mnt/var/lib/vmware
+
+ if cp ${vmdir}/templates/xdialog.sh /mnt/var/X11R6/bin/ 2>/dev/null; then
+ # create default.desktop for kdm
+ echo -e "[Desktop Entry]\nEncoding=UTF8\nName=Default\nName[de]=Standard"\
+ >/mnt/etc/X11/sessions/default.desktop
+
+ #I dont like this part, but there is no simple workaround. We need to
+ #create xdialog.sh on every box :(
+ echo "Exec=/var/X11R6/bin/xdialog.sh" \
+ >>/mnt/etc/X11/sessions/default.desktop
+ echo "Type=Application" >>/mnt/etc/X11/sessions/default.desktop
+
+ # /usr/share/xsessions/* files for the menu
+ for i in /mnt/usr/share/xsessions/*.desktop; do
+ # execute
+ echo "\"$(grep '^Exec=' ${i}|sed 's/^Exec=//')\" \\" \
+ >>/mnt/var/X11R6/bin/xdialog.sh
+ # short description
+ echo "\"$(grep '^Name=' ${i}|sed 's/^Name=//')\" \\" \
+ >>/mnt/var/X11R6/bin/xdialog.sh
+ # long description
+ echo "\"$(grep '^Comment=' ${i}|sed 's/^Comment=//')\" \\" \
+ >>/mnt/var/X11R6/bin/xdialog.sh
+ done
+ # all virtual machine clients
+ cat ${vmdir}/xdialog-files/${pool}/*.xdialog \
+ >>/mnt/var/X11R6/bin/xdialog.sh
+ # closing bracket as last line ends with '\'
+ echo ")" >>/mnt/var/X11R6/bin/xdialog.sh
+ chmod 755 /mnt/var/X11R6/bin/xdialog.sh
+
+ # copy xdm files, so we could choose them before we log in
+ for i in ${vmdir}/xdmsessions/${pool}/*.desktop;do
+ cp ${i} /mnt/etc/X11/sessions/
+ done
+ else
+ error "$scfg_vmchs" nonfatal
+ fi
+ # we configured vmware, so we can delete the not_configured file
+ rm /mnt/etc/vmware/not_configured 2>/dev/null
+
+ # copy dhcpd.conf and nat for vmnet8 (nat)
+ # fixme: It should be possible to start just one vmware dhcp which should
+ # listen to both interfaces vmnet1 and vmnet8 ...
+ cp /mnt/var/lib/vmware/templates/dhcpd.conf \
+ /mnt/etc/vmware/vmnet8/dhcpd 2>/dev/null
+ cp /mnt/var/lib/vmware/templates/nat.conf \
+ /mnt/etc/vmware/vmnet8/nat 2>/dev/null
+ fi
+
+ [ $DEBUGLEVEL -gt 0 ] && echo "done with 'VMware' os-plugin ...";
+
+ fi
+fi \ No newline at end of file