summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDirk von Suchodoletz2006-10-08 17:44:39 +0200
committerDirk von Suchodoletz2006-10-08 17:44:39 +0200
commit2e403aa51696d60aa1030498834b2d99a94db8fd (patch)
tree0cda0ac049a8a47b10180c0bf8a51c8577b1a4fa
parentAdded hardware IDs for detection of some intel gfx controller ... (diff)
downloadcore-2e403aa51696d60aa1030498834b2d99a94db8fd.tar.gz
core-2e403aa51696d60aa1030498834b2d99a94db8fd.tar.xz
core-2e403aa51696d60aa1030498834b2d99a94db8fd.zip
Bugfix in redirection in functions, moved ldap-stuff to ldap-functions
(at the moment not ash compatible), added special mkdxsinitrd.64bit (hack for clean 64bit environment), put hint to runvmware (special vmem file generated in tmpDirectory (of preferences), special check for lib64 for Xorg in hwautocfg ... git-svn-id: http://svn.openslx.org/svn/openslx/trunk@456 95ad53e4-c205-0410-b2fa-d234c58c8868
-rw-r--r--initramfs/distro-specs/suse/functions-default4
-rwxr-xr-xinitramfs/initrd-stuff/bin/hwautocfg6
-rw-r--r--initramfs/initrd-stuff/etc/functions94
-rw-r--r--initramfs/initrd-stuff/etc/ldap-functions75
-rwxr-xr-xinitramfs/mkdxsinitrd.64bit760
-rwxr-xr-xvmware/runvmware6
6 files changed, 856 insertions, 89 deletions
diff --git a/initramfs/distro-specs/suse/functions-default b/initramfs/distro-specs/suse/functions-default
index f2548b0c..bb4f1830 100644
--- a/initramfs/distro-specs/suse/functions-default
+++ b/initramfs/distro-specs/suse/functions-default
@@ -3,7 +3,7 @@
# inclusion of the main functions file). This file is the main base for the
# several SuSE distro versions
#
-# Dirk von Suchodoletz <dvs@OpenSLX.com>, 29-07-2006
+# Dirk von Suchodoletz <dvs@OpenSLX.com>, 07-10-2006
#
# (c) 2006 - RZ Universitaet Freiburg
# (c) 2006 OpenSLX.org Project
@@ -443,6 +443,8 @@ rllinker "portmap" "02" "20"
config_nis () {
if [ -f /mnt/etc/${D_INITDIR}/ypbind ] ; then
rllinker "ypbind" "06" "16"
+ config_portmap
+ testmkd /mnt/var/yp/nicknames
else
error "$df_erryp" nonfatal
fi
diff --git a/initramfs/initrd-stuff/bin/hwautocfg b/initramfs/initrd-stuff/bin/hwautocfg
index c17df471..af8442a6 100755
--- a/initramfs/initrd-stuff/bin/hwautocfg
+++ b/initramfs/initrd-stuff/bin/hwautocfg
@@ -3,7 +3,7 @@
# universal (distro independent) hardware autoconfiguration script for
# OpenSLX linux diskless clients, using hwconfig from knoppix as base tool
#
-# Dirk von Suchodoletz <dvs@OpenSLX.com>, 27-09-2006
+# Dirk von Suchodoletz <dvs@OpenSLX.com>, 07-10-2006
#
# (c) 2003 - 2006 - RZ Universitaet Freiburg
# (c) 2006 - OpenSLX.org Project
@@ -141,8 +141,8 @@ for section in Files ServerFlags Module InputDevice Monitor \
Files)
echo -e ${Files} >>$xfc
# check for 64bit CPU/installation (fixme!!)
- [ -n "$amd64" ] && \
- echo '"\tModulePath\t"/usr/X11R6/lib64/modules"\n' >>$xfc
+ [ -d "/mnt/usr/X11R6/lib64/modules" ] && \
+ echo -e '\tModulePath\t"/usr/X11R6/lib64/modules"\n' >>$xfc
for i in ${D_XFONTPATH} ; do
echo -e "\tFontPath\t\"$i/\"" >>$xfc ; done
;;
diff --git a/initramfs/initrd-stuff/etc/functions b/initramfs/initrd-stuff/etc/functions
index bc9bc9b7..f4355e0f 100644
--- a/initramfs/initrd-stuff/etc/functions
+++ b/initramfs/initrd-stuff/etc/functions
@@ -82,7 +82,7 @@ else
echo -e "${error_msg}${e_msg}${error_shell}"
# load usb modules to have keyboard enabled - they might have to be
# copied into initramfs with mkdxsinitramfs ...
- modprobe -a usbcore uhci-hcd ohci-hcd usbhid 2>&1 >/dev/null
+ modprobe -a usbcore uhci-hcd ohci-hcd usbhid >/dev/null 2>&1
/bin/sh
echo -n "Reboot now? [y]"
read input
@@ -96,8 +96,8 @@ fi
#######################################################################
# system uptime for performance analysis
sysup () {
-uptime=$(sed -e "s, .*,,;s,\.,," /proc/uptime)
-echo "${uptime} ms."
+uptime=$(sed -e "s, .*,," /proc/uptime)
+echo "${uptime} s."
# if start times are kept, a summary of runtimes would be possible too
}
@@ -346,7 +346,7 @@ else
loadmod /lib/modules/@@@KERNVER@@@/kernel/net/packet/af_packet.ko \
"needed for dhcp";
echo "Starting $dhcp for configuration"
- mkdir /var/lib/dhcp 2>&1 >/dev/null
+ mkdir /var/lib/dhcp >/dev/null 2>&1
fi
export client="$dhcp"
case $dhcp in
@@ -354,13 +354,13 @@ case $dhcp in
mkdhclconf $vci
ln -s /bin/dhcpmkconfig /bin/dhclient-script
dhclient -cf /etc/dhclient.conf -lf /var/lib/dhcp/dhclient.leases \
- -q eth0 2>&1 >/dev/null || error "$error_dhclient"
+ -q eth0 >/dev/null 2>&1 || error "$error_dhclient"
;;
dhcpcd)
[ -n $vci ] && vci="-i $vci"
ln -s /bin/dhcpmkconfig /bin/dhcpcd.exe
dhcpcd $vci -L /var/lib/dhcp -c /bin/dhcpcd.exe -T -t 30 eth0 \
- 2>&1 >/dev/null || error "$error_dhcpcd"
+ >/dev/null 2>&1 || error "$error_dhcpcd"
;;
pump)
error "$error_pump"
@@ -401,14 +401,14 @@ local dst=/tmp/$(basename $1)
# tftp get part
case "$tftp" in
*/atftp)
- atftp -g -r $1 -l $dst $2 2>&1>/dev/null
+ atftp -g -r $1 -l $dst $2 >/dev/null 2>&1
;;
*/tftp)
# distinguish between busybox tftp and standalone (in.tftp) client
if [ -x /bin/busybox ] ; then
tftp -g -r $1 -l $dst $2 2>/dev/null
else
- echo "get $1 $dst" | tftp $2 2>&1>/dev/null
+ echo "get $1 $dst" | tftp $2 >/dev/null 2>&1
fi
;;
esac
@@ -462,7 +462,7 @@ echo "fileget via $srvproto finished" > /tmp/file-done
# function for creating directories after testing of their existance
# avoids to recreate directories in union mounts
testmkd () {
- test -d $1 || mkdir -p $1 &>/dev/null
+ test -d $1 || mkdir -p $1 >/dev/null 2>&1
}
#######################################################################
@@ -525,82 +525,6 @@ echo "finished" > /tmp/ldcfg
}
#######################################################################
-# configuration via ldap
-# get_timeranges: helper function for ldapconf, retrieving timeranges
-# of machineconfig-objects under search base $1 (Host,Group,Default)
-get_timeranges(){
-trquery=`ldapsearch -x -H ldap://$ldapserver -b $1 -D $user -w $pwd -LLL \
-"(objectclass=machineconfig)" Timerange|sed -n '/Tim*/p'|sed 's/TimeRange: /#/'`
-}
-# matching_timerange: helper function for ldapconf to get "most
-# specific timerange" matching actual time
-matching_timerange(){
-match=0
-lines=$[`echo $trquery | sed 's/#/\n#/g'|wc -l` -1]
-for ((i=0;i<$lines;i++)) ; do
- timerange[$i]=`echo $trquery | cut -d "#" -f $[$i+2] | sed 's/ //g'`
-done
-while true ; do
- for ((i=0;i<$lines;i++)) ; do
- trday=`echo ${timerange[i]} | cut -d "_" -f 1`
- trbegin=`echo ${timerange[i]} | cut -d "_" -f 2`
- trend=`echo ${timerange[i]} | cut -d "_" -f 3`
- if [ $trday == $wday ] && [ $trday != "X" ] && [ $trbegin != "X" ] && \
- [ $trbegin -le $time ] && [ $time -le $trend ]; then
- echo $wday $time "[D H H]match ->" ${timerange[i]}
- tr=${timerange[i]}
- match=1 && break
- fi
- done
- if [ $match == 1 ] ; then break ; fi
- for ((i=0;i<$lines;i++)) ; do
- trday=`echo ${timerange[i]} | cut -d "_" -f 1`
- trbegin=`echo ${timerange[i]} | cut -d "_" -f 2`
- trend=`echo ${timerange[i]} | cut -d "_" -f 3`
- if [ $trday == $wday ] && [ $trbegin == "X" ] && [ $trend == "X" ]; then
- echo $wday $time "[D _ _]match ->" ${timerange[i]}
- tr=${timerange[i]}
- match=1 && break
- fi
- done
- if [ $match == 1 ] ; then break ; fi
- for ((i=0;i<$lines;i++)) ; do
- trday=`echo ${timerange[i]} | cut -d "_" -f 1`
- trbegin=`echo ${timerange[i]} | cut -d "_" -f 2`
- trend=`echo ${timerange[i]} | cut -d "_" -f 3`
- if [ $trday == "X" ] && [ $trbegin != "X" ] && [ $trbegin -le $time ] && \
- [ $time -le $trend ]; then
- echo $wday $time "[_ H H]match ->" ${timerange[i]}
- tr=${timerange[i]}
- match=1 && break
- else
- if [ ${timerange[$i]} == "X_X_X" ]; then
- echo $wday $time "[_ _ _]match ->" ${timerange[i]}
- tr="X_X_X" && match=1
- else
- match=0
- fi
- fi
- done
- if [ $match == 1 ] || [ $match == 0 ] ; then break ; fi
-done
-}
-# get_machineconfig: helper function for ldapconf, writing machine
-# config data of one timerange $tr into file "tmp/confvialdap/$tr"
-get_machineconfig(){
-ldapsearch -x -H ldap://$ldapserver -b $1 -D $user -w $pwd -LLL \
-"(&(objectclass=machineconfig)(timerange=$tr))"|sed '/dn:/d'|sed '/ou=/d'|\
-sed '/dc=/d'|sed '/objectC*/d'|sed '/Tim*/d'|sed '/cn:/d'|sed '/desc*/d'|sed \
-'s/: /=/g'|sed 's/-/_/g' > tmp/confvialdap/$tr
-}
-
-ldapconf () {
-local ldapserver=$1
-error "$error_ldapcfg"
-echo "not implemented" > /tmp/ldap-done
-}
-
-#######################################################################
# base passwd/shadow, the standard user present in every system. All
# other system users should be generated within the service function
basepasswd () {
diff --git a/initramfs/initrd-stuff/etc/ldap-functions b/initramfs/initrd-stuff/etc/ldap-functions
new file mode 100644
index 00000000..d2b6753e
--- /dev/null
+++ b/initramfs/initrd-stuff/etc/ldap-functions
@@ -0,0 +1,75 @@
+#######################################################################
+# configuration via ldap
+# get_timeranges: helper function for ldapconf, retrieving timeranges
+# of machineconfig-objects under search base $1 (Host,Group,Default)
+get_timeranges(){
+trquery=`ldapsearch -x -H ldap://$ldapserver -b $1 -D $user -w $pwd -LLL \
+"(objectclass=machineconfig)" Timerange|sed -n '/Tim*/p'|sed 's/TimeRange: /#/'`
+}
+# matching_timerange: helper function for ldapconf to get "most
+# specific timerange" matching actual time
+matching_timerange(){
+match=0
+lines=$[`echo $trquery | sed 's/#/\n#/g'|wc -l` -1]
+for ((i=0;i<$lines;i++)) ; do
+ timerange[$i]=`echo $trquery | cut -d "#" -f $[$i+2] | sed 's/ //g'`
+done
+while true ; do
+ for ((i=0;i<$lines;i++)) ; do
+ trday=`echo ${timerange[i]} | cut -d "_" -f 1`
+ trbegin=`echo ${timerange[i]} | cut -d "_" -f 2`
+ trend=`echo ${timerange[i]} | cut -d "_" -f 3`
+ if [ $trday == $wday ] && [ $trday != "X" ] && [ $trbegin != "X" ] && \
+ [ $trbegin -le $time ] && [ $time -le $trend ]; then
+ echo $wday $time "[D H H]match ->" ${timerange[i]}
+ tr=${timerange[i]}
+ match=1 && break
+ fi
+ done
+ if [ $match == 1 ] ; then break ; fi
+ for ((i=0;i<$lines;i++)) ; do
+ trday=`echo ${timerange[i]} | cut -d "_" -f 1`
+ trbegin=`echo ${timerange[i]} | cut -d "_" -f 2`
+ trend=`echo ${timerange[i]} | cut -d "_" -f 3`
+ if [ $trday == $wday ] && [ $trbegin == "X" ] && [ $trend == "X" ]; then
+ echo $wday $time "[D _ _]match ->" ${timerange[i]}
+ tr=${timerange[i]}
+ match=1 && break
+ fi
+ done
+ if [ $match == 1 ] ; then break ; fi
+ for ((i=0;i<$lines;i++)) ; do
+ trday=`echo ${timerange[i]} | cut -d "_" -f 1`
+ trbegin=`echo ${timerange[i]} | cut -d "_" -f 2`
+ trend=`echo ${timerange[i]} | cut -d "_" -f 3`
+ if [ $trday == "X" ] && [ $trbegin != "X" ] && [ $trbegin -le $time ] && \
+ [ $time -le $trend ]; then
+ echo $wday $time "[_ H H]match ->" ${timerange[i]}
+ tr=${timerange[i]}
+ match=1 && break
+ else
+ if [ ${timerange[$i]} == "X_X_X" ]; then
+ echo $wday $time "[_ _ _]match ->" ${timerange[i]}
+ tr="X_X_X" && match=1
+ else
+ match=0
+ fi
+ fi
+ done
+ if [ $match == 1 ] || [ $match == 0 ] ; then break ; fi
+done
+}
+# get_machineconfig: helper function for ldapconf, writing machine
+# config data of one timerange $tr into file "tmp/confvialdap/$tr"
+get_machineconfig(){
+ldapsearch -x -H ldap://$ldapserver -b $1 -D $user -w $pwd -LLL \
+"(&(objectclass=machineconfig)(timerange=$tr))"|sed '/dn:/d'|sed '/ou=/d'|\
+sed '/dc=/d'|sed '/objectC*/d'|sed '/Tim*/d'|sed '/cn:/d'|sed '/desc*/d'|sed \
+'s/: /=/g'|sed 's/-/_/g' > tmp/confvialdap/$tr
+}
+
+ldapconf () {
+local ldapserver=$1
+error "$error_ldapcfg"
+echo "not implemented" > /tmp/ldap-done
+}
diff --git a/initramfs/mkdxsinitrd.64bit b/initramfs/mkdxsinitrd.64bit
new file mode 100755
index 00000000..010657e3
--- /dev/null
+++ b/initramfs/mkdxsinitrd.64bit
@@ -0,0 +1,760 @@
+#!/bin/bash
+#
+# Description: universal (distro independent) generator for initial
+# ramdisks for linux diskless clients (stage2 system
+# setup)
+#
+# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 03-10-2006
+# Nico Dietrich
+# Felix Endres
+# <mj0@uni-freiburg.de> (xenbr), 27-09-2006
+#
+# Copyright: (c) 2003 - 2006 - RZ Universitaet Freiburg
+# (c) 2006 - openslx.org project
+#
+# Version: 0.4.5d
+
+# debug level of script itself
+DEBUG=1
+# debug level of the initramfs (to trigger the addition of specific
+# binaries and kernel modules)
+IRFSDEBUG=1
+COMETCEXCL="XF86Config*\nissue*\nmtab*\nfstab*\n"
+COMDIRINDXS="/tmp/scratch /var/lib/nobody"
+
+# distro specific settings read from configuration file
+# D_SYSCONFDIR - system wide configuration settings in /etc - sysconfig in
+# SuSE and RedHat, default in Debian and Ubuntu, conf.d in Gentoo
+# D_ETCEXCL - list of files, wildcards to be excluded from /etc when using
+# bind mounts
+# D_DIRINBINDMNT - lists of directories to be created in bind mounted rw
+# part of the client filesystem
+# D_RODIRSINRW - ReadOnly Directories in RW part of filesystem to save on
+# TempFS usage
+# D_DIRINDXS - directories in client filesystem which should be present
+# anyhow
+# D_BINDMNT - any code which is specific in bind mount environment
+# D_RCDIRS - runlevel directories relative to /etc
+# D_HWMODTOIGNORE -
+
+# just ensure that variables are set and the user gets an idea if
+# something fails
+D_SYSCONFDIR="<set in ~/distro-config/distro file>"
+D_ETCEXCL="<set in ~/distro-config/distro file>"
+D_BINDMPTS="<set in ~/distro-config/distro file>"
+D_DIRINBINDMNT="<set in ~/distro-config/distro file>"
+D_RODIRSINRW="<set in ~/distro-config/distro file>"
+D_DIRINDXS="<set in ~/distro-config/distro file>"
+D_BINDMNT="<set in ~/distro-config/distro file>"
+D_INITDIR="<set in ~/distro-config/distro file>"
+D_INITBOOTD="<set in ~/distro-config/distro file>"
+D_RCDIRS="<set in ~/distro-config/distro file>"
+D_RCDIRSINRW="<set in ~/distro-config/distro file>"
+D_INITSCRIPTS="<set in ~/distro-config/distro file>"
+D_XF86CONFFILE="<set in ~/distro-config/distro file>"
+D_XFONTPATH="<set in ~/distro-config/distro file>"
+D_DEFAULTCOUNTRY="<set in ~/distro-config/distro file>"
+# read in the global settings
+SLX_CONFIG_PATH=@@@SLX_CONFIG_PATH@@@
+[ -f $SLX_CONFIG_PATH/settings.default ] && \
+ . $SLX_CONFIG_PATH/settings.default
+[ -f $SLX_CONFIG_PATH/settings.local ] && \
+ . $SLX_CONFIG_PATH/settings.local
+
+#########################################################################
+# End of global variable declaration, nothing needed to be changed at
+# default below that line
+
+usage()
+{
+ echo -e "mkdxsinitrd [-bgh] [-k kernel version] [-i path/file] \
+[-f module(s)] [-n module(s)] [-m module(s)] [-r path] [-s theme]\n"
+ echo "OPTIONEN"
+ echo " -g Benutze glibc als Basisbibliothek in der ramdisk."
+ echo " -b Use busybox instead of separate binaries."
+ echo " -h Zeige Informationen zur Benutzung."
+ echo " -k Kernelversion"
+ echo " mkdxsinitrd versucht die aktuellste Kernelversion zu finden."
+ echo " Falls dies nicht klappt, oder eine andere Kernelversion"
+ echo " gewünscht ist kann diese hier angegeben werden (funktioniert"
+ echo " natürlich nur für auf dem Hostsystem vorhandene Kernelversion"
+ echo " nen)."
+ echo " -i path/file"
+ echo " Optionale Angabe wo die erstellte ramdisk hingeschrieben werden"
+ echo " soll."
+ echo " -f Modulliste"
+ echo " Kernelmodule die benutzt werden sollen um das Rootfilesystem"
+ echo " über das dem Netzwerk zu mounten (z.B. nfs, nbd dnbd)."
+ echo " -n Modulliste"
+ echo " Kernelmodule zum Betrieb der Clientnetzwerkkarten (z.B. e100 tg3"
+ echo " via-rhine)."
+ echo " -m Modulliste"
+ echo " Kernelmodule (misc) die nicht von -n bzw. -f abgedeckt werden"
+ echo " (z.B. xenbr for xen network bridge)."
+ echo " -r path"
+ echo " Pfad zum Wurzelverzeichnis des zu exportierenden Betriebsystems"
+ echo " (z.B. /export/10.1)."
+ echo " -s theme (for splash)"
+ echo " -d debug (add special modules to initramfs)"
+ echo " -D Name"
+ echo " Name der Distribution der Betriebsystemvorlage"
+ echo " -v Version"
+ echo " Versionskennung der Distribution der Betriebsystemvorlage"
+ exit 0
+}
+
+# replaces which command to find executables inside ROOTDIR
+binfinder()
+{
+local PROGRAM="$1"
+local RET=1
+for ELEMENT in bin sbin usr/bin usr/sbin usr/local/bin \
+ usr/local/sbin usr/bin/X11; do
+ if [ -f "${ROOTDIR}/$ELEMENT/$PROGRAM" ] && \
+ [ -x "${ROOTDIR}/$ELEMENT/$PROGRAM" ]; then
+ printf '%s\n' "${ROOTDIR}/$ELEMENT/$PROGRAM"
+ RET=0
+ break
+ fi
+done
+return $RET
+}
+
+# copy some binary to given destination. Takes binary in $1 and
+# destination in $2
+cobi()
+{
+local DEST=$2
+local FPTB=`binfinder $1`
+if [ -z ${FPTB} ] ; then
+ return 1;
+elif [ -L ${FPTB} ] ; then
+ # do not copy the link but the binary the link points to
+ local LINKDEST=`ls -la ${FPTB} | sed -e "s,.* ,,"`
+ case $LINKDEST in
+ /*) FPTB=${ROOTDIR}${LINKDEST}
+ ;;
+ *) ;;
+ esac
+ cp ${FPTB} ${INSTDIR}/${DEST}
+else
+ cp ${FPTB} ${INSTDIR}/${DEST}
+fi
+# get an idea which libraries are needed
+# fixme: that might not work if executed on different architecture than
+# client root is
+chroot ${ROOTDIR} ldd ${FPTB#${ROOTDIR}*} >> ${INSTDIR}/tmp/libraries
+# possible solution: use the server binary, get library names and look
+# them up manually - fixme: does ldd understand foreign architecture
+# binaries
+}
+
+# replace copy
+repco()
+{
+local FILENAME=$1
+DATE=`date +%m-%d-%Y`
+# do not forget to define all variables which should be replaced within
+# the start and configuration scripts. All comment lines will be deleted.
+if [ -d initrd-stuff/${FILENAME} ] ; then
+ [ -d ${INSTDIR}/${FILENAME} ] || mkdir -p ${INSTDIR}/${FILENAME}
+else
+ if file initrd-stuff/${FILENAME}| grep "ELF" &>/dev/null ; then
+ cp initrd-stuff/${FILENAME} ${INSTDIR}/${FILENAME}
+ elif [ -L initrd-stuff/${FILENAME} ] ; then
+ cp -a initrd-stuff/${FILENAME} ${INSTDIR}/${FILENAME%/*}
+ else
+ sed -e "s,@@@INSTDIR@@@,${INSTDIR},g;s,@@@KERNVER@@@,${KERNVER},g" \
+ -e "s,@@@DISTRO@@@,${DISTRO}-${DISTRO_VER},g;s,@@@NETIF@@@,${NET_IF},g" \
+ -e "s,@@@NWMODULES@@@,${NWMODULES},g" \
+ -e "s,@@@COMDIRINDXS@@@,${COMDIRINDXS},g" \
+ -e "s,@@@COMETCEXCL@@@,${COMETCEXCL},g" \
+ -e "s,@@@DATE@@@,${DATE},g;/^#[^!].*/d" \
+ initrd-stuff/${FILENAME} >> ${INSTDIR}/${FILENAME}
+ [ -x busybox -a "$use_busybox" = 1 ] && sed -e "s,^#!/bin/sh,#!/bin/ash," \
+ -i ${INSTDIR}/${FILENAME}
+ fi
+fi
+}
+
+copy_distro_stuff() {
+ # copy first the default distro dependent configuration (variables) and
+ # function files, then append to each the distro/version specific file
+ # variables, functions set in default might that way be overwritten by
+ # definitions in distro/version specific files
+ # fixme!! files should be taken from /usr/share/openslx/distro-specs
+ cat distro-specs/$1/config-default >${INSTDIR}/etc/sysconfig/config
+ cat distro-specs/$1/config-$2 >>${INSTDIR}/etc/sysconfig/config
+ #[ -f $SLX_CONFIG_PATH/settings.default ] && \
+ # cat $SLX_CONFIG_PATH/settings.default >>${INSTDIR}/etc/sysconfig/config
+ #[ -f $SLX_CONFIG_PATH/settings.local ] && \
+ # cat $SLX_CONFIG_PATH/settings.local >>${INSTDIR}/etc/sysconfig/config
+ cat distro-specs/$1/functions-default >${INSTDIR}/etc/distro-functions
+ cat distro-specs/$1/functions-$2 >>${INSTDIR}/etc/distro-functions
+ # would be cool not to copy .svn here ...
+ # fixme!! works only for etc directories. If dir exists then next copy places
+ # file into the existing dir
+ cp -a distro-specs/$1/files-default ${INSTDIR}/etc/sysconfig/files 2>/dev/null
+ # ... so remove them afterwards ...
+ find ${INSTDIR}/etc/sysconfig/files \
+ -regex ".*/\..*" -exec rm -rf {} 2>/dev/null \;
+}
+
+# This function makes the directory of this script to the present working
+# directory
+# It is called within precheck()
+# Does also work when called by symbolic links (even for nested links).
+goto_script_dir()
+{
+ [ $DEBUG -ge 2 ] && echo "Aufgerufen wurde $0, checking if it is a link"
+ calleddetails=`ls -l $0` # get the file flags (e.g. lrwxrwxrwx)
+ [ $DEBUG -ge 2 ] && echo $calleddetails
+
+ calleddir=${0%/*} # Strip the filename from path
+ [ $DEBUG -ge 2 ] && echo "Wechsele ins Verzeichnis des aufgerufenen scripts/links ($calleddir)"
+ cd $calleddir
+
+ while index=`expr index "$calleddetails" "l"`;
+ [ $index -eq 1 ]; do
+
+ [ $DEBUG -ge 2 ] && echo "It is a link"
+ target=`echo $calleddetails | awk '{print $NF}'`
+ [ $DEBUG -ge 2 ] && echo "The target of the link is: $target"
+ hasslash=`expr index "$target" "/"`
+ if [ $hasslash -ne 0 ]; then
+ targetpath=${target%/*} # extract the pathname
+ [ $DEBUG -ge 2 ] && echo "Following link to $targetpath"
+ cd $targetpath
+ else
+ [ $DEBUG -ge 2 ] && echo "It is in the same directory as the link"
+ fi
+ targetfile=`basename $target`
+ [ $DEBUG -ge 2 ] && echo "The target file of the link is: $targetfile"
+ calleddetails=`ls -l $targetfile` # get the file flags (e.g. lrwxrwxrwx)
+ [ $DEBUG -ge 2 ] && echo $calleddetails
+ done
+ [ $DEBUG -ge 2 ] && pwd
+
+}
+
+# add a bootsplash image to the initial ramdisk, only SuSE at the moment
+# theming
+
+add_theme() {
+
+theme="${theme}"
+splashsizes="640x480 800x600 1024x768 1280x1024 1400x1050 1600x1200"
+splash_image=
+splash_bin=$(chroot $ROOTDIR which splash)
+if [ -n "$splashsizes" -a -n "$splash_bin" ]; then
+
+ themes_dir="../theming/openslx/bootsplash"
+ if [ -d "/opt/openslx/share/themes/${theme}/bootsplash" ]; then
+ themes_dir="/opt/openslx/share/themes/${theme}/bootsplash"
+ elif [ -d "$ROOTDIR/etc/bootsplash/themes/${theme}" ]; then
+ themes_dir="/etc/bootsplash/themes/${theme}"
+ elif [ -d "$ROOTDIR/usr/share/splash/themes/${theme}" ]; then
+ themes_dir="/usr/share/splash/themes/${theme}"
+ fi
+
+ #fixme: very ugly ;)
+ mkdir -p $ROOTDIR/tmp/bootsplash
+ cp -a $themes_dir/* $ROOTDIR/tmp/bootsplash
+ themes=${themes_dir%bootsplash}
+ echo -e "\n\tUsing ${themes} for themes.\n"
+ themes_dir=$ROOTDIR/tmp/bootsplash
+
+ if [ -n "$themes_dir" -a \
+ -d "$themes_dir" -o -L "$themes_dir" ]; then
+ for size in $splashsizes; do
+ bootsplash_picture="$themes_dir/images/bootsplash-$size.jpg"
+ cfgname="$themes_dir/config/bootsplash-$size.cfg"
+ if [ ! -r $cfgname ] ; then
+ echo " disabled for resolution $size "
+ elif [ ! -r $bootsplash_picture ] ; then
+ echo " no image for resolution $size "
+ else
+ echo -n "${splash_image:+, }$THEME ($size)"
+ splash_image=" $splash_image ${cfgname#$ROOTDIR} "
+ fi
+ done
+ echo
+ else
+ echo "no theme selected"
+ fi
+fi
+
+# Include bootsplash image
+for image in $splash_image; do
+ # fixme: ugly hack to have the splash binary
+ chroot $ROOTDIR $splash_bin -s -f $image >> ${INSTDIR}/bootsplash
+done
+
+rm -rf $ROOTDIR/tmp/bootsplash
+
+# kdm/Xdialog theme
+cp -a ${themes}* ${INSTDIR}/usr/share/themes
+}
+
+
+#########################################################################
+# End of function declaration
+
+while getopts :bhgk:i:r:o:s:f:n:m:Sut:d:v:I:V:a: a ; do
+ case $a in
+ \:|\?)
+ case $OPTARG in
+ k) echo "-k requires kernel version parameter";;
+ i) echo "-i requires initrd path parameter";;
+ f) echo "-f requires file system module list parameter";;
+ n) echo "-n requires network module list parameter";;
+ m) echo "-m requires misc module list parameter";;
+ r) echo "-r requires root dir parameter";;
+ s) echo "-s may require theme name";;
+ t) echo "-t requires tmp dir parameter";;
+ d) echo "-d requires debug level (integer)";;
+ D) echo "-D requires linux Distribution name";;
+ v) echo "-v requires linux distribution version";;
+ I) echo "-I requires network interface parameter";;
+ V) echo "-V requires an executable to run inside linuxrc";;
+ *) echo "Unknown option: -$OPTARG"
+ echo "Try mkinitrd -h";;
+ esac
+ exit 1
+ ;;
+ b) use_busybox=1;;
+ g) use_glibc=1;;
+ k) KERNVER=$OPTARG;;
+ i) INITRD_PATH=$OPTARG ;;
+ f) FSMODULES=$OPTARG;;
+ n) NWMODULES=$OPTARG ;;
+ m) MISCMODULES=$OPTARG ;;
+ r) ROOTDIR=$OPTARG;;
+ s) theme=$OPTARG;;
+ t) INSTDIR=$OPTARG;;
+ d) IRFSDEBUG=$OPTARG;;
+ D) DISTRO=$OPTARG;;
+ v) DISTRO_VER=$OPTARG;;
+ I) NET_IF=$OPTARG;; # Not in use
+ a) acpi_dsdt="$OPTARG";; # Not in use
+ S) use_selinux=1;; # Not in use
+ l) local_init_script="$OPTARG";; # use for pre/postinit.local?
+ u) sysfs_root=1 # Not in use
+ use_udev=
+ ;;
+ h) usage;;
+ esac
+done
+shift $(expr $OPTIND - 1)
+
+
+#########################################################################
+# End of parameter, argument interpretation
+
+#Change to the directory this script is located in
+goto_script_dir
+
+# set temporary setup directory, clean it and setup basic directory
+# structure
+if [ -z "$INSTDIR" ] ; then
+ INSTDIR=/tmp/slx-tmpramfs
+fi
+rm -rf ${INSTDIR}
+mkdir -p ${INSTDIR}/{dev,proc,tmp,mnt,root,bin,sys,lib}
+ln -s /bin ${INSTDIR}/sbin
+# hack for 64bit systems
+#ln -s /lib ${INSTDIR}/lib64
+mkdir -p ${INSTDIR}/usr/share
+# needed for KNOPPIX hwsetup tool not to be confused with ${D_SYSCONFDIR}
+mkdir -p ${INSTDIR}/etc/sysconfig
+
+# if still no distro name set, try to find it using significant files
+
+if [ -z "${DISTRO}" ] ; then
+ if [ -e ${ROOTDIR}/etc/SuSE-release ] ; then
+ DISTRO=suse
+ DISTRO_VER=`grep "VERSION" ${ROOTDIR}/etc/SuSE-release | sed "s/.*= //"`
+ elif [ -e ${ROOTDIR}/etc/lsb-release ] ; then
+ . ${ROOTDIR}/etc/lsb-release
+ DISTRO=${DISTRIB_ID}
+ DISTRO_VER=${DISTRIB_RELEASE}
+ elif [ -e ${ROOTDIR}/etc/debian_version ] ; then
+ if [ $(grep Ubuntu /etc/issue | wc -l) -gt 0 ]; then
+ DISTRO=Ubuntu
+ DISTRO_VER=`sed 's/[Uu]buntu \([0-9]*\.[0-9]*\).*/\1/' /etc/issue`
+ else
+ DISTRO=debian
+ DISTRO_VER=`cat ${ROOTDIR}/etc/debian_version`
+ fi
+ elif [ -e ${ROOTDIR}/etc/gentoo-release ] ; then
+ DISTRO=gentoo
+ # any idea on the versioning scheme??
+ DISTRO_VER=""
+ else
+ echo -e "Could not detect client distribution type and version. Please \
+specify\nas command line argument (-d <distro-name> -v <distro-version>)"
+ exit 1;
+ fi
+fi
+
+# unify the description of distribution and its version
+case "${DISTRO}" in
+ Debian*|debian*|Sarge*|sarge*)
+ DISTRO=debian
+ case "${DISTRO_VER}" in
+ Sarge*|sarge*|3.1*|*)
+ DISTRO_VER=3.1
+ mkdir -p ${INSTDIR}/lib/udev
+ cp -r ${ROOTDIR}/lib/udev/* ${INSTDIR}/lib/udev/
+ ;;
+ esac
+ ;;
+ Ubuntu*|ubuntu*)
+ DISTRO=ubuntu
+ case "${DISTRO_VER}" in
+ Breezy*|breezy*)
+ DISTRO_VER=5.10
+ cp ${ROOTDIR}/lib/libnss_compat.so.2 ${INSTDIR}/lib
+ ;;
+ Dapper*|dapper*)
+ DISTRO_VER=6.06
+ ;;
+ esac
+ ;;
+ Gentoo*|gentoo*)
+ DISTRO=gentoo
+ case "${DISTRO_VER}" in
+ 2005*|*)
+ DISTRO_VER=2005.1
+ ;;
+ esac
+ ;;
+ SuSE*|suse*|Suse*|SuSe*|SUSE*|*)
+ DISTRO=suse
+ case "${DISTRO_VER}" in
+ 9*)
+ DISTRO_VER=9.3
+ ;;
+ 10.0)
+ DISTRO_VER=10.0
+ ;;
+ 10*)
+ DISTRO_VER=10.1
+ ;;
+ esac
+
+ ;;
+esac
+# at this point ${DISTRO} ${DISTRO_VER} should be fixed
+copy_distro_stuff ${DISTRO} ${DISTRO_VER}
+
+# hotplug/udev type and related stuff
+cp -a ${ROOTDIR}/etc/udev ${INSTDIR}/etc
+
+# binary and corresponding library copies could be avoided if a small
+# initial ramdisk environment of its own is generated from busybox,
+# dietlibc and similar, see odlx project page ...
+
+# devices needed rather early (copied from /tmp to /dev in init)
+mknod ${INSTDIR}/tmp/console c 5 1 &>/dev/null
+mknod ${INSTDIR}/tmp/null c 1 3 &>/dev/null
+mknod ${INSTDIR}/tmp/kmsg c 1 11 &>/dev/null
+mknod ${INSTDIR}/tmp/ctl b 241 255 &>/dev/null
+# suse specific, but might be usable with other distros too
+mknod ${INSTDIR}/tmp/bootsplash p &>/dev/null
+
+# test for the existance of busybox
+if [ "$use_busybox" = 1 ]; then
+ [ -x busybox ] || {
+ unset use_busybox
+ echo "You wanted to include busybox, but did not provide it in \
+ initrd/ directory."; }
+fi
+if [ -n "$use_busybox" ] ; then
+ cp busybox ${INSTDIR}/bin
+ for bbins in [ arping ash cat chmod chown chroot cp date \
+ dd df dmesg echo expr fdisk free hwclock insmod ip \
+ kill killall ln ls lsmod mkdir mke2fs mkfs.ext2 \
+ mkfs.ext3 mknod modprobe mount mv ps rdate rm rmmod \
+ sed sort switch_root tar test tftp time udhcpc \
+ umount uname usleep vconfig vi; do
+ ln -s /bin/busybox ${INSTDIR}/bin/$bbins
+ done
+ # fake the sh link in busybox environment
+ echo -e "#!/bin/ash\n/bin/ash \$@" > ${INSTDIR}/bin/sh
+ chmod a+x ${INSTDIR}/bin/sh
+else
+ # find and copy a shell to be used within initialramfs
+ for bbins in bash ash sh; do
+ if cobi ${bbins} bin ; then
+ ln -fs ${bbins} ${INSTDIR}/bin/sh
+ [ "${bbins}" != "ash" ] && ln -fs ${bbins} ${INSTDIR}/bin/ash
+ [ "${bbins}" != "bash" ] && ln -fs ${bbins} ${INSTDIR}/bin/bash
+ break
+ else echo "Binary not found (${bbins})"; fi
+ done
+
+ # find and copy ip setup binaries
+ for bbins in ip ifconfig; do
+ if cobi ${bbins} bin ; then
+ [ "${bbins}" = "ifconfig" ] && cobi route bin
+ break
+ else echo "Binary not found"; fi
+ done
+
+ # needed standard binaries (in init, servconfig, hwautocfg, ... scripts)
+ for bbins in \
+ cat chmod chown chroot cp expr fdisk gzip killall ln ls mkdir \
+ mkfs.ext2 modprobe mount rmmod sed sort rm tar umount
+ do
+ cobi ${bbins} bin || echo "Program ${bbins} not found"
+ done
+
+ # binaries useful for debugging purposes
+ if [ $IRFSDEBUG -gt 2 ] ; then
+ for bbins in \
+ date lsmod lsof ps strace time
+ do
+ cobi ${bbins} bin || echo "Program ${bbins} not found"
+ done
+ fi
+
+ # tftp client binary for configuration via file - get machine-setup per
+ # tftp from dhcp (or specified other) server
+ for tftp in atftp tftp ; do
+ binfinder $tftp && break;
+ done
+ cobi $tftp bin || echo "Program ${tftp} not found"
+ cp /lib/libnss_files.so.2 ${INSTDIR}/lib
+fi
+
+# one of the dhcp clients
+for dhcp in dhclient dhcpcd pump ipconfig ; do
+ binfinder $dhcp && break;
+done
+cobi $dhcp bin
+mkdir -p ${INSTDIR}/var/{lib,run}
+
+# type of hotplug/udev/dev (for etc directories see above!!)
+for bbins in udev udevd udevstart udevtrigger udevsend
+ do
+ cobi ${bbins} bin &>/dev/null || \
+ echo "Program ${bbins} not found; could be most probably ignored"
+done
+
+# if nfs is used as clients root filesystem
+cobi portmap bin
+mkdir -p ${INSTDIR}/var/lib/nfs/state
+
+# if nbd or dnbd is used as clients root filesystem
+if [ -n "${FSMODULES}" ] ; then
+for i in ${FSMODULES}; do
+ case "$i" in
+ dnbd)
+ cobi dnbd-client bin
+ ;;
+ nbd)
+ cobi nbd-client bin
+ ;;
+ esac
+done
+fi
+
+# if unionfs
+cobi unionctl bin &>/dev/null || \
+ echo "Program unionctl not found; could be ignored ..."
+
+# if cowloop
+cobi cowdev bin &>/dev/null || \
+ echo "Program cowdev not found; could be ignored ..."
+
+# distro specific additional stuff
+case "${DISTRO}" in
+ debian*)
+ cp ${ROOTDIR}/lib/libnss_compat.so.2 ${INSTDIR}/lib;;
+esac
+
+# add needed libraries depending on choosen binaries. use chroot
+# on ldd, otherwise the detection does not work properly. ldd has to be
+# static linked binary
+# fixme: procedure might have to be changed
+for lib in `cat ${INSTDIR}/tmp/libraries 2>/dev/null | \
+ sed -e "s,tls,,;s,i686/cmov,," \
+ -ne 's:\t\(.* => \)\?\(/.*\) (0x[0-9a-f]*):\2:p' | sort -u` ; do
+ baselib=`basename ${lib}`
+ test -e ${INSTDIR}/lib/${baselib} || \
+ cp /${ROOTDIR}/${lib} ${INSTDIR}/lib
+done
+rm ${INSTDIR}/tmp/libraries
+# temporaere grosse scheisse
+mv ${INSTDIR}/lib ${INSTDIR}/lib64
+mkdir ${INSTDIR}/lib
+cp /${ROOTDIR}/lib/ld-linux.so.2 ${INSTDIR}/lib
+cp /${ROOTDIR}/lib/libc.so.6 ${INSTDIR}/lib
+
+# add kernel modules and dependency files
+if [ -z "$KERNVER" ] ; then
+ KERNVER=`ls -l ${ROOTDIR}/boot/vmlinuz | grep vmlinuz | sed "s/.*vmlinuz-//"`
+fi
+if [ -z "$KERNVER" ] ; then
+ KERNVER=`ls -l ${ROOTDIR}/vmlinuz | grep vmlinuz | sed "s/.*vmlinuz-//"`
+fi
+# if no vmlinuz found, go for vmlinuz-x.yz.uv...
+if [ -z "$KERNVER" ] ; then
+ KERNVER=`ls -lt ${ROOTDIR}/boot/vmlinuz* | grep vmlinuz | sed -n "1,1s/.*vmlinuz-//p"`
+ echo "No vmlinuz-link found. Using kernel version "$KERNVER
+fi
+
+if [ -z "$KERNVER" ] ; then
+ echo "No kernel version set or detected - please use the -k flag! Exiting..."
+ exit 1
+fi
+
+if [ -z "$NWMODULES" ] ; then
+ #NWMODULES="forcedeth e1000 e100 tg3 via-rhine r8169 pcnet32 8139too 8139cp"
+ NWMODULES="forcedeth e1000 e100 tg3 via-rhine r8169 pcnet32"
+fi
+if [ -z "$FSMODULES" ] ; then
+ FSMODULES="nbd nfs"
+fi
+if [ -z "$INITRD_PATH" ] ; then
+ INITRD_PATH="${ROOTDIR}/tmp/slxinitramfs.gz"
+fi
+
+# define modules to put into initial ramdisk for debugging
+#DEBUGMODULES="uhci_hcd usbhid"
+if [ $IRFSDEBUG -gt 1 ] ; then
+ DEBUGMODULES="uhci-hcd ohci-hcd usbhid"
+else
+ DEBUGMODULES=""
+fi
+
+# put all needed modules into initial ramdisk
+mkdir -p ${INSTDIR}/lib/modules/${KERNVER}
+for module in af_packet unix ${NWMODULES} ${FSMODULES} ${MISCMODULES} \
+ ${DEBUGMODULES}; do
+ mod=`cd /${ROOTDIR}; find "lib/modules/${KERNVER}" -name ${module}.ko \
+2>/dev/null`
+
+ if [ -n "$mod" ] ; then
+ mpath=${INSTDIR}/${mod%/*}
+ mkdir -p ${mpath}
+ cp ${ROOTDIR}/$mod ${mpath}
+ # fixmee!! selection of dependent modules could be handled a little bit
+ # more clever
+ rdirprefix="${ROOTDIR}/lib/modules/${KERNVER}/kernel"
+ ddirprefix="${INSTDIR}/lib/modules/${KERNVER}/kernel"
+ case "$module" in
+ e100|8139too|via-rhine|sis900|epic100|sundance|8139cp|eepro100|pcnet32)
+ cp ${rdirprefix}/drivers/net/mii.ko \
+ ${ddirprefix}/drivers/net &>/dev/null
+ ;;
+ nfs)
+ # create directory structure for modules needed and copy them
+ # to the proper place (as expected by modprobe/modules.dep)
+ mkdir -p ${ddirprefix}/net/sunrpc
+ mkdir -p ${ddirprefix}/fs/lockd ${ddirprefix}/fs/nfs_common
+ cp ${rdirprefix}/net/sunrpc/sunrpc.ko \
+ ${ddirprefix}/net/sunrpc &>/dev/null
+ cp ${rdirprefix}/fs/lockd/lockd.ko \
+ ${ddirprefix}/fs/lockd &>/dev/null
+ cp ${rdirprefix}/fs/nfs_common/nfs_acl.ko \
+ ${ddirprefix}/fs/nfs_common &>/dev/null
+ ;;
+ ext3)
+ mkdir -p ${ddirprefix}/fs/jbd
+ cp ${rdirprefix}/fs/jbd/jbd.ko \
+ ${ddirprefix}/fs/jbd
+ ;;
+ netloop)
+ cobi brctl bin &>/dev/null || \
+ echo "Program brctl not found; could be ignored ..."
+ mkdir -p ${ddirprefix}/drivers/xen/netback
+ mkdir -p ${ddirprefix}/net/bridge
+ cp ${rdirprefix}/drivers/xen/netback/netloop.ko \
+ ${ddirprefix}/drivers/xen/netback &>/dev/null
+ cp ${rdirprefix}/net/bridge/bridge.ko \
+ ${ddirprefix}/net/bridge &>/dev/null
+ ;;
+ esac
+ fi
+done
+cp ${ROOTDIR}/lib/modules/${KERNVER}/modules.* \
+ ${INSTDIR}/lib/modules/${KERNVER}
+
+# initial ramdisk scripts: init, functions, servconfig, hwautocfg, ...
+# copy and replace variable names
+for dirs in `find initrd-stuff/* ! -regex ".*/\..*"` ; do
+ repco ${dirs##initrd-stuff/}
+done
+chmod 755 ${INSTDIR}/init \
+ ${INSTDIR}/bin/{servconfig,hwautocfg,screenres,dhcpmkconfig}
+
+# add the common default client configuration file - just to ensure to
+# have all major variables defined. !!These settings are most probably
+# are overwritten by fileget in stage3 within initramfs!!
+if [ -f /var/opt/openslx/config/default/initramfs/machine-setup ] ; then
+ cp /var/opt/openslx/config/default/initramfs/machine-setup \
+ ${INSTDIR}/etc/machine-setup
+ echo "Using /var/opt/openslx/config/default/initramfs/machine-setup"
+# use the installed default machine-setup.default
+elif [ -f /opt/openslx/share/templates/machine-setup.default ] ; then
+ cp /opt/openslx/share/templates/machine-setup.default \
+ ${INSTDIR}/etc/machine-setup
+ echo "Using /opt/openslx/share/templates/machine-setup.default"
+# just compatibility for older versions
+elif [ -f /etc/dxs/client.cfg/machine-setup.default ] ; then
+ cp /etc/dxs/client.cfg/machine-setup.default \
+ ${INSTDIR}/etc/machine-setup
+ echo "Using /etc/dxs/client.cfg/machine-setup.default"
+# fixme: dirty hack if the installer does not creates a normal file
+elif [ -f /etc/dxs/client.cfg/machine-setup.default.new ] ; then
+ cp /etc/dxs/client.cfg/machine-setup.default.new \
+ ${INSTDIR}/etc/machine-setup
+elif [ -f ../installer/default_files/machine-setup.default ] ; then
+ cp ../installer/default_files/machine-setup.default \
+ ${INSTDIR}/etc/machine-setup
+ echo "Using ../installer/default_files/machine-setup.default"
+else
+ #inserted password for root for debugging purposes
+ echo -e "# default for machine-setup does not exist\n# root logins are \
+disabled\nroot_pw='"'$1$T7VD/mmQ$aCP1WEaWplEsHe9khv4kK.'"'" \
+ > ${INSTDIR}/etc/machine-setup
+fi
+
+# custom hardware configuration files pcitable.local and Cards.local
+# fixme!! New source for these files (instead of templates)!
+if [ -f /opt/openslx/share/templates/pcitable.local ] ; then
+ cat /opt/openslx/share/templates/pcitable.local >> \
+ ${INSTDIR}/usr/share/hwdata/pcitable
+fi
+if [ -f /opt/openslx/share/templates/Cards.local ] ; then
+ cat /opt/openslx/share/templates/Cards.local >> \
+ ${INSTDIR}/usr/share/hwdata/Cards
+fi
+
+# finally copy user-supplied preinit files. The client specific one
+# overwrites the system default one. postinit.local may be part of
+# fileget tgz (in stage3)
+for cfg in default/initramfs/preinit.local \
+ ${DISTRO}-${DISTRO_VER}/initramfs/preinit.local \
+ default/initramfs/postinit.local \
+ ${DISTRO}-${DISTRO_VER}/initramfs/postinit.local ; do
+ test -f /var/opt/openslx/config/$cfg && \
+ cp /var/opt/openslx/config/$cfg ${INSTDIR}/bin
+done
+
+# remove unneeded debug info, fixme not really tested yet
+strip ${INSTDIR}/bin/* ${INSTDIR}/lib/* &>/dev/null
+
+#########################################################################
+# End of file copy procedures
+
+[ -n "${theme}" ] && add_theme
+
+# finally create the compressed initial ramdisk cpio archive
+pushd . > /dev/null 2>&1
+ cd ${INSTDIR}
+ find . ! -name "*~" | cpio -H newc --create | gzip -9 > $INITRD_PATH
+popd > /dev/null 2>&1
+
diff --git a/vmware/runvmware b/vmware/runvmware
index 0f954b53..14915ffc 100755
--- a/vmware/runvmware
+++ b/vmware/runvmware
@@ -140,6 +140,12 @@ preferencesheader () {
###### dont use it for your own configurations - it will be overwritten ######
###### ######
+################# wichtig #################
+# das *.vmem wird immer angelegt und frisst soviel Speicher, wie fuer den Gast
+# vorgesehen. Sollte nicht im tempfs liegen. NFS OK, da IO nur einmal beim
+# Start erheblich. Wird gesteuert ueber tmpDirectory = /nfs-viel-platz
+# und darin wird dann vmware-$user angelegt.
+
hints.hideAll = \"TRUE\"
pref.exchangeSelections = \"TRUE\"
pref.hotkey.shift = \"TRUE\"