summaryrefslogtreecommitdiffstats
path: root/initramfs/distro-specs
diff options
context:
space:
mode:
Diffstat (limited to 'initramfs/distro-specs')
-rw-r--r--initramfs/distro-specs/debian/config-3.150
-rw-r--r--initramfs/distro-specs/debian/config-default50
-rw-r--r--initramfs/distro-specs/debian/functions-3.112
-rw-r--r--initramfs/distro-specs/debian/functions-default270
-rw-r--r--initramfs/distro-specs/debian/servconf19
-rw-r--r--initramfs/distro-specs/gentoo/config-default23
-rw-r--r--initramfs/distro-specs/gentoo/functions-default277
-rw-r--r--initramfs/distro-specs/suse/config-10.09
-rw-r--r--initramfs/distro-specs/suse/config-10.128
-rw-r--r--initramfs/distro-specs/suse/config-9.330
-rw-r--r--initramfs/distro-specs/suse/config-default53
-rwxr-xr-xinitramfs/distro-specs/suse/files-default/etc/init.d/boot286
-rwxr-xr-xinitramfs/distro-specs/suse/files-default/etc/init.d/halt90
-rw-r--r--initramfs/distro-specs/suse/functions-10.058
-rw-r--r--initramfs/distro-specs/suse/functions-10.1120
-rw-r--r--initramfs/distro-specs/suse/functions-9.374
-rw-r--r--initramfs/distro-specs/suse/functions-default499
-rw-r--r--initramfs/distro-specs/ubuntu/README-6.0614
-rw-r--r--initramfs/distro-specs/ubuntu/config-5.1030
-rw-r--r--initramfs/distro-specs/ubuntu/config-6.0630
-rw-r--r--initramfs/distro-specs/ubuntu/config-default55
-rw-r--r--initramfs/distro-specs/ubuntu/functions-5.1097
-rw-r--r--initramfs/distro-specs/ubuntu/functions-6.06112
-rw-r--r--initramfs/distro-specs/ubuntu/functions-default443
24 files changed, 2729 insertions, 0 deletions
diff --git a/initramfs/distro-specs/debian/config-3.1 b/initramfs/distro-specs/debian/config-3.1
new file mode 100644
index 00000000..f6172d6f
--- /dev/null
+++ b/initramfs/distro-specs/debian/config-3.1
@@ -0,0 +1,50 @@
+# Description: distro specific settings for Debian/Sarge
+#
+# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 23-06-2006
+# Felix Endres
+#
+# Copyright: (c) 2003, 2006 - RZ Universitaet Freiburg
+
+# D_SYSCONFDIR - system wide configuration settings - /etc/sysconfig in SuSE
+# and RedHat, /etc/default in Debian and Ubuntu
+# 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_RCDIRS - runlevel directories relative to /etc
+# D_XF86CONFFILE - name and location of XFree/Xorg config file, e.g.
+# /etc/X11/xorg.conf or /etc/X11/XF86config, ...
+# D_XFONTPATH - path(es) where X11 fonts are installed (with trailing /*)
+# D_DEFAULTCOUNTRY - localization (see common functions)
+# D_HWMODTOIGNORE - hardware modules which should not tried to load (because
+# already in kernel, nonexistent, ...)
+
+D_SYSCONFDIR=/default
+D_ETCEXCL="etc/gconf/*\n*.old\n*-\n\
+etc/autoinstall\nlogrotate*\nbootloader\n*~\n\
+pptp.d\nisdn\nyouservers\nhardware/hwcfg*\n\
+X11/xdm/pixmaps\ndhclient.script\n\
+rc2.d/*\nrc5.d/*"
+D_BINDMPTS="tmp root home"
+D_DIRINBINDMNT="/var/run /var/log /var/tmp /var/lib/gdm"
+D_RODIRSINRW="etc/gconf etc/X11/xkb /var/adm /var/lib/texmf"
+D_DIRINDXS="/var/X11R6/compose-cache \
+/var/run/sysconfig/tmp /var/adm /var/lib/rpm /var/lib/nobody \
+/var/lib/pam_devperm /var/lib/bluetooth \
+/var/lib/texmf /var/lib/nfs/sm \
+/var/lib/misc /var/lib/acpi /var/spool/cron \
+/var/lock/subsys/sysconfig"
+D_INITDIR="/init.d"
+D_INITBOOTD="/rcS.d"
+D_RCDIRS="/rc0.d /rc1.d /rc2.d /rc3.d /rc4.d /rc5.d /rc6.d"
+D_INITDEFAULT="3"
+# fixme: is keymap.sh really needed? Should be handled in a simpler fashion
+# via boot.ld (see hwautocfg)
+D_INITSCRIPTS="mountvirtfs udev procps.sh bootlogd keymap.sh hwclock.sh sudo dbus-1"
+D_XF86CONFFILE="/etc/X11/xorg.conf"
+D_XFONTPATH="/usr/X11R6/lib/X11/fonts/*"
+D_DEFAULTCOUNTRY="de"
diff --git a/initramfs/distro-specs/debian/config-default b/initramfs/distro-specs/debian/config-default
new file mode 100644
index 00000000..2f1d638d
--- /dev/null
+++ b/initramfs/distro-specs/debian/config-default
@@ -0,0 +1,50 @@
+# Description: distro specific general settings for Debian/Sarge
+#
+# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 23-06-2006
+# Felix Endres
+#
+# Copyright: (c) 2003, 2006 - RZ Universitaet Freiburg
+
+# D_SYSCONFDIR - system wide configuration settings - /etc/sysconfig in SuSE
+# and RedHat, /etc/default in Debian and Ubuntu
+# 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_RCDIRS - runlevel directories relative to /etc
+# D_XF86CONFFILE - name and location of XFree/Xorg config file, e.g.
+# /etc/X11/xorg.conf or /etc/X11/XF86config, ...
+# D_XFONTPATH - path(es) where X11 fonts are installed (with trailing /*)
+# D_DEFAULTCOUNTRY - localization (see common functions)
+# D_HWMODTOIGNORE - hardware modules which should not tried to load (because
+# already in kernel, nonexistent, ...)
+
+D_SYSCONFDIR=/default
+D_ETCEXCL="etc/gconf/*\n*.old\n*-\n\
+etc/autoinstall\nlogrotate*\nbootloader\n*~\n\
+pptp.d\nisdn\nyouservers\nhardware/hwcfg*\n\
+X11/xdm/pixmaps\ndhclient.script\n\
+rc2.d/*\nrc5.d/*"
+D_BINDMPTS="tmp root home"
+D_DIRINBINDMNT="/var/run /var/log /var/tmp /var/lib/gdm /etc/X11"
+D_RODIRSINRW="etc/gconf etc/X11/xkb /var/adm /var/lib/texmf"
+D_DIRINDXS="/var/X11R6/compose-cache \
+/var/run/sysconfig/tmp /var/adm /var/lib/rpm /var/lib/nobody \
+/var/lib/pam_devperm /var/lib/bluetooth \
+/var/lib/texmf /var/lib/nfs/sm \
+/var/lib/misc /var/lib/acpi /var/spool/cron \
+/var/lock/subsys/sysconfig"
+D_INITDIR="/init.d"
+D_INITBOOTD="/rcS.d"
+D_RCDIRS="/rc0.d /rc1.d /rc2.d /rc3.d /rc4.d /rc5.d /rc6.d"
+D_INITDEFAULT="3"
+# fixme: is keymap.sh really needed? Should be handled in a simpler fashion
+# via boot.ld (see hwautocfg)
+D_INITSCRIPTS="mountvirtfs udev procps.sh bootlogd keymap.sh hwclock.sh sudo dbus-1"
+D_XF86CONFFILE="/etc/X11/xorg.conf"
+D_XFONTPATH="/usr/X11R6/lib/X11/fonts/*"
+D_DEFAULTCOUNTRY="de"
diff --git a/initramfs/distro-specs/debian/functions-3.1 b/initramfs/distro-specs/debian/functions-3.1
new file mode 100644
index 00000000..3b884631
--- /dev/null
+++ b/initramfs/distro-specs/debian/functions-3.1
@@ -0,0 +1,12 @@
+# Description: configuration script for Debian Sarge (3.1) to configure
+# linux diskless clients (executed within initial ramdisk
+# after genconfig)
+#
+# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 23-06-2006
+# Felix Endres, 30-04-2006
+#
+# Copyright: (c) 2006 - RZ Universitaet Freiburg
+#
+# Version: 0.3.0a
+
+# nothing changed yet from default
diff --git a/initramfs/distro-specs/debian/functions-default b/initramfs/distro-specs/debian/functions-default
new file mode 100644
index 00000000..25143c86
--- /dev/null
+++ b/initramfs/distro-specs/debian/functions-default
@@ -0,0 +1,270 @@
+# Description: configuration script for general Debian to configure
+# linux diskless clients (executed within initial
+# ramdisk after genconfig)
+#
+# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 23-06-2006
+# Felix Endres, 30-04-2006
+#
+# Copyright: (c) 2006 - RZ Universitaet Freiburg
+#
+# Version: 0.3.0a
+
+# empty functions are defined at the beginning of /etc/functions
+
+# distro specific stuff to initialize
+preinit () {
+ echo "Creating dhcp user"
+ echo "dhcp:x:101:" >>/etc/group
+ echo "dhcp:x:101:101::/nonexistent:/bin/false" >>/etc/passwd
+}
+
+# distro specific function called from servconfig script
+config_distro () {
+# add the halt link to the 0 and 6 runlevel directories
+ ln -sf ../init.d/halt /mnt/etc/rc0.d/S90halt
+ ln -sf ../init.d/reboot /mnt/etc/rc6.d/S90reboot
+
+ # set default runlevel
+ sed -e "s/.*initdefault/id:${D_INITDEFAULT}:initdefault/" -i /mnt/etc/inittab
+}
+
+# AUS SuSE-9.3
+# udev/hotplug - auto device discovery service
+# Result: 1 is bad, 0 is good
+udev_hotplug () {
+ local result=0
+ [ -d /etc/hotplug -a -d /etc/hotplug.d ] || error "$df_errhotpl" nonfatal
+ echo "Enabling hotplug/udev"
+ #udevstart && result=0
+ #udevtrigger && result=0
+ udevd --daemon || result=1
+ [ ! -e /sbin/udevsend ] && result=1
+ echo "/sbin/udevsend/" > /proc/sys/kernel/hotplug
+ mkdir -p /dev/.udev/db /dev/.udev/queue
+ trigger_device_events
+ return $result
+}
+
+# distro specific general function called from servconfig script
+config_distro () {
+# add the halt link to the 0 and 6 runlevel directories
+ ln -sf ../halt /mnt/etc/rc0.d/S90halt
+ ln -sf ../reboot /mnt/etc/rc6.d/S90reboot
+
+ # set default runlevel
+ sed -e "s/.*initdefault/id:${D_INITDEFAULT}:initdefault/" -i /mnt/etc/inittab
+}
+
+
+# linking runlevel scripts
+rllinker () {
+local script="$1"
+local start="$2"
+local stop="$3"
+# empty runlevel links - decision on running certain services is
+# passed via configuration
+# "stop" seems not to be used in Debian!? - It is. Felix
+for i in rc2.d/K$stop$script rc3.d/K$stop$script \
+ rc2.d/S$start$script rc3.d/S$start$script ; do
+ if ! [ -f /mnt/etc/init.d/$script ]; then
+ echo "Target `pwd`../$script does not exist. Skipping links"
+ break
+ else
+ ln -sf ../init.d/$script /mnt/etc/$i
+ echo "Linked $script"
+ fi
+done
+}
+
+# make a runlevel script
+d_mkrlscript () {
+local switch=$1
+local name=$2
+local info=$3
+}
+
+# group of functions for the normal runlevels - first parameter is start
+# second stop (fixme: is "stop" needed in Debian?? - Yep)
+# function for ntp configuration
+config_ntp () {
+if [ -f /mnt/etc/init.d/ntp ] ; then
+ echo -e "ntp:x:74:65534:NTP daemon:/var/lib/ntp:/bin/false" \
+ >>/mnt/etc/passwd
+ testmkd /mnt/var/lib/ntp/var/run/ntp &>/dev/null
+ if [ "x$start_ntp" = "xinitial" ] ; then
+ echo -e "# entry added by $0: $date" \
+ >>/mnt/etc/${D_INITDIR}/boot.ld
+ echo "ntpdate -s -b $ntp_servers >${LOGFILE} 2>&1 &" \
+ >>/mnt/etc/${D_INITDIR}/boot.ld
+ else
+ rllinker "ntp" "20" "02"
+ fi
+fi
+}
+
+# function for atd
+config_atd () {
+if [ "x$start_atd" = "xyes" ]; then
+ # fixme!! needed? Fix permissions
+ #testmkd /mnt/var/spool/cron/atjobs
+ #testmkd /mnt/var/spool/cron/atspool
+ #chown /mnt/var/spool/cron/atjobs /mnt/var/spool/cron/atspool
+ rllinker "atd" "89" "01"
+fi
+}
+
+# function for configuration of cron services
+config_cron () {
+if [ "x$start_cron" = "xyes" ] ; then
+ if [ -f /mnt/etc/init.d/cron ] ; then
+ rllinker "cron" "89" "01"
+ testmkd /mnt/var/spool/cron/crontabs
+ echo -e "# /etc/crontab - file generated by $0:\n\
+#\t$date\nSHELL=/bin/sh\nPATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin\
+\nMAILTO=\n-*/15 * * * *\troot\ttest -x /usr/lib/cron/run-crons && \
+/usr/lib/cron/run-crons >/dev/null 2>&1\n" >/mnt/etc/crontab
+ else
+ error "$df_errcron" nonfatal
+ fi
+fi
+}
+
+# syslog service
+config_syslog () {
+if [ "x$start_syslog" = "xyes" ] ; then
+ :
+fi
+}
+
+# secure shell service
+config_sshd () {
+if [ "x$start_sshd" = "xyes" ] ; then
+ if [ -f /mnt/etc/init.d/ssh ] ; then
+ rllinker "sshd" "20" "02"
+ fi
+fi
+}
+
+# snmp agent for remote monitoring
+config_snmp () {
+if [ "x$start_snmp" = "xyes" ] ; then
+ if [ -f /mnt/etc/init.d/snmpd ] ; then
+ rllinker "snmpd" "30" "03"
+ testmkd /mnt/var/lib/net-snmp >/dev/null 2>&1
+ fi
+ # fixme!!
+ # write service monitor depending on services started
+ fi
+}
+
+# x11 stuff
+descsession () {
+if [ "x$desktop_session" != "x" ] ; then
+ windowmanagers="$desktop_session"
+ # write script for desktop-session chooser
+ if [ "x$vmware" != "xno" ] ; then
+ debug=""
+ [ ${DEBUGLEVEL} -gt 0 ] && debug="--debug 1"
+ echo -e "#!/bin/sh\n#\n# file generated by\n#\t$0:\n#\t$date\n
+OSTYPE=\`echo \$0 | sed -e \"s,-, ,\" -e \"s,.*/,,\" | awk '{print \$1}'\`
+SPECTYPE=\`echo \$0 | sed -e \"s,-, ,\" -e \"s,.*/,,\" | awk '{print \$2}'\`\n
+OPTS=\"-o \$OSTYPE \${SPECTYPE:+\"-s \$SPECTYPE\"}\"\n
+xterm -bg black -fg white -geometry 170x30+0-0 +sb \
+-e \"runvmware \$OPTS $debug\"\n" > /mnt/var/X11R6/bin/desktop-session
+ chmod a+x /mnt/var/X11R6/bin/desktop-session
+ addpath="true";
+ fi
+else
+ windowmanagers="kde,gnome,icewm,failsafe"
+fi
+# check if /usr/X11R6/bin is writeable, else use /var/X11R6/bin
+if [ -w /mnt/usr/X11R6/bin/WM-Session ] ; then
+ sesspath="/usr/X11R6/bin"
+else
+ sesspath="/var/X11R6/bin"
+ addpath="true"
+fi
+
+# create links to desktop-session chooser
+[ -f /mnt/usr/bin/X11/wmlist ] && wmlist=`cat /mnt/usr/bin/X11/wmlist`
+
+for i in `echo $windowmanagers|sed -e "s/,/ /g"` ; do
+ # beware!! quickhack for VMware sessions
+ strinstr "$i" "$wmlist" || \
+ test -x /mnt/usr/X11R6/bin/$i || \
+ echo -e "[Desktop Entry]\nX-SuSE-translate=true\nEncoding=UTF-8\n\
+Type=XSession\nExec=$i\nTryExec=$sesspath/$i\n\
+Name=$i\n" > /mnt/etc/X11/sessions/$i.desktop
+ # does not work correctly (add /var/X11R6/bin to path!!)
+ test -x /mnt/usr/X11R6/bin/$i || \
+ ln -fs /var/X11R6/bin/desktop-session /mnt/$sesspath/$i
+done
+
+# add special path /var/X11R6/bin to the PATH variable
+# fixme!! add path directly to /etc/profile!?
+#[ "x$addpath" != "x" ] && \
+# echo -e "# added path component by $0: $date\n\
+#PATH=\"\$PATH:/var/X11R6/bin\"" >>/mnt/etc/profile
+}
+
+
+# consolefont and language
+consolefont () {
+echo -e "setfont ${CONSOLE_FONT} >${LOGFILE} 2>&1" \
+ >>/mnt/etc/${D_INITDIR}/boot.ld
+# fixme!! check for proper operation
+sed -e "s,LANGUAGE=.*,LANGUAGE=\"${LANG}\" # set within initramfs," \
+ -e "s,LANG=.*,LANG=\"${LANG}\" # set within initramfs," \
+ -i /mnt/etc/environment
+}
+
+# configure gdm as display manager
+config_gdm () {
+ ln -sf ../${D_INITDIR}/gdm /mnt/etc/rc3.d/K20gdm
+ echo -e "\t/etc/${D_INITDIR}/gdm start >${LOGFILE} 2>&1\n\
+ \t( sleep 120; ln -sf /etc/${D_INITDIR}/gdm /etc/rc3.d/S01gdm \
+ >${LOGFILE} 2>&1) &\n" >>/mnt/etc/${D_INITDIR}/boot.ld
+ # check for gdm user in passwd and group files
+ # fixme!!
+# echo "gdm:x:113:">>/mnt/etc/group
+# echo "gdm:x:106:113:Gnome Display Manager:/var/lib/gdm:/bin/false" \
+ >>/mnt/etc/passwd
+}
+
+# configure kdm as display manager
+config_kdm () {
+ ln -sf ../${D_INITDIR}/kdm /mnt/etc/rc3.d/K20kdm
+ ln -sf ../${D_INITDIR}/kdm /mnt/etc/rc3.d/S20kdm
+}
+
+# configure hal, dbus, resmgr and services like that
+config_dreshal () {
+if [ "x$start_dreshal" = "xyes" ]; then
+ :
+fi
+}
+
+
+# fixme!! taken from SuSE10.0 untested here ...
+# prepare virtual machine environment (vmware, vmplayer)
+config_vmware () {
+rllinker "vmware-prep" "22" "02"
+rllinker "vmware" "24" "02"
+# during vmware sessions linux should not handle usb events/devices
+testmkd /mnt/var/X11R6/bin
+echo '#!/bin/sh'>> /mnt/etc/udev/rules.d/01-udev-vm.rules
+echo -e "# Script for blocking linux from handling usb \
+devices\n# during vmware sessions. If you like to remove certain modules \
+add them\n# to the list below - Dirk von Suchodoletz, <dirk@goe.net>\n\
+STATE=1\nps aux|grep -i vmware|grep -v \"grep\" &>/dev/null && { STATE=0; \
+/sbin/rmmod usb-storage &>/tmp/null; }\n\
+[ x\$ACTION = xremove ] && { [ \$STATE = 0 ] && /sbin/rmmod usb-storage \
+&>/dev/null; }\nexit \$STATE" > /mnt/var/X11R6/bin/vm-udev
+chmod u+x /mnt/var/X11R6/bin/vm-udev
+echo -e "# special entry to block linux from reacting to usb events during \
+running\n# vmware sessions, generated by $0 during initramfs\n# Dirk von \
+Suchodoletz, <dirk@goe.net>\nSUBSYSTEM==\"usb\", ACTION==\"add\", \
+PROGRAM=\"/var/X11R6/bin/vm-udev\", OPTIONS=\"ignore_device\"\n\
+SUBSYSTEM==\"usb\", ACTION==\"remove\", PROGRAM=\"/var/X11R6/bin/vm-udev\"" \
+ >> /mnt/etc/udev/rules.d/01-udev-vm.rules
+}
diff --git a/initramfs/distro-specs/debian/servconf b/initramfs/distro-specs/debian/servconf
new file mode 100644
index 00000000..9e711042
--- /dev/null
+++ b/initramfs/distro-specs/debian/servconf
@@ -0,0 +1,19 @@
+#!/bin/sh
+#
+# Description: configuration script for Debian/Sarge to configure
+# linux diskless clients (executed within initial
+# ramdisk after genconfig)
+#
+# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 13-12-2005
+# Blabla
+# Blub
+#
+# Copyright: (c) 2003, 2005 - RZ Universitaet Freiburg
+#
+# Version: 0.3.5k
+
+# check for configuration files to source
+
+# ldap, dhcp, file
+
+
diff --git a/initramfs/distro-specs/gentoo/config-default b/initramfs/distro-specs/gentoo/config-default
new file mode 100644
index 00000000..2bae4d17
--- /dev/null
+++ b/initramfs/distro-specs/gentoo/config-default
@@ -0,0 +1,23 @@
+# Description: distro specific settings for Gentoo 2005.1
+#
+# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 23-06-2006
+#
+# Copyright: (c) 2005,6 - RZ Universitaet Freiburg
+
+# 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_RCDIRS - runlevel directories relative to /etc
+# D_HWMODTOIGNORE - hardware modules which should not tried to load (because
+# already in kernel, nonexistent, ...)
+# D_BOOTLOCAL - script for user specified stuff which should be started
+# during client bootup, path and file relative to /etc
+
+# nothing changed yet
diff --git a/initramfs/distro-specs/gentoo/functions-default b/initramfs/distro-specs/gentoo/functions-default
new file mode 100644
index 00000000..f3b3d633
--- /dev/null
+++ b/initramfs/distro-specs/gentoo/functions-default
@@ -0,0 +1,277 @@
+# Description: configuration script for Gentoo V2005.1 to configure
+# linux diskless clients (executed within initial ramdisk
+# after genconfig)
+#
+# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 08-07-2006
+#
+# Copyright: (c) 2006 - RZ Universitaet Freiburg
+#
+# Version: 0.0.2c
+
+# empty functions are defined at the beginning of /etc/functions
+
+# distro specific general function called from servconfig script
+config_distro () {
+echo -e "dxs version 4.0a\ninitramfs generation date $date" \
+ >> /mnt/etc/gentoo-release
+echo -e "# changes made to this file by $0 (initrd from $date)" \
+ > /etc/rc.conf
+# keytable is set by hwautocfg script (added just for convenience here)
+config_rc_entry "KEYMAP" "${KEYTABLE}"
+}
+
+# udev service - not verified!
+udev_hotplug () {
+echo "Starting udev"
+ln -s /bin/udevd /bin/udevstart && udevstart &
+if [ -x /bin/udevd ] ; then
+ export UDEVD_EXPECTED_SEQNUM=$(cat /sys/kernel/hotplug_seqnum)
+ export UDEVD_EVENT_TIMEOUT=1
+ echo "" > /proc/sys/kernel/hotplug
+ udevd &
+else error "$df_errudev" nonfatal
+fi
+}
+
+# linking runlevel scripts
+rllinker () {
+local script="$1"
+local need="$2"
+# empty runlevel links - decision on running certain services is
+# passed via configuration
+ln -s /etc/${D_INITDIR}/$1 /mnt/etc/runlevels/default/$1
+echo $1 >> /mnt/etc/runlevels/default/.critical
+# hack to remove unneeded dependency stuff
+#if [ "$script" != "vmware-prep" ] ; then
+# sed "/depend/,/}/d" /mnt/etc/${D_INITDIR}/$1 > /etc/rls
+# cp /etc/rls /mnt/etc/${D_INITDIR}/$1
+#fi
+}
+
+# setup initial boot scripts (rather strange concept I did not get
+# completely)
+initial_boot () {
+rm /mnt/etc/runlevels/*/.critical 2>/dev/null
+for i in ${D_INITSCRIPTS}; do
+ ln -sf /etc${D_INITDIR}/$i /mnt/etc/${D_INITBOOTD}/$i
+ echo $i >> /mnt/etc/${D_INITBOOTD}/.critical
+ echo $i >> /mnt/etc/runlevels/default/.critical
+done
+}
+
+# initialize boot.ld - skript to be executed during early system startup
+# (before most of the normal boot init scripts)
+# this script should operate like a normal runlevel script
+# initialize boot.ld - skript to be executed during early system startup
+# (before most of the normal boot init scripts)
+# this script should operate like a normal runlevel script (fixme!!)
+d_mkrlscript () {
+local switch="$1"
+local name="$2"
+local info="$3"
+case "$switch" in
+ init)
+ echo -e "#!/sbin/runskript\n# skeleton of /etc/${D_INITDIR}/$name \
+generated by $0\ndepend() {\n\t:\n}" >/mnt/etc/${D_INITDIR}/$name
+ echo -e "\n\nstart() {\n\tebegin \"$info\"" \
+ >>/mnt/etc/${D_INITDIR}/$name
+ chmod u+x /mnt/etc/${D_INITDIR}/$name
+ ;;
+ close)
+ echo -e "\n}\n\nstop() {\n\t:\n}\n# vim:ts=4" \
+ >>/mnt/etc/${D_INITDIR}/$name
+ ;;
+esac
+}
+
+# group of functions for the normal runlevels
+# function for ntp configuration (unchecked)
+config_ntp () {
+if [ -e /mnt/etc/${D_INITDIR}/ntp ] ; then
+ if ! strinfile "ntp:" /mnt/etc/passwd ; then
+ echo -e "ntp:x:74:65534:NTP daemon:/var/lib/ntp:/bin/false" \
+ >>/mnt/etc/passwd
+ echo -e "ntp:!:13099:0:99999:7:::" >>/mnt/etc/shadow
+ fi
+ testmkd /mnt/var/lib/ntp/var/run/ntp &>/dev/null
+ if [ "x$start_ntp" = "xinitial" ] ; then
+ echo -e "\t# entries added by $0 (InitRamFS from $date)\n\
+\t( ntpdate -s -b $ntp_servers >${LOGFILE} 2>&1 && {\n\t which \
+hwclock &>/dev/null && hwclock -w;} ) &" \
+ >>/mnt/etc/${D_INITDIR}/boot.ld
+ elif [ "x$start_ntp" = "xyes" ] ; then
+ rllinker "ntp"
+ fi
+fi
+}
+
+# function for atd (unchecked)
+config_atd () {
+if [ "x$start_atd" = "xyes" ]; then
+ rllinker "atd"
+fi
+}
+
+# cron service
+config_cron () {
+if [ "x$start_cron" = "xyes" ] ; then
+ if [ -f /mnt/etc/${D_INITDIR}/cron ] ; then
+ :
+ else
+ error "$df_errcron" nonfatal
+ fi
+fi
+}
+
+# syslog service
+config_syslog () {
+if [ "x$start_syslog" = "xyes" ] ; then
+ if [ -f /mnt/etc/${D_INITDIR}/syslog-ng ] ; then
+ rllinker syslog-ng
+ else
+ error "$df_errsysl" nonfatal
+ fi
+fi
+}
+
+# secure shell service
+config_sshd () {
+if [ "x$start_sshd" = "xyes" ] ; then
+ if [ -f /mnt/etc/${D_INITDIR}/sshd ] ; then
+ rllinker "sshd"
+ else
+ error "$df_errsshd" nonfatal
+ fi
+fi
+}
+
+# snmp agent for remote monitoring (unchecked)
+config_snmp () {
+if [ "x$start_snmp" = "xyes" ] ; then
+ if [ -f /mnt/etc/${D_INITDIR}/snmpd ] ; then
+ rllinker "snmpd"
+ testmkd /mnt/var/lib/net-snmp >/dev/null 2>&1
+ fi
+ # fixme!!
+ # write service monitor depending on services started
+ fi
+}
+
+# configure X display manager (runlevel links and kind of manager)
+config_xdm () {
+if [ -f /mnt/etc/${D_INITDIR}/xdm ] ; then
+ sed -e "s,DISPLAYMANAGER=.*,DISPLAYMANAGER=\"xdm\"," -i /mnt/etc/rc.conf
+ ln -s /etc/${D_INITDIR}/xdm /mnt/etc/runlevels/boot/xdm
+ ln -s /etc/${D_INITDIR}/xdm /mnt/etc/runlevels/default/xdm
+ echo "xdm" >> /mnt/etc/runlevels/boot/.critical
+fi
+}
+
+# change entries in rc.conf (most for convenience only)
+config_rc_entry () {
+local var=$1
+local value=$2
+sed -e "s,$var=.*,$var=\"$value\"," -i /mnt/etc/rc.conf
+}
+
+# configure gdm
+config_gdm () {
+config_rc_entry "DISPLAYMANAGER" "gdm"
+# fixme!! check for needed directories and permissions
+#testmkd /mnt/var/lib/gdm
+#testmkd /mnt/var/log/gdm
+#strinfile "gdm:" /mnt/etc/passwd || echo "gdm:x:50:15:Gnome Display Manager \
+#Daemon:/var/lib/gdm:/bin/false" >>/mnt/etc/passwd
+# hack - gdm should be user 50 and shadow group 15
+#chown 50:15 /mnt/var/lib/gdm /mnt/var/log/gdm
+#chmod 0750 /mnt/var/lib/gdm /mnt/var/log/gdm
+#rllinker "gdm" ??
+}
+
+# configure kdm as display manager
+config_kdm () {
+config_rc_entry "DISPLAYMANAGER" "kdm"
+}
+
+# configure bluetooth services
+config_bt () {
+rllinker "bluetooth"
+}
+
+# set consolefont
+consolefont () {
+echo -e "\tsetfont ${CONSOLE_FONT} >${LOGFILE} 2>&1\n" \
+ >>/mnt/etc/${D_INITDIR}/boot.ld
+config_rc_entry "CONSOLEFONT" "${CONSOLE_FONT}"
+}
+
+# acpi and powersave
+config_acpi () {
+rllinker acpid
+# remove dependencies (runs unneeded services ...)
+sed "/depend/,/}/d" -i /mnt/etc/${D_INITDIR}/acpid
+}
+
+# configure automounter
+config_automount () {
+if [ -f /mnt/etc/${D_INITDIR}/autofs ] ; then
+ rllinker autofs
+ if [ -n "${automnt_src}" ] ; then
+ # local directory and home directory server from machine-setup
+ [ -z "${automnt_dir}" ] && automnt_dir="/home"
+ strinstr "/" "${automnt_dir}" && error "$df_erratpld" nonfatal
+ automnt_dir=${automnt_dir#/}
+ echo -e "/home\t/etc/auto.${automnt_dir}\n" >> /mnt/etc/auto.master
+ echo -e "# /etc/auto.${automnt_dir} created by $0:\n" \
+ > /mnt/etc/auto.${automnt_dir}
+ echo -e "*\t-rsize=32768,wsize=32768,rw\t${automnt_src}/&" \
+ >> /mnt/etc/auto.${automnt_dir}
+ config_portmap
+ fi
+else
+ error "$df_erramnt" nonfatal
+fi
+}
+
+# start name service caching daemon (recommended in combination with
+# ldap source as user admin base)
+config_nscd () {
+if [ -f /mnt/etc/${D_INITDIR}/nscd ] ; then
+ #testmkd /mnt/var/run/nscd
+ rllinker "nscd"
+fi
+}
+
+# start portmapper (needed at least for nfs and nis services - unchecked)
+config_portmap () {
+rllinker "portmap"
+}
+
+# start NIS (fixmee: does the start script is really named ypbind?)
+config_nis () {
+rllinker "ypbind"
+}
+
+# start vmware and vmware preparation services
+config_vmware () {
+rllinker "vmware-prep"
+rllinker "vmware"
+# during vmware sessions linux should not handle usb events/devices
+testmkd /mnt/var/X11R6/bin
+echo '#!/bin/sh'>> /mnt/etc/udev/rules.d/01-udev-vm.rules
+echo -e "# Script for blocking linux from handling usb \
+devices\n# during vmware sessions. If you like to remove certain modules \
+add them\n# to the list below - Dirk von Suchodoletz, <dirk@goe.net>\n\
+STATE=1\nps aux|grep -i vmware|grep -v \"grep\" &>/dev/null && { STATE=0; \
+/sbin/rmmod usb-storage &>/tmp/null; }\n\
+[ x\$ACTION = xremove ] && { [ \$STATE = 0 ] && /sbin/rmmod usb-storage \
+&>/dev/null; }\nexit \$STATE" > /mnt/var/X11R6/bin/vm-udev
+chmod u+x /mnt/var/X11R6/bin/vm-udev
+echo -e "# special entry to block linux from reacting to usb events during \
+running\n# vmware sessions, generated by $0 during initramfs\n# Dirk von \
+Suchodoletz, <dirk@goe.net>\nSUBSYSTEM==\"usb\", ACTION==\"add\", \
+PROGRAM=\"/var/X11R6/bin/vm-udev\", OPTIONS=\"ignore_device\"\n\
+SUBSYSTEM==\"usb\", ACTION==\"remove\", PROGRAM=\"/var/X11R6/bin/vm-udev\"" \
+ >> /mnt/etc/udev/rules.d/01-udev-vm.rules
+}
+
diff --git a/initramfs/distro-specs/suse/config-10.0 b/initramfs/distro-specs/suse/config-10.0
new file mode 100644
index 00000000..4cdba28e
--- /dev/null
+++ b/initramfs/distro-specs/suse/config-10.0
@@ -0,0 +1,9 @@
+# Description: distro specific settings for SuSE 10.0. This file merily
+# contains changes from the SuSE base configuration file
+# (suse/config-default)
+#
+# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 26-01-2006
+#
+# Copyright: (c) 2003, 2006 - RZ Universitaet Freiburg
+
+# nothing changed yet
diff --git a/initramfs/distro-specs/suse/config-10.1 b/initramfs/distro-specs/suse/config-10.1
new file mode 100644
index 00000000..5b7babc7
--- /dev/null
+++ b/initramfs/distro-specs/suse/config-10.1
@@ -0,0 +1,28 @@
+# Description: distro specific settings for SuSE 10.1. This configuration
+# might change settings from SuSE default configuration file
+#
+# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 15-07-2006
+#
+# Copyright: (c) 2003, 2006 - RZ Universitaet Freiburg
+
+
+# D_SYSCONFDIR - system wide configuration settings - /etc/sysconfig in SuSE
+# 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_XF86CONFFILE - name and location of XFree/Xorg config file, e.g.
+# /etc/X11/xorg.conf or /etc/X11/XF86config, ...
+# D_XFONTPATH - path(es) where X11 fonts are installed (with trailing /*)
+# D_DEFAULTCOUNTRY - localization (see common functions)
+# D_BOOTLOCAL - script for user specified stuff which should be started
+# during client bootup, path and file relative to /etc
+
+D_INITSCRIPTS="kbd boot.udev boot.proc boot.klog boot.loadmodules boot.clock boot.sysctl boot.ipconfig boot.swap"
+D_RODIRSINRW="/etc/opt/gnome/gconf /etc/X11/xkb /var/adm /var/lib/texmf /var/lib/rpm /var/cache/fontconfig"
diff --git a/initramfs/distro-specs/suse/config-9.3 b/initramfs/distro-specs/suse/config-9.3
new file mode 100644
index 00000000..5fb82825
--- /dev/null
+++ b/initramfs/distro-specs/suse/config-9.3
@@ -0,0 +1,30 @@
+# Description: distro specific settings for SuSE 9.3. This configuration
+# is the base for following SuSE versions until the changes
+# within them require a major change
+#
+# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 23-06-2006
+#
+# Copyright: (c) 2003, 2005 - RZ Universitaet Freiburg
+
+
+# D_SYSCONFDIR - system wide configuration settings - /etc/sysconfig in SuSE
+# and RedHat, /etc/default in Debian and Ubuntu
+# 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_RCDIRS - runlevel directories relative to /etc
+# D_XF86CONFFILE - name and location of XFree/Xorg config file, e.g.
+# /etc/X11/xorg.conf or /etc/X11/XF86config, ...
+# D_XFONTPATH - path(es) where X11 fonts are installed (with trailing /*)
+# D_DEFAULTCOUNTRY - localization (see common functions)
+# D_HWMODTOIGNORE - hardware modules which should not tried to load (because
+# already in kernel, nonexistent, ...)
+# D_BOOTLOCAL - script for user specified stuff which should be started
+# during client bootup, path and file relative to /etc
+
+# just the default \ No newline at end of file
diff --git a/initramfs/distro-specs/suse/config-default b/initramfs/distro-specs/suse/config-default
new file mode 100644
index 00000000..ba301908
--- /dev/null
+++ b/initramfs/distro-specs/suse/config-default
@@ -0,0 +1,53 @@
+# Description: distro specific settings for general SuSE. This configuration
+# is the base for following SuSE versions
+#
+# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 23-06-2006
+#
+# Copyright: (c) 2003, 2006 - RZ Universitaet Freiburg
+
+
+# D_SYSCONFDIR - system wide configuration settings - /etc/sysconfig in SuSE
+# and RedHat, /etc/default in Debian and Ubuntu
+# 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_RCDIRS - runlevel directories relative to /etc
+# D_XF86CONFFILE - name and location of XFree/Xorg config file, e.g.
+# /etc/X11/xorg.conf or /etc/X11/XF86config, ...
+# D_XFONTPATH - path(es) where X11 fonts are installed (with trailing /*)
+# D_DEFAULTCOUNTRY - localization (see common functions)
+# D_HWMODTOIGNORE - hardware modules which should not tried to load (because
+# already in kernel, nonexistent, ...)
+# D_BOOTLOCAL - script for user specified stuff which should be started
+# during client bootup, path and file relative to /etc
+
+D_SYSCONFDIR=/sysconfig
+D_ETCEXCL="opt/gnome/gconf/*\n*.old\n*-\n*.rpmorig\n*.rpmnew\n\
+*.YaST2save\netc/autoinstall\nlogrotate*\nbootloader\n*~\n\
+*.SuSEconfig.saved\npptp.d\nisdn\nyouservers\nhardware/hwcfg*\n\
+X11/xdm/pixmaps\n*.rpmsave\ndhclient*script\ninit.d/boot.d/*\n\
+init.d/rc3.d/*\ninit.d/rc5.d/*\nX11/xorg.conf*\n"
+D_BINDMPTS="tmp root media home"
+D_DIRINBINDMNT="/var/run /var/log /var/tmp"
+D_RODIRSINRW="/etc/opt/gnome/gconf /etc/X11/xkb /var/adm /var/lib/texmf /var/lib/rpm"
+D_DIRINDXS="/var/X11R6/compose-cache \
+/var/run/sysconfig/tmp /var/adm /var/lib/rpm /var/lib/nobody \
+/var/lib/pam_devperm /var/lib/bluetooth \
+/var/lib/texmf /var/lib/nfs/sm \
+/var/lib/misc /var/lib/acpi /var/spool/cron \
+/var/lock/subsys/sysconfig"
+D_INITDIR="/init.d"
+D_INITBOOTD="${D_INITDIR}/boot.d"
+D_INITDEFAULT="5"
+D_RCDIRS="/init.d/rc0.d /init.d/rc1.d /init.d/rc2.d /init.d/rc3.d /init.d/rc4.d /init.d/rc5.d /init.d/rc6.d /init.d/rcS.d"
+D_INITSCRIPTS="boot.udev boot.proc boot.shm boot.klog boot.loadmodules boot.clock boot.sysctl boot.ipconfig boot.swap"
+D_XF86CONFFILE="/etc/X11/xorg.conf"
+D_XFONTPATH="/usr/X11R6/lib/X11/fonts/*"
+D_DEFAULTCOUNTRY="de"
+D_HWMODTOIGNORE="i8xx-tco ichxrom snd-atiixp-modem"
+D_BOOTLOCAL="init.d/boot.local"
diff --git a/initramfs/distro-specs/suse/files-default/etc/init.d/boot b/initramfs/distro-specs/suse/files-default/etc/init.d/boot
new file mode 100755
index 00000000..8012f287
--- /dev/null
+++ b/initramfs/distro-specs/suse/files-default/etc/init.d/boot
@@ -0,0 +1,286 @@
+#!/bin/sh
+#
+# Description: Modificated /etc/init.d/boot for use with Diskless
+# X Stations (v4.0) -> replaces /etc/init.d/boot
+# simply copied over the original file in initrd
+#
+# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 08-04-2006
+# Copyright: (c) 2003, 2006 - RZ Universitaet Freiburg
+#
+# Version: 0.0.2b
+#
+# Some parts taken from /etc/init.d/boot by
+#
+# Copyright (c) 1996-2004 SuSE Linux AG, Nuernberg, Germany.
+# All rights reserved.
+#
+# Author: Ruediger Oertel <ro@suse.de>, 1996-2002
+# Werner Fink <werner@suse.de>, 1996-2003
+# Burchard Steinbild, 1996-2000
+# Florian La Roche, 1996
+#
+# first script to be executed from init on system startup
+#
+# Most of preparation is done within the initial ramdisk
+#
+################################################################
+LD_LIBRARY_PATH=/usr/lib
+
+# Before we do anything else, try at first to activate SELinux support
+test -d /selinux && mount -n -t selinuxfs none /selinux &>/dev/null
+
+# Configuration and coloring of the boot messages
+. /etc/rc.status
+. /etc/sysconfig/boot
+. /etc/sysconfig/logfile
+
+# Avoid be interrupted by child or keyboard
+trap "echo" SIGINT SIGSEGV SIGQUIT
+set +e
+
+# reasonable start values for bootsplash progress
+export progress=0
+export sscripts=45
+export kscripts=45
+
+echo -n "System Boot Control: "
+echo "Running $0"
+
+################################################################
+#
+
+# some important (un)mounts
+rc_reset
+echo -n "Mounting /proc, /sys and /dev/pts filesystems"
+# file /etc/fstab in some scenarios not available
+mount -t proc proc /proc &>/dev/null
+rc_status -v -r
+
+echo -n "Mounting /dev/pts"
+mount -t devpts -o mode=0620,gid=5 devpts /dev/pts
+rc_status -v -r
+if [ -d /sys ] ; then
+ while read a b c ; do
+ case "$b" in
+ sysfs)
+ echo -n "Mounting /sys filesystem"
+ echo -e "sysfs\t\t/sys\t\tsysfs\t\trw\t\t 0 0\n" \
+ >>/etc/fstab
+ mount -t sysfs sysfs /sys
+ rc_status -v -r
+ break
+ ;;
+ esac
+ done < /proc/filesystems
+fi
+
+# Start blogd, requires /proc and /dev/pts.
+# Export the real device in variable REDIRECT.
+test -x /sbin/blogd -a -n "$REDIRECT" && /sbin/blogd $REDIRECT
+if test -z "$REDIRECT" ; then
+ if (echo -n > /dev/tty) 2>/dev/null ; then
+ REDIRECT=/dev/tty
+ else
+ REDIRECT=/dev/console
+ fi
+fi
+
+################################################################
+#
+# Save old terminal settings and set -nl to avoid staircase
+# effect, do not lock scrolling, and avoid break characters.
+otty=$(stty -g)
+if test "$FLOW_CONTROL" = "yes" ; then
+ stty -nl ixon ignbrk -brkint
+else
+ stty -nl -ixon ignbrk -brkint
+fi
+
+################################################################
+#
+# Should we ask for interactive boot mode
+DO_CONFIRM=""
+read -t 2 check < /proc/cmdline 2> /dev/null
+case "$check" in
+ *confirm*) DO_CONFIRM=yes ;;
+esac
+test -z "$CONFIRM_PROMPT_TIMEOUT" && CONFIRM_PROMPT_TIMEOUT=5
+if test "$PROMPT_FOR_CONFIRM" = "yes" -a "$DO_CONFIRM" != "yes" ; then
+ echo -en "${extd}Enter Interactive startup mode?${norm}"
+ rc_timer_on "$CONFIRM_PROMPT_TIMEOUT" 37
+ read -t "$CONFIRM_PROMPT_TIMEOUT" -n 1 \
+ -p " ${extd}y${norm}/[${extd}n${norm}]\
+("${CONFIRM_PROMPT_TIMEOUT}s") " answer
+ rc_timer_off
+ case "$answer" in
+ [yYiI]) DO_CONFIRM=yes ;;
+ *) DO_CONFIRM= ;;
+ esac
+ unset answer
+ echo
+fi
+export DO_CONFIRM
+
+################################################################
+#
+# Common used variables
+bootrc=/etc/init.d/boot.d
+rex="[0-9][0-9]"
+failed=""
+skipped=""
+callord=""
+
+#
+# Initialize boosplash progressbar variables
+#
+. /etc/rc.splash B
+splashtrigger "rlchange B"
+
+################################################################
+#
+# Do we stop/start script in parallel?
+startpar=$(type -p startpar)
+test "$RUN_PARALLEL" = "yes" || startpar=""
+test "$DO_CONFIRM" = "yes" && startpar=""
+
+# Start bootup client scripts.
+if test -d ${bootrc}/ ; then
+ for i in ${bootrc}/S*; do
+ test -f $i || continue
+
+ B=${i##*/}
+ script=${B#*S$rex}
+ B=${B%$script}
+
+ rc_splash "$script start"
+
+ if test "$DO_CONFIRM" = "yes" ; then
+ rc_confirm -t 5 "Start bootup script ${script}" \
+ < $REDIRECT > $REDIRECT 2>&1
+ case "$?" in
+ 0) true ;;
+ 1) continue ;;
+ 2) DO_CONFIRM=""
+ esac
+ fi
+
+ if test -z "$startpar" ; then
+ blogger "$script start"
+
+ if test -x "$i" ; then
+ $i start
+ else
+ echo Running $i
+ /bin/sh $i b
+ rc_status -v1 -r
+ fi
+ status=$?
+ echo -en "$rc_reset"
+
+ case $status in
+ [1-4]) failed="${failed:+$failed }$script" ;;
+ [56]) skipped="${skipped:+$skipped }$script" ;;
+ [07]|*) ;;
+ esac
+
+ blogger "'$script start' exits with status $status"
+ else
+ # Parallel boot only for valid scripts
+ test -x $i || continue
+
+ # Current vector
+ eval cur=\${$B}
+ test -n "$cur" || callord="${callord:+$callord }$B"
+
+ # Remember scripts
+ eval $B="\${cur:+$i }\${cur:-$i}"
+ fi
+ done
+fi
+
+################################################################
+#
+# Call the scripts in correct order
+if test -n "$startpar" ; then
+ declare -i s
+ for p in $callord ; do
+ vect=$p
+ eval p=(\${$p})
+
+ blogger "run boot scripts (${p[@]##*S$rex})"
+ if test ${#p[@]} -eq 1 ; then
+ ${p} start
+ status=($?)
+ else
+ status=($($startpar -t 30 -T 3 -a start ${p[@]}))
+ fi
+ echo -en "$rc_reset"
+ blogger "exit status of (${p[@]##*S$rex}) is (${status[@]})"
+
+ s=0
+ for script in ${p[@]##*S$rex} ; do
+ case "${status[$s]}" in
+ [1-4]) failed="${failed:+$failed }$script" ;;
+ [56]) skipped="${skipped:+$skipped }$script" ;;
+ 0|*) ;;
+ esac
+ : $((s++))
+ done
+ done
+fi
+
+################################################################
+#
+# Be verbose and print stats
+echo -n "System Boot Control: "
+echo -e "The system has been ${stat}${extd}set up${norm}"
+if test -n "$failed" ; then
+ n=$((${#failed} + 7))
+ echo -n "Failed features: "
+ test $n -lt 47 && echo -en "\033[${COLUMNS}C\033[${n}D"
+ echo -e "${warn}${failed}${norm}"
+fi
+if test -n "$skipped" ; then
+ n=$((${#skipped} + 7))
+ echo -n "Skipped features: "
+ test $n -lt 47 && echo -en "\033[${COLUMNS}C\033[${n}D"
+ echo -e "${attn}${skipped}${norm}"
+fi
+
+
+################################################################
+#
+# Check for boot cycle detection
+test -s /lib/bootcycle/stats && . /lib/bootcycle/stats
+
+
+# Remember for master resource script
+if test "$DO_CONFIRM" = "yes" ; then
+ touch /var/run/do_confirm
+fi
+
+# Restore old terminal settings
+stty $otty
+
+################################################################
+#
+# Let zic set timezone - if present (from boot.ldconfig).
+if test -n "$TIMEZONE" -a -x /usr/sbin/zic ; then
+ echo -n Setting up timezone data
+ /usr/sbin/zic -l $TIMEZONE
+ rc_status -v -r
+fi
+
+################################################################
+#
+# start user defined bootup script.
+if test -f /etc/init.d/boot.local ; then
+ ECHO_RETURN=$rc_done_up
+ echo "Running /etc/init.d/boot.local"
+ /bin/sh /etc/init.d/boot.local || rc_failed
+ rc_status -v1; rc_reset
+ rc_splash "boot.local start"
+fi
+
+rc_reset
+exit 0
diff --git a/initramfs/distro-specs/suse/files-default/etc/init.d/halt b/initramfs/distro-specs/suse/files-default/etc/init.d/halt
new file mode 100755
index 00000000..65e5b0ad
--- /dev/null
+++ b/initramfs/distro-specs/suse/files-default/etc/init.d/halt
@@ -0,0 +1,90 @@
+#! /bin/sh
+#
+# Description: Modificated /etc/init.d/halt for use with Diskless
+# X Stations (v4.0)
+# -> replaces /etc/init.d/halt
+#
+# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 13-12-2005
+# Copyright: (c) 2003, 2005 - RZ Universitaet Freiburg
+#
+# Version: 0.0.3a
+#
+# Some parts taken from /etc/init.d/halt by
+#
+# Copyright (c) 1996-2004 SuSE Linux AG, Nuernberg, Germany.
+# All rights reserved.
+
+. /etc/rc.status
+. /etc/sysconfig/clock
+. /etc/sysconfig/suseconfig
+
+#
+# Avoid being interrupted by child or keyboard
+trap "echo" SIGINT SIGSEGV SIGQUIT SIGTERM
+set +e
+
+rc_reset
+case "$0" in
+ *halt)
+ message="The system is halted."
+ command="halt"
+ modprobe -q apm &>/dev/null
+ if test -e /proc/apm -o -e /proc/acpi -o -e /proc/sys/acpi ; then
+ command="halt -p"
+ else
+ read cmdline < /proc/cmdline
+ case "$cmdline" in
+ *apm=smp-power-off*|*apm=power-off*)
+ command="halt -p" ;;
+ esac
+ fi
+ ;;
+ *reboot)
+ message="Please stand by while rebooting the system..."
+ command="reboot"
+ ;;
+ *)
+ echo "$0: call me as \"halt\" or \"reboot\" please!"
+ exit 1
+ ;;
+esac
+
+# Write to wtmp file before unmounting /var (only needed with
+# persistent mounted filesystem)
+# $command -w
+
+rc_reset
+echo "Turning off swap"
+sync ; sync
+swapoff -a || rc_failed
+rc_status
+
+UMOUNT_FAILED=false
+rc_reset
+echo "Unmounting file systems and devices"
+for unmount in /media/* ; do
+ umount -fnt $unmount &>/dev/null
+done
+umount -fnt /tmp/scratch &>/dev/null
+eject /dev/zip &>/dev/null &
+rc_status -v1
+
+umount -anft noproc,nonfs &>/dev/null
+
+rc_reset
+# maybe we use multiple devices
+if test -f /etc/mdtab -a -x /sbin/mdadd ; then
+ echo -n "Disable Multiple Devices"
+ /sbin/mdstop -a || rc_failed
+ rc_status -v1
+fi
+
+sync
+
+# show "the system is down" message
+if test "$SPLASH" = yes ; then
+ /sbin/splash -q -p 65535 -t "isdown"
+fi
+
+echo $message
+exec $command -d -f
diff --git a/initramfs/distro-specs/suse/functions-10.0 b/initramfs/distro-specs/suse/functions-10.0
new file mode 100644
index 00000000..3dac8704
--- /dev/null
+++ b/initramfs/distro-specs/suse/functions-10.0
@@ -0,0 +1,58 @@
+# Description: configuration functions for SuSE 10.0 which differ from
+# functions defined in general SuSE base settings ... General
+# changes should be done there, version specific changes for
+# the 10.0 here.
+#
+# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 08-07-2006
+#
+# Copyright: (c) 2006 - RZ Universitaet Freiburg
+#
+# Version: 0.3.0a
+
+# udev service
+udev_hotplug () {
+local result=0
+echo "Starting udev"
+udevstart || result=1
+if [ -x /bin/udevd ] ; then
+ export UDEVD_EXPECTED_SEQNUM=$(cat /sys/kernel/hotplug_seqnum)
+ export UDEVD_EVENT_TIMEOUT=1
+ echo "" > /proc/sys/kernel/hotplug
+ udevd --daemon || result=1
+else error "$df_errudev" nonfatal
+fi
+return $result
+}
+
+# acpi and powersave
+config_acpi () {
+rllinker acpid "10" "12"
+rllinker powersaved "11" "11"
+}
+
+# prepare virtual machine environment (vmware, vmplayer)
+config_vmware () {
+rllinker "vmware-prep" "18" "02"
+rllinker "vmware" "20" "02"
+sed -e "s,TARGETS =,TARGETS = vmware-prep," \
+ /mnt/etc/${D_INITDIR}/.depend.start >> /etc/.depend.start
+ echo "vmware-prep: " >> /etc/.depend.start
+ cp /etc/.depend.start /mnt/etc/${D_INITDIR}/.depend.start
+# during vmware sessions linux should not handle usb events/devices
+testmkd /mnt/var/X11R6/bin
+echo '#!/bin/sh'> /mnt/var/X11R6/bin/vm-udev
+echo -e "# Script for blocking linux from handling usb \
+devices\n# during vmware sessions. If you like to remove certain modules \
+add them\n# to the list below - Dirk von Suchodoletz, <dirk@goe.net>\n\
+STATE=1\nps aux|grep -i vmware|grep -v \"grep\" &>/dev/null && { STATE=0; \
+/sbin/rmmod usb-storage &>/tmp/null; }\n\
+[ x\$ACTION = xremove ] && { [ \$STATE = 0 ] && /sbin/rmmod usb-storage \
+&>/dev/null; }\nexit \$STATE" >> /mnt/var/X11R6/bin/vm-udev
+chmod u+x /mnt/var/X11R6/bin/vm-udev
+echo -e "# special entry to block linux from reacting to usb events during \
+running\n# vmware sessions, generated by $0 during initramfs\n# Dirk von \
+Suchodoletz, <dirk@goe.net>\nSUBSYSTEM==\"usb\", ACTION==\"add\", \
+PROGRAM=\"/var/X11R6/bin/vm-udev\", OPTIONS=\"ignore_device\"\n\
+SUBSYSTEM==\"usb\", ACTION==\"remove\", PROGRAM=\"/var/X11R6/bin/vm-udev\"" \
+ >> /mnt/etc/udev/rules.d/01-udev-vm.rules
+}
diff --git a/initramfs/distro-specs/suse/functions-10.1 b/initramfs/distro-specs/suse/functions-10.1
new file mode 100644
index 00000000..0a39e86d
--- /dev/null
+++ b/initramfs/distro-specs/suse/functions-10.1
@@ -0,0 +1,120 @@
+# configuration functions for SuSE 10.1 which differ from functions defined
+# in general SuSE base definitions ... General changes should be done there,
+# version specific changes for the 10.1 go here.
+#
+# Dirk von Suchodoletz <dvs@OpenSLX.com>, 05-09-2006
+#
+# (c) 2006 - RZ Universitaet Freiburg
+
+# some specific stuff to initialize
+preinit () {
+# fake the existence of some helper binaries (which are not of any use
+# within initialramfs)
+shell="/bin/sh"
+[ -x /bin/busybox ] && shell="/bin/ash"
+for i in usb_id scsi_id vol_id edd_id ata_id path_id hwup ifup ; do
+ echo -e "#!$shell\n:" >/sbin/$i
+done
+mkdir /lib/udev /usr/sbin
+for i in idedma.sh mount.sh rename_netiface create_floppy_devices ; do
+ echo -e "#!$shell\n:" >/lib/udev/$i
+done
+echo -e "#!$shell\n:" >/usr/sbin/alsactl
+rm /etc/udev/rules.d/60-persistent-storage.rules 2>/dev/null
+chmod u+x /sbin/* /lib/udev/* /usr/sbin/*
+}
+
+# udev service
+udev_hotplug () {
+local result=0
+echo "Starting udev"
+# might be used if busybox is available
+#mknod /dev/console c 5 1
+#mknod /dev/null c 1 3
+#mknod /dev/kmsg c 1 11
+if [ -x /bin/udevd ] ; then
+ echo "" > /proc/sys/kernel/hotplug
+ udevd --daemon || result=1
+ trigger_device_events
+ usleep 50
+else error "$df_errudev" nonfatal
+fi
+return $result
+}
+
+# acpi and powersave
+config_acpi () {
+rllinker acpid "10" "12"
+rllinker powersaved "11" "11"
+}
+
+# afs client
+# configure afs client
+config_afs () {
+if [ "x$start_afs" = "xyes" ] ; then
+ if [ -f /mnt/etc/init.d/openafs-client ] ; then
+ test -d /mnt/afs || error "${df_errafsd}"
+ testmkd /mnt/var/cache/openafs
+ rllinker "openafs-client" "15" "06"
+ # echo -e "# /etc/sysconfig/afs-client - file generated by \
+ #$0:\n#\t$date\n" >/etc/sysconfig/afs-client.new;
+ # sed -e "s,THIS_CELL_SERVER.*,THIS_CELL_SERVER=\"$cell_serv\"," \
+ # -e "s,PREFERREDSERVERS.*,PREFERREDSERVERS=\"$cell_serv\"," \
+ # -e "s,THIS_CELL.*,THIS_CELL=\"$this_cell\"," \
+ # -e "s,MEMCACHE.*,MEMCACHE=\"yes\"," \
+ # /etc/sysconfig/afs-client >> \
+ # /etc/sysconfig/afs-client.new
+ # mv /etc/sysconfig/afs-client.new /etc/sysconfig/afs-client
+ else
+ error "${df_errafsn}" nonfatal
+ fi
+fi
+}
+
+# prepare virtual machine environment (vmware, vmplayer)
+config_vmware () {
+rllinker "vmware-prep" "18" "02"
+rllinker "vmware" "20" "02"
+sed -e "s,TARGETS =,TARGETS = vmware-prep," \
+ /mnt/etc/${D_INITDIR}/.depend.start >> /etc/.depend.start
+ echo "vmware-prep: " >> /etc/.depend.start
+ cp /etc/.depend.start /mnt/etc/${D_INITDIR}/.depend.start
+# during vmware sessions linux should not handle usb events/devices
+# vmplayer and recent versions of vmware do not need this hack
+if [ ! -x /mnt/usr/bin/vmplayer ] ; then
+ testmkd /mnt/var/X11R6/bin
+ echo '#!/bin/sh'> /mnt/var/X11R6/bin/vm-udev
+ echo -e "# Script for blocking linux from handling usb \
+devices\n# during vmware sessions. If you like to remove certain modules \
+add them\n# to the list below - Dirk von Suchodoletz, <dvs@OpenSLX.com>\n\
+STATE=1\nps aux|grep -i vmware|grep -v \"grep\" &>/dev/null && { STATE=0; \
+/sbin/rmmod usb-storage &>/tmp/null; }\n\
+[ x\$ACTION = xremove ] && { [ \$STATE = 0 ] && /sbin/rmmod usb-storage \
+&>/dev/null; }\nexit \$STATE" >> /mnt/var/X11R6/bin/vm-udev
+ chmod u+x /mnt/var/X11R6/bin/vm-udev
+ echo -e "# special entry to block linux from reacting to usb events during \
+running\n# vmware sessions, generated by $0 during initramfs\n# Dirk von \
+Suchodoletz, <dvs@OpenSLX.com>\nSUBSYSTEM==\"usb\", ACTION==\"add\", \
+PROGRAM=\"/var/X11R6/bin/vm-udev\", OPTIONS=\"ignore_device\"\n\
+SUBSYSTEM==\"usb\", ACTION==\"remove\", PROGRAM=\"/var/X11R6/bin/vm-udev\"" \
+ >> /mnt/etc/udev/rules.d/01-udev-vm.rules
+fi
+}
+
+# set up keytable (function run in hwautocfg)
+# kbd runlevel link is in the list of initial runlevel scripts (see
+# config-10.1 file)
+keytable () {
+# remove unneeded components from the startscript
+sed -e "/wanted keytable/,/^fi$/d;/load usb drivers/,/^esac$/d" \
+ -i /mnt/etc/${D_INITDIR}/kbd
+sed -e "s,KEYTABLE=.*,KEYTABLE=\"${KEYTABLE}\"," \
+ -i /mnt/etc/${D_SYSCONFDIR}/keyboard
+}
+
+# consolefont and language (function run in hwautocfg)
+consolefont () {
+sed -e "s,RC_LANG=.*,RC_LANG=\"${LANG}\" # added in initrd," \
+ -i /mnt/etc/${D_SYSCONFDIR}/language
+}
+
diff --git a/initramfs/distro-specs/suse/functions-9.3 b/initramfs/distro-specs/suse/functions-9.3
new file mode 100644
index 00000000..44c4e672
--- /dev/null
+++ b/initramfs/distro-specs/suse/functions-9.3
@@ -0,0 +1,74 @@
+# Description: configuration script for SuSE 9.3 to configure linux
+# diskless clients (included by init, hwautocfg, servconfig
+# within initial ramdisk after inclusion of the main
+# functions file). This file might overwrite settings from
+# the main base for the several SuSE distro versions
+#
+# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 23-06-2006
+#
+# Copyright: (c) 2006 - RZ Universitaet Freiburg
+#
+# Version: 0.3.0a
+
+# distro specific stuff to initialize
+postinit () {
+ # for some reason the udev daemon does not create the needed device files
+ udevstart
+}
+
+# udev/hotplug - auto device discovery service
+udev_hotplug () {
+local result=0
+[ -d /etc/hotplug -a -d /etc/hotplug.d ] || error "$df_errhotpl" nonfatal
+echo "Enabling hotplug/udev"
+udevstart || result=1
+udevd -d || result=1
+return $result
+}
+
+# acpi and powersave
+config_acpi () {
+rllinker powersaved "10" "12"
+}
+
+# configure dbus (inter application communication for kde and gnome), hal
+# (hardware abstraction layer - used e.g. by powersaved) and resmgr
+# (resource manager - the user gets permissions to devices when loggin on)
+config_dreshal () {
+local start="05"
+local stop="18"
+if [ "x$start_dreshal" = "xyes" ]; then
+ if [ -e /mnt/etc/${D_INITDIR}/dbus ] ; then
+ strinfile "messagebus:" /mnt/etc/passwd || \
+ echo "messagebus:x:100:101:User for D-BUS:/var/run/dbus:/bin/false" \
+ >> /mnt/etc/passwd
+ strinfile "messagebus:" /mnt/etc/group || \
+ echo "messagebus:!:101:" >> /mnt/etc/group
+ testmkd /mnt/var/run/dbus
+ # set permissions with userid
+ echo -e "\tchown messagebus:messagebus /var/run/dbus 2>/dev/null" \
+ >>/mnt/etc/${D_INITDIR}/boot.ld
+ rllinker "dbus" "$start" "$stop"
+ fi
+ if [ -e /mnt/etc/${D_INITDIR}/resmgr ] ; then
+ testmkd /mnt/var/run/resmgr/classes
+ start="0"`expr $start + 1`
+ stop="0"`expr $start - 1`
+ rllinker "resmgr" "$start" "$stop"
+ fi
+ if [ -e /mnt/etc/${D_INITDIR}/hal ] ; then
+ strinfile "haldaemon:" /mnt/etc/passwd || \
+ echo "haldaemon:x:105:103:User for haldaemon:/var/run/hal:/bin/false" \
+ >> /mnt/etc/passwd
+ strinfile "haldaemon:" /mnt/etc/group || \
+ echo "haldaemon:!:103:" >> /mnt/etc/group
+ testmkd /mnt/var/run/hal
+ # set permissions with userid
+ echo -e "\tchown haldaemon:haldaemon /var/run/hal 2>/dev/null" \
+ >>/mnt/etc/${D_INITDIR}/boot.ld
+ start="0"`expr $start + 1`
+ stop="0"`expr $start - 1`
+ rllinker "hal" "$start" "$stop"
+ fi
+fi
+}
diff --git a/initramfs/distro-specs/suse/functions-default b/initramfs/distro-specs/suse/functions-default
new file mode 100644
index 00000000..16b8f0e9
--- /dev/null
+++ b/initramfs/distro-specs/suse/functions-default
@@ -0,0 +1,499 @@
+# Description: configuration script for general SuSE to configure linux
+# diskless clients (included by init, hwautocfg, servconfig
+# within initial ramdisk after inclusion of the main
+# functions file). This file is the main base for the several
+# SuSE distro versions
+#
+# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 29-07-2006
+#
+# Copyright: (c) 2006 - RZ Universitaet Freiburg
+#
+# Version: 0.3.3a
+
+# empty functions are defined at the beginning of /etc/functions
+
+# distro specific function called from servconfig script
+config_distro () {
+# enable magic sysrequest for the clients
+echo -e "# /etc/${D_SYSCONFDIR}/sysctl - file modified by $0 version $version"\
+ > /mnt/etc/${D_SYSCONFDIR}/sysctl.new
+sed -e "s,ENABLE_SYSRQ=.*,ENABLE_SYSRQ=\"yes\"," \
+ /mnt/etc/${D_SYSCONFDIR}/sysctl > /etc/sysctl
+cat /etc/sysctl >> /mnt/etc/${D_SYSCONFDIR}/sysctl
+# add specific path /var/X11R6/bin ...
+echo -e "# stuff generated by $0 (out of InitRD written $date)\n\
+PATH=\"\$PATH:/var/X11R6/bin\"\n\
+test \"\$UID\" -ge 100 && PATH=\"\$PATH:.\"\n\
+QTDIR=/usr/lib/qt3\nexport QTDIR\nno_proxy='localhost'\n\
+export no_proxy" > /mnt/etc/SuSEconfig/profile
+echo -e "DXS VERSION = 4.1.0\nINITRAMFS GENERATION DATE = $date" \
+ >> /mnt/etc/SuSE-release
+# add the halt link to the 0 and 6 runlevel directories
+ln -sf ../halt /mnt/etc/${D_INITDIR}/rc0.d/S20halt
+ln -sf ../halt /mnt/etc/${D_INITDIR}/rc6.d/S20reboot
+# if YaST2 should be runnable (without much effect anyway) on the client
+testmkd /mnt/var/log/YaST2
+}
+
+# linking runlevel scripts
+rllinker () {
+local script="$1"
+local start="$2"
+local stop="$3"
+# empty runlevel links - decision on running certain services is
+# passed via configuration
+for i in rc3.d/K$stop$script rc5.d/K$stop$script \
+ rc3.d/S$start$script rc5.d/S$start$script ; do
+ ln -sf ../$script /mnt/etc/${D_INITDIR}/$i
+done
+}
+
+# group of functions for the normal runlevels - first parameter is start
+# second stop
+# function for ntp configuration
+config_ntp () {
+if [ -e /mnt/etc/${D_INITDIR}/ntp ] ; then
+ if ! strinfile "ntp:" /mnt/etc/passwd ; then
+ echo -e "ntp:x:74:65534:NTP daemon:/var/lib/ntp:/bin/false" \
+ >>/mnt/etc/passwd
+ echo -e "ntp:!:13099:0:99999:7:::" >>/mnt/etc/shadow
+ fi
+ testmkd /mnt/var/lib/ntp/var/run/ntp &>/dev/null
+ if [ "x$start_ntp" = "xinitial" ] ; then
+ echo -e "\t# entries added by $0 (InitRamFS from $date)\n\
+\t( ntpdate -s -b $ntp_servers >${LOGFILE} 2>&1 && {\n\t which \
+hwclock &>/dev/null && hwclock -w;} ) &" \
+ >>/mnt/etc/${D_INITDIR}/boot.ld
+ elif [ "x$start_ntp" = "xyes" ] ; then
+ rllinker "ntp" "07" "14"
+ fi
+fi
+}
+
+# function for atd
+config_atd () {
+if [ "x$start_atd" = "xyes" ]; then
+ rllinker "atd" "14" "04"
+fi
+}
+
+# function for configuration of cron services
+config_cron () {
+if [ "x$start_cron" = "xyes" ] ; then
+ if [ -f /mnt/etc/${D_INITDIR}/cron ] ; then
+ rllinker "cron" "18" "02"
+ testmkd /mnt/var/spool/cron/lastrun
+ testmkd /mnt/var/spool/cron/tabs
+ echo -e "# /etc/crontab - file generated by $0:\n\
+#\t$date\nSHELL=/bin/sh\nPATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin\
+\nMAILTO=\n-*/15 * * * *\troot\ttest -x /usr/lib/cron/run-crons && \
+/usr/lib/cron/run-crons >/dev/null 2>&1" >/mnt/etc/crontab
+ else
+ error "$df_errcron" nonfatal
+ fi
+fi
+}
+
+# syslog service
+config_syslog () {
+if [ "x$start_syslog" = "xyes" ] ; then
+ if [ -f /mnt/etc/${D_INITDIR}/syslog ] ; then
+ # how to configure remote log server?
+ # logging servers might be specified in $log_servers (from e.g. dhcp)
+ echo -e "# File modified by $0 within initial ramdisk" \
+ > /etc/syslog-ng.conf
+ sed -e "s,.*dhcp/dev.*,,;s,.*named/dev.*,," \
+ /mnt/etc/syslog-ng/syslog-ng.conf >> /etc/syslog-ng.conf
+ cp /etc/syslog-ng.conf /mnt/etc/syslog-ng/syslog-ng.conf
+ rllinker syslog "02" "20"
+ else
+ error "$df_errsysl" nonfatal
+ fi
+fi
+}
+
+# secure shell service
+config_sshd () {
+if [ "x$start_sshd" = "xyes" ] ; then
+ if [ -f /mnt/etc/${D_INITDIR}/sshd ] ; then
+ testmkd /mnt/var/lib/sshd
+ testmkd /mnt/var/lib/empty
+ rllinker "sshd" "12" "10"
+ else
+ error "$df_errsshd" nonfatal
+ fi
+fi
+}
+
+# snmp agent for remote monitoring
+config_snmp () {
+if [ "x$start_snmp" = "xyes" ] ; then
+ if [ -f /mnt/etc/${D_INITDIR}/snmpd ] ; then
+ rllinker "snmpd" "24" "02"
+ testmkd /mnt/var/lib/net-snmp >/dev/null 2>&1
+ fi
+ # fixme!!
+ # write service monitor depending on services started
+ fi
+}
+
+# configure X display manager (/etc/${D_SYSCONFDIR}/displaymanager)
+config_dm_entry () {
+local dm="$1"
+# should be stated that entries were made (fixmee how??)
+sed -e "s,DISPLAYMANAGER=.*,DISPLAYMANAGER=\"$start_xdmcp\"," \
+ -e "s,.*_XSERVER.*,DISPLAYMANAGER_STARTS_XSERVER=\"$dm\"," \
+ -i /mnt/etc/${D_SYSCONFDIR}/displaymanager
+# start the display manager as early as possible, but avoid that it is
+# started twice during bootup ... late_dm can postpone the start of
+# displaymanager and X if problems with keyboard, console occur ...
+if [ "x$late_dm" = "xyes" ] ; then
+ ln -sf /etc/${D_INITDIR}/xdm /mnt/etc/${D_INITDIR}/rc5.d/S01xdm
+ ln -sf /etc/${D_INITDIR}/xdm /mnt/etc/${D_INITDIR}/rc5.d/K18xdm
+ sed -e "s,xdm: .*,xdm:," -i /mnt/etc/${D_INITDIR}/.depend.start
+else
+ ln -sf /etc/${D_INITDIR}/xdm /mnt/etc/${D_INITBOOTD}/S02xdm
+ echo -e "\t(sleep 60; ln -sf ../xdm /etc/${D_INITDIR}/rc5.d/S01xdm; \
+ rm /etc/${D_INITBOOTD}/S02xdm) &\n" >>/mnt/etc/${D_INITDIR}/boot.ld
+fi
+}
+
+# configure X display manager (runlevel links and kind of manager)
+config_xdm () {
+config_dm_entry yes
+}
+
+# configure gdm as display manager
+config_gdm () {
+config_dm_entry yes
+testmkd /mnt/var/lib/gdm
+testmkd /mnt/var/log/gdm
+strinfile "gdm:" /mnt/etc/passwd || echo "gdm:x:50:15:Gnome Display Manager \
+Daemon:/var/lib/gdm:/bin/false" >>/mnt/etc/passwd
+# hack - gdm should be user 50 and shadow group 15
+chown 50:15 /mnt/var/lib/gdm /mnt/var/log/gdm
+chmod 0750 /mnt/var/lib/gdm /mnt/var/log/gdm
+xdmcp_hosts=`echo $x_display_manager|sed -e "s; ;,;"`
+if [ "${DEBUGLEVEL}" -gt 0 ] ; then
+ local debug="true"
+else
+ local debug="false"
+fi
+# check if a gdm.conf was provided via ConfTGZ
+if [ ! -f /etc/opt/gnome/gdm/gdm.conf ] ; then
+ echo -e "# /etc/opt/gnome/gdm/gdm.conf - file generated by $0\n\
+[daemon]
+AutomaticLoginEnable=false
+TimedLoginEnable=false
+#AlwaysRestartServer=false
+Chooser=/opt/gnome/lib/gdm/gdmchooser
+Greeter=/opt/gnome/lib/gdm/gdmgreeter
+RemoteGreeter=/opt/gnome/lib/gdm/gdmgreeter
+DefaultPath=/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/bin:\
+/opt/gnome/bin:/opt/kde3/bin:/opt/kde/bin:/usr/openwin/bin
+RootPath=/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/local/bin:/usr/bin:\
+/usr/X11R6/bin:/bin:/usr/games:/opt/bin:/opt/gnome/bin:/opt/kde3/bin:\
+/opt/kde/bin:/usr/openwin/bin:/opt/cross/bin
+User=gdm
+Group=shadow
+#KillInitClients=true
+LogDir=/var/lib/gdm
+ServAuthDir=/var/lib/gdm
+PostLoginScriptDir=/etc/opt/gnome/gdm/PostLogin/
+PreSessionScriptDir=/etc/opt/gnome/gdm/PreSession/
+PostSessionScriptDir=/etc/opt/gnome/gdm/PostSession/
+DisplayInitDir=/etc/opt/gnome/gdm/Init
+XKeepsCrashing=/etc/opt/gnome/gdm/XKeepsCrashing
+RebootCommand=/sbin/shutdown -r now
+HaltCommand=/sbin/shutdown -h now
+SuspendCommand=/usr/bin/powersave --suspend-to-disk
+BaseXsession=/etc/opt/gnome/gdm/Xsession
+SessionDesktopDir=/usr/share/xsessions/:/etc/X11/sessions/:\
+/etc/opt/gnome/dm/Sessions/:/opt/gnome/share/gdm/BuiltInSessions/:\
+$vmsessions
+BaseXsession=/etc/opt/gnome/gdm/Xsession
+UserAuthFBDir=/tmp
+UserAuthFile=.Xauthority
+StandardXServer=/usr/X11R6/bin/X +kb -I
+Xnest=/usr/X11R6/bin/Xnest -audit 0 -name Xnest
+
+[security]
+AllowRoot=true
+AllowRemoteRoot=true
+AllowRemoteAutoLogin=false
+CheckDirOwner=true
+#UserMaxFile=65536
+RetryDelay=1
+#SessionMaxFile=524388
+NeverPlaceCookiesOnNFS=true
+
+[xdmcp]
+Enable=$xdmcp
+HonorIndirect=true
+MaxPending=4
+MaxPendingIndirect=4
+MaxSessions=10
+MaxWait=15
+MaxWaitIndirect=15
+DisplaysPerHost=2
+Willing=/etc/X11/xdm/Xwilling
+
+[gui]
+#MaxIconWidth=128
+#MaxIconWidth=128
+
+[greeter]
+Browser=false
+#TitleBar=true
+MinimalUID=500
+Quiver=true
+Welcome=Welcome to %n
+LockPosition=true
+BackgroundImage=0
+BackgroundColor=#000000
+ShowGnomeFailsafeSession=false
+ShowXtermFailsafeSession=false
+ShowLastSession=false
+Use24Clock=true
+GraphicalTheme=GDM-SuSE
+GraphicalTheme=circles
+GraphicalThemeDir=/opt/gnome/share/gdm/themes/
+GraphicalThemeRand=false
+#SystemMenu=true
+InfoMsgFile=/opt/gnome/share/gdm/UserInfo
+InfoMsgFont=monospace 10
+SoundOnLogin=false
+[chooser]
+HostImageDir=/opt/gnome/share/hosts/
+Broadcast=false
+Multicast=false
+Hosts=$xdmcp_hosts
+
+[debug]
+Enable=$debug" >/mnt/etc/opt/gnome/gdm/gdm.conf
+ if [ "x$start_x" = "xindirect" ] ; then
+ # when X server consumes to much mem set X -terminate
+ echo -e "\n[servers]\n0=Terminal -audit 0 -indirect \
+$host_name\n\n\
+[server-Terminal]\nname=Terminal server\ncommand=/usr/X11R6/bin/X \
+-audit 0\n\
+flexible=true\nhandled=true\nchooser=true" >>/mnt/etc/opt/gnome/gdm/gdm.conf
+ else
+ echo -e "\n[servers]\n0=Standard\n\n\
+[server-Standard]\nname=Standard server\ncommand=/usr/X11R6/bin/X\n\
+flexible=true\nhandled=true" >>/mnt/etc/opt/gnome/gdm/gdm.conf
+ fi
+fi
+}
+
+# configure kdm as display manager
+config_kdm () {
+config_dm_entry yes
+# check if a kdmrc was provided via ConfTGZ
+[ -f /rootfs/etc/opt/kde3/share/config/kdm/kdmrc ] || \
+ echo -e "# /etc/opt/kde3/share/config/kdm/kdmrc - \
+file generated by\n\
+#\t$0: $date\n\
+[General]\n\
+ConfigVersion=2.3\nStaticServers=:0\nExportList=LANG\n\
+PidFile=/var/run/kdm.pid\nAuthDir=/var/lib/xdm/authdir/authfiles/\n\
+ServerVTs=-7\nConsoleTTYs=tty1,tty2,tty3,tty4,tty5,tty6\n\n\
+[Xdmcp]\n\
+Enable=$xdmcp\nXaccess=/etc/X11/xdm/Xaccess\n\
+Willing=/etc/X11/xdm/Xwilling\n[Shutdown]\nHaltCmd=/sbin/halt\n\
+RebootCmd=/sbin/reboot\n\n\
+[X-*-Core]\n\
+ServerCmd=/usr/X11R6/bin/X -br\n\
+ServerArgsLocal=-nolisten tcp\n\
+TerminateServer=true\n\
+Resources=/etc/X11/xdm/Xresources\nSetup=/etc/X11/xdm/Xsetup\n\
+UserPath=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/var/X11R6/bin
+SystemPath=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:\
+/usr/X11R6/bin:/var/X11R6/bin
+Startup=/etc/X11/xdm/Xstartup\nReset=/etc/X11/xdm/Xreset\n\
+Session=/etc/X11/xdm/Xsession\nClientLogFile=.xsession-errors-%s\n\
+AutoReLogin=false\nAllowRootLogin=true\n\
+AllowNullPasswd=true\nAllowShutdown=All\n\
+SessionsDirs=/etc/X11/sessions,/usr/share/xsessions,\
+/opt/kde3/share/apps/kdm/sessions,$vmsessions/kdm\n\
+AuthNames=XDM-AUTHORIZATION-1,MIT-MAGIC-COOKIE-1\n\n\
+[X-*-Greeter]\n\
+ShowUsers=Selected\nSelectedUsers=\nUserList=false\n\
+GUIStyle=default\nLogoArea=Clock\nGreetString=Diskless Linux (%h)\n\
+GreetFont=Nimbus Sans l,20,-1,5,48,0,0,0,0,0\n\
+StdFont=Nimbus Sans l,14,-1,5,48,0,0,0,0,0\n\
+FailFont=Nimbus Sans l,14,-1,5,74,0,0,0,0,0\n\
+AntiAliasing=true\nLanguage=$lang\n\
+EchoMode=OneStar\nShowLog=false\n\
+UseTheme=true\nTheme=/opt/kde3/share/apps/kdm/themes/SUSE\n\
+UseBackground=false\n\
+BackgroundCfg=/etc/opt/kde3/share/config/kdm/backgroundrc\n\n\
+[X-:*-Greeter]\n\
+PreselectUser=None\n\
+FocusPasswd=true\nLoginMode=DefaultLocal\n\
+AllowClose=false\nUseAdminSession=true\n\n\
+[X-:0-Core]\n\
+AutoLoginEnable=false\n\
+ClientLogFile=.xsession-errors\n\
+NoPassEnable=false\n\n\
+[X-:0-Greeter]\n\
+LogSource=/dev/xconsole\n\
+UseAdminSession=false" >/mnt/etc/opt/kde3/share/config/kdm/kdmrc
+echo -e "" > /mnt/etc/opt/kde3/share/config/kdm/backgroundrc
+}
+
+# configure bluetooth services
+config_bt () {
+echo -e "# /etc/${D_SYSCONFDIR}/bluetooth - file modified by $0"\
+ > /etc/bluetooth
+sed -e "s,START_SERVICES.*,START_SERVICES=\"yes\"," \
+ /mnt/etc/${D_SYSCONFDIR}/bluetooth >> /etc/bluetooth
+cp /etc/bluetooth /mnt/etc/${D_SYSCONFDIR}/bluetooth
+}
+
+# set up keytable (function run in hwautocfg)
+# kbd runlevel link is set via config_distro to avoid clashes between
+# servconfig and hwautocfg settings
+keytable () {
+sed -e "s,KEYTABLE=.*,KEYTABLE=\"${KEYTABLE}\"," \
+ -i /mnt/etc/${D_SYSCONFDIR}/keyboard
+echo -e "\tloadkeys ${KEYTABLE} >${LOGFILE} 2>&1\n" \
+ >>/mnt/etc/${D_INITDIR}/boot.ld
+}
+
+# consolefont and language (function run in hwautocfg)
+consolefont () {
+echo -e "\tsetfont ${CONSOLE_FONT} >${LOGFILE} 2>&1\n" \
+ >>/mnt/etc/${D_INITDIR}/boot.ld
+sed -e "s,RC_LANG=.*,RC_LANG=\"${LANG}\" # added in initrd," \
+ -i /mnt/etc/${D_SYSCONFDIR}/language
+}
+
+# configure dbus (inter application communication for kde and gnome), hal
+# (hardware abstraction layer - used e.g. by powersaved) and resmgr
+# (resource manager - the user gets permissions to devices when loggin on)
+# runlevel script for haldaemon is now haldaemon instead of hal
+config_dreshal () {
+local start="05"
+local stop="18"
+if [ "x$start_dreshal" = "xyes" ]; then
+ if [ -f /mnt/etc/${D_INITDIR}/dbus ] ; then
+ strinfile "messagebus:" /mnt/etc/passwd || \
+ echo "messagebus:x:100:101:User for D-BUS:/var/run/dbus:/bin/false" \
+ >> /mnt/etc/passwd
+ strinfile "messagebus:" /mnt/etc/group || \
+ echo "messagebus:!:101:" >> /mnt/etc/group
+ testmkd /mnt/var/run/dbus
+ # set permissions with userid
+ echo -e "\tchown messagebus:messagebus /var/run/dbus 2>/dev/null" \
+ >>/mnt/etc/${D_INITDIR}/boot.ld
+ rllinker "dbus" "$start" "$stop"
+ fi
+ if [ -f /mnt/etc/${D_INITDIR}/resmgr ] ; then
+ testmkd /mnt/var/run/resmgr/classes
+ start="0"`expr $start + 1`
+ stop="0"`expr $start - 1`
+ rllinker "resmgr" "$start" "$stop"
+ fi
+ if [ -f /mnt/etc/${D_INITDIR}/haldaemon ] ; then
+ strinfile "haldaemon:" /mnt/etc/passwd || \
+ echo "haldaemon:x:105:103:User for haldaemon:/var/run/hal:/bin/false" \
+ >> /mnt/etc/passwd
+ strinfile "haldaemon:" /mnt/etc/group || \
+ echo "haldaemon:!:103:" >> /mnt/etc/group
+ testmkd /mnt/var/run/hal
+ # set permissions with userid
+ echo -e "\tchown haldaemon:haldaemon /var/run/hal 2>/dev/null" \
+ >>/mnt/etc/${D_INITDIR}/boot.ld
+ start="0"`expr $start + 1`
+ stop="0"`expr $start - 1`
+ rllinker "haldaemon" "$start" "$stop"
+ fi
+fi
+}
+
+# configure automounter
+config_automount () {
+if [ -e /mnt/etc/${D_SYSCONFDIR}/autofs ] ; then
+ testmkd /var/lock/subsys
+ echo -e "# /etc/${D_SYSCONFDIR}/autofs - file modified by\n#\t$0:\n#" \
+ > /etc/autofs
+ sed -e "s,AUTOFS_OPTIONS.*,AUTOFS_OPTIONS=\"--timeout 3\"," \
+ /mnt/etc/${D_SYSCONFDIR}/autofs >> /etc/autofs
+ cp /etc/autofs /mnt/etc/${D_SYSCONFDIR}/autofs
+ rllinker "autofs" "18" "04"
+else
+ error "$df_erramt" nonfatal
+fi
+}
+# start name service caching daemon
+config_nscd () {
+if [ -e /mnt/etc/${D_INITDIR}/nscd ] ; then
+ testmkd /mnt/var/run/nscd
+ rllinker "nscd" "02" "16"
+else
+ error "$df_errnsc" nonfatal
+fi
+}
+
+# start portmapper (needed at least for nfs and nis services)
+config_portmap () {
+rllinker "portmap" "02" "20"
+}
+
+# start NIS
+config_nis () {
+if [ -f /mnt/etc/${D_INITDIR}/ypbind ] ; then
+ rllinker "ypbind" "06" "16"
+else
+ error "$df_erryp" nonfatal
+fi
+}
+
+# start vmware
+config_vmware () {
+if [ -f /mnt/etc/${D_SYSCONFDIR}/vmware ] ; then
+ rllinker "vmware-prep" "18" "02"
+ rllinker "vmware" "20" "02"
+ # if running start scripts in parallel vmware-prep is not recognized
+ # first solution: just avoid running in parallel
+ #sed 's/PARALLEL=.*/PARALLEL=no/' /mnt/etc/${D_SYSCONFDIR}/boot \
+ # > /tmp/boot
+ #cp /tmp/boot /mnt/etc/${D_SYSCONFDIR}/boot
+ # second solution: vmware-prep script should be added to .depends.start
+ sed -e "s,TARGETS =,TARGETS = vmware-prep," \
+ /mnt/etc/${D_INITDIR}/.depend.start >> /etc/.depend.start
+ echo "vmware-prep: " >> /etc/.depend.start
+ cp /etc/.depend.start /mnt/etc/${D_INITDIR}/.depend.start
+ # this line should be added to /etc/hotplug.d/usb/50-usb.hotplug
+ # to block linux from handling usb events during vmware sessions
+ sed -e '/USB-specific/{;i\' \
+ -e 'ps aux |grep -i vmware| grep -v "grep" &>/dev/null && exit 0' \
+ -e ' }' -i /mnt/etc/hotplug.d/usb/50-usb.hotplug
+else
+ error "df_errvmw" nonfatal
+fi
+}
+
+# initialize runlevel skript to be executed during system startup
+# (before most of the normal boot init scripts)
+# this script should operate like a normal runlevel script
+d_mkrlscript () {
+local switch="$1"
+local name="$2"
+local info="$3"
+case "$1" in
+ init)
+ echo -e "#!/bin/sh\n# skeleton of /etc/${D_INITDIR}/$name created \
+by $0\n# after you applied changes to the creation scripts you have to \
+rerun\n# the mkdxsinitrd script to get them applied\n\
+. /etc/rc.status\n. /etc/${D_SYSCONFDIR}/logfile\nrc_reset\ncase \
+\"\$1\" in\n start)\n\techo -n \"$info\"" >>/mnt/etc/${D_INITDIR}/$name
+ chmod u+x /mnt/etc/${D_INITDIR}/$name
+ ;;
+ close)
+ echo -e "\trc_status -v\n\t;;\n stop)\n\t;;\nesac\nrc_exit" \
+ >>/mnt/etc/${D_INITDIR}/$name
+ ;;
+esac
+}
diff --git a/initramfs/distro-specs/ubuntu/README-6.06 b/initramfs/distro-specs/ubuntu/README-6.06
new file mode 100644
index 00000000..55701ab5
--- /dev/null
+++ b/initramfs/distro-specs/ubuntu/README-6.06
@@ -0,0 +1,14 @@
+fehler kubuntu 6.06:
+
+distro-functions: line 43: udevstert not found
+ -laut changelog von udev wird behaupted, dass man udevstart nicht mehr braucht..
+
+module unix not found -> im kernel
+anderer pfad in xorg.conf:
+fonts in /urs/share/X11/fonts + module pfad löschen
+
+bei livecd: cannot create dir /media/loop0 readonly!
+kioskmode deaktivieren + kdm start
+inittab anpassen! + konsole1 macht immer timeout auch wenn sich keiner anmeldet
+ACHTUNG: bei kdm root anmeldung ohne pw möglich!
+
diff --git a/initramfs/distro-specs/ubuntu/config-5.10 b/initramfs/distro-specs/ubuntu/config-5.10
new file mode 100644
index 00000000..4b9f1fec
--- /dev/null
+++ b/initramfs/distro-specs/ubuntu/config-5.10
@@ -0,0 +1,30 @@
+# Description: distro specific settings for Ubuntu Hoary Hedgehog (5.10)
+# defaults are taken from config-default file
+#
+# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 23-06-2006
+#
+# Copyright: (c) 2003, 2006 - RZ Universitaet Freiburg
+#
+
+# D_SYSCONFDIR - system wide configuration settings - /etc/sysconfig in SuSE
+# and RedHat, /etc/default in Debian and Ubuntu
+# 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_XF86CONFFILE - name and location of XFree/Xorg config file, e.g.
+# /etc/X11/xorg.conf or /etc/X11/XF86config, ...
+# D_XFONTPATH - path(es) where X11 fonts are installed (with trailing /*)
+# D_DEFAULTCOUNTRY - localization (see common functions)
+# D_HWMODTOIGNORE - hardware modules which should not tried to load (because
+# already in kernel, nonexistent, ...)
+# D_BOOTLOCAL - script for user specified stuff which should be started
+# during client bootup, path and file relative to /etc
+
+# no changes from default:
diff --git a/initramfs/distro-specs/ubuntu/config-6.06 b/initramfs/distro-specs/ubuntu/config-6.06
new file mode 100644
index 00000000..a75090a1
--- /dev/null
+++ b/initramfs/distro-specs/ubuntu/config-6.06
@@ -0,0 +1,30 @@
+# Description: distro specific settings for Ubuntu Dapper Dake (6.06)
+# defaults are taken from config-default file
+#
+# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 23-06-2006
+#
+# Copyright: (c) 2003, 2006 - RZ Universitaet Freiburg
+#
+
+# D_SYSCONFDIR - system wide configuration settings - /etc/sysconfig in SuSE
+# and RedHat, /etc/default in Debian and Ubuntu
+# 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_XF86CONFFILE - name and location of XFree/Xorg config file, e.g.
+# /etc/X11/xorg.conf or /etc/X11/XF86config, ...
+# D_XFONTPATH - path(es) where X11 fonts are installed (with trailing /*)
+# D_DEFAULTCOUNTRY - localization (see common functions)
+# D_HWMODTOIGNORE - hardware modules which should not tried to load (because
+# already in kernel, nonexistent, ...)
+# D_BOOTLOCAL - script for user specified stuff which should be started
+# during client bootup, path and file relative to /etc
+
+# no changes from default
diff --git a/initramfs/distro-specs/ubuntu/config-default b/initramfs/distro-specs/ubuntu/config-default
new file mode 100644
index 00000000..c0ee7c42
--- /dev/null
+++ b/initramfs/distro-specs/ubuntu/config-default
@@ -0,0 +1,55 @@
+# Description: distro specific default settings for Ubuntu - might be
+# merged/taken from Debian config-default
+#
+# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 23-06-2006
+#
+# Copyright: (c) 2003, 2006 - RZ Universitaet Freiburg
+
+# D_SYSCONFDIR - system wide configuration settings - /etc/sysconfig in SuSE
+# and RedHat, /etc/default in Debian and Ubuntu
+# 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
+# D_RWDIRSINRO - Writable Subdirectories in the RO-Dirs (D_RODIRSINRW)
+# 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_BINDMPTS - These directories will be created in the ramdisk and movemounted to the root ("/") this will also happen to /var and /etc
+# D_RCDIRS - runlevel directories relative to /etc
+# D_XF86CONFFILE - name and location of XFree/Xorg config file, e.g.
+# /etc/X11/xorg.conf or /etc/X11/XF86config, ...
+# D_XFONTPATH - path(es) where X11 fonts are installed (with trailing /*)
+# D_DEFAULTCOUNTRY - localization (see common functions)
+# D_HWMODTOIGNORE - hardware modules which should not tried to load (because
+# already in kernel, nonexistent, ...)
+# D_BOOTLOCAL - script for user specified stuff which should be started
+# during client bootup, path and file relative to /etc
+
+D_SYSCONFDIR=/default
+D_ETCEXCL="etc/gconf/*\n*.old\n*-\n\
+etc/autoinstall\nlogrotate*\nbootloader\n*~\n\
+pptp.d\nisdn\nyouservers\nhardware/hwcfg*\n\
+X11/xdm/pixmaps\ndhclient.script\n\
+rc2.d/*\nrc5.d/*"
+D_BINDMPTS="tmp root home"
+D_DIRINBINDMNT="/var/run /var/log /var/tmp /var/lib/gdm"
+D_RODIRSINRW="/etc/X11/xkb /var/lib/gconf /var/lib/dpkg /var/lib/aspell /var/lib/pango /var/lib/defoma"
+#D_RWDIRSINRO="/var/lib/gdm"
+D_DIRINDXS="/var/X11R6/compose-cache \
+/var/run/sysconfig/tmp /var/adm /var/lib/rpm /var/lib/nobody \
+/var/lib/pam_devperm /var/lib/bluetooth \
+/var/lib/texmf /var/lib/nfs/sm \
+/var/lib/misc /var/lib/acpi /var/spool/cron \
+/var/lock/subsys/sysconfig"
+D_INITDIR="/init.d"
+D_INITBOOTD="/rcS.d"
+D_RCDIRS="/rc0.d /rc1.d /rc2.d /rc3.d /rc4.d /rc5.d /rc6.d"
+D_INITDEFAULT="3"
+D_INITSCRIPTS="mountvirtfs keymap.sh procps.sh bootlogd hwclock.sh sudo"
+D_XF86CONFFILE="/etc/X11/xorg.conf"
+D_XFONTPATH="/usr/share/fonts/*"
+D_DEFAULTCOUNTRY="de"
+D_BOOTLOCAL=""
diff --git a/initramfs/distro-specs/ubuntu/functions-5.10 b/initramfs/distro-specs/ubuntu/functions-5.10
new file mode 100644
index 00000000..5b7c7335
--- /dev/null
+++ b/initramfs/distro-specs/ubuntu/functions-5.10
@@ -0,0 +1,97 @@
+# configuration script for Ubuntu V5.10 to configure OpenSLX linux diskless
+# clients (merged in stage2 with ubuntu/functions-default - and loaded within
+# initial ramfs - stage3) It may overwrite settings from the default config
+# file (/etc/functions)
+#
+# Dirk von Suchodoletz <dvs@OpenSLX.com>, 31-08-2006
+# Nico Dietrich
+# Felix Endres
+#
+# (c) 2006 - RZ Universitaet Freiburg
+# (c) 2006 - OpenSLX.ORG Project
+
+
+# syslog service
+config_syslog () {
+if [ "x$start_syslog" = "xyes" ] ; then
+ echo -e "# /etc/syslog.conf - file generated by $0" >/mnt/etc/syslogd.conf
+ echo "kern.warn;*.err;authpriv.none\t/dev/tty10\n\
+#kern.warn;*.err;authpriv.none\t|/dev/xconsole\n\
+#*.emerg\n\n*.=warn;*.=err\t\t\t-/var/log/warn\n\
+#*.crit\t\t\t\t/var/log/warn\n*.*;mail.none;news.none\t\t\
+#-/var/log/messages" >> /mnt/etc/syslogd.conf
+# test -n "$log_servers" && \
+# for logserver in $log_servers; do
+# echo -e "*.*;*.*;*.*;*kern.!*\t@$logserver" >>/mnt/etc/syslog.conf
+# done
+ rllinker "sysklogd" "02" "18"
+fi
+}
+
+# secure shell service
+config_sshd () {
+if [ "x$start_sshd" = "xyes" ] ; then
+ if [ -f /mnt/etc/init.d/ssh ] ; then
+ #testmkd /mnt/var/run/sshd
+ rllinker "ssh" "12" "10"
+ else
+ error "$df_errsshd" nonfatal
+ fi
+fi
+}
+
+# snmp agent for remote monitoring
+config_snmp () {
+if [ "x$start_snmp" = "xyes" ] ; then
+ if [ -f /mnt/etc/init.d/snmpd ] ; then
+ rllinker "snmpd" "24" "02"
+ testmkd /mnt/var/lib/net-snmp >/dev/null 2>&1
+ fi
+ # fixme!!
+ # write service monitor depending on services started
+fi
+}
+
+# consolefont
+consolefont () {
+echo -e "setfont ${CONSOLE_FONT} >${LOGFILE} 2>&1" \
+ >>/mnt/etc/${D_INITDIR}/boot.ld
+}
+# acpi and powersave
+config_acpi () {
+ rllinker "acpid" "02" "19"
+ rllinker "acpi-support" "20" "02"
+}
+
+# configure hal, dbus, resmgr and services like that
+# fixme: complete or remove (dummy function is present in /etc/functions)
+config_dreshal () {
+if [ "x$start_dreshal" = "xyes" ]; then
+ :
+fi
+}
+
+
+# fixme!! taken from SuSE10.0 untested here ...
+# prepare virtual machine environment (vmware, vmplayer)
+config_vmware () {
+rllinker "vmware-prep" "18" "02"
+rllinker "vmware" "20" "02"
+# during vmware sessions linux should not handle usb events/devices
+testmkd /mnt/var/X11R6/bin
+echo '#!/bin/sh'>> /mnt/etc/udev/rules.d/01-udev-vm.rules
+echo -e "# Script for blocking linux from handling usb \
+devices\n# during vmware sessions. If you like to remove certain modules \
+add them\n# to the list below - Dirk von Suchodoletz, <dvs@OpenSLX.com>\n\
+STATE=1\nps aux|grep -i vmware|grep -v \"grep\" &>/dev/null && { STATE=0; \
+/sbin/rmmod usb-storage &>/tmp/null; }\n\
+[ x\$ACTION = xremove ] && { [ \$STATE = 0 ] && /sbin/rmmod usb-storage \
+&>/dev/null; }\nexit \$STATE" > /mnt/var/X11R6/bin/vm-udev
+chmod u+x /mnt/var/X11R6/bin/vm-udev
+echo -e "# special entry to block linux from reacting to usb events during \
+running\n# vmware sessions, generated by $0 during initramfs\n# Dirk von \
+Suchodoletz, <dvs@OpenSLX.com>\nSUBSYSTEM==\"usb\", ACTION==\"add\", \
+PROGRAM=\"/var/X11R6/bin/vm-udev\", OPTIONS=\"ignore_device\"\n\
+SUBSYSTEM==\"usb\", ACTION==\"remove\", PROGRAM=\"/var/X11R6/bin/vm-udev\"" \
+ >> /mnt/etc/udev/rules.d/01-udev-vm.rules
+}
diff --git a/initramfs/distro-specs/ubuntu/functions-6.06 b/initramfs/distro-specs/ubuntu/functions-6.06
new file mode 100644
index 00000000..e439df4f
--- /dev/null
+++ b/initramfs/distro-specs/ubuntu/functions-6.06
@@ -0,0 +1,112 @@
+# configuration script for Ubuntu V6.06 to configure OpenSLX linux diskless
+# clients (merged in stage2 with ubuntu/functions-default - and loaded within
+# initial ramfs - stage3) It may overwrite settings from the default config
+# file (/etc/functions)
+#
+# Dirk von Suchodoletz <dirk@goe.net>, 31-08-2006
+# Nico Dietrich
+# Felix Endres, 29-08-2006
+#
+# (c) 2006 - RZ Universitaet Freiburg
+# (c) 2006 - OpenSLX.ORG Project
+
+# distro specific stuff to initialize
+preinit () {
+ echo "Creating dhcp user"
+ echo "dhcp:x:101:">>/etc/group
+ echo "dhcp:x:101:101::/nonexistent:/bin/false" >>/etc/passwd
+ # mount/unionfs can not handle the nfsro parameter in Ubuntu 6.06
+ NFSRO=""
+}
+
+# distro specific function called from servconfig script
+
+# udev/hotplug - auto device discovery service
+# fixme: why does nothing happens here!? If default should be used just
+# skip that function here!!
+# Result: 1 is bad, 0 is good
+udev_hotplug () {
+# local result=0
+# [ -d /etc/hotplug -a -d /etc/hotplug.d ] || error "$df_errhotpl" nonfatal
+# echo "Enabling hotplug/udev"
+# #udevstart && result=0
+# #udevtrigger && result=0
+# udevd --daemon || result=1
+# [ ! -e /sbin/udevsend ] && result=1
+# echo "/sbin/udevsend/" > /proc/sys/kernel/hotplug
+# mkdir -p /dev/.udev/db /dev/.udev/queue
+# trigger_device_events
+# return $result
+:
+}
+
+
+
+
+
+# x11 stuff
+descsession () {
+if [ "x$desktop_session" != "x" ] ; then
+ windowmanagers="$desktop_session"
+ # write script for desktop-session chooser
+ if [ "x$vmware" != "xno" ] ; then
+ debug=""
+ [ ${DEBUGLEVEL} -gt 0 ] && debug="--debug 1"
+ echo -e "#!/bin/sh\n#\n# file generated by\n#\t$0:\n#\t$date\n
+OSTYPE=\`echo \$0 | sed -e \"s,-, ,\" -e \"s,.*/,,\" | awk '{print \$1}'\`
+SPECTYPE=\`echo \$0 | sed -e \"s,-, ,\" -e \"s,.*/,,\" | awk '{print \$2}'\`\n
+OPTS=\"-o \$OSTYPE \${SPECTYPE:+\"-s \$SPECTYPE\"}\"\n
+xterm -bg black -fg white -geometry 170x30+0-0 +sb \
+-e \"runvmware \$OPTS $debug\"\n" > /mnt/var/X11R6/bin/desktop-session
+ chmod a+x /mnt/var/X11R6/bin/desktop-session
+ addpath="true";
+ fi
+else
+ windowmanagers="kde,gnome,icewm,failsafe"
+fi
+# check if /usr/X11R6/bin is writeable, else use /var/X11R6/bin
+if [ -w /mnt/usr/X11R6/bin/WM-Session ] ; then
+ sesspath="/usr/X11R6/bin"
+else
+ sesspath="/var/X11R6/bin"
+ addpath="true"
+fi
+
+# create links to desktop-session chooser
+# fixme: wmlist is SuSE stuff !?!?
+[ -f /mnt/usr/bin/X11/wmlist ] && wmlist=`cat /mnt/usr/bin/X11/wmlist`
+
+for i in `echo $windowmanagers|sed -e "s/,/ /g"` ; do
+ # beware!! quickhack for VMware sessions
+ strinstr "$i" "$wmlist" || \
+ test -x /mnt/usr/X11R6/bin/$i || \
+ echo -e "[Desktop Entry]\nX-SuSE-translate=true\nEncoding=UTF-8\n\
+Type=XSession\nExec=$i\nTryExec=$sesspath/$i\n\
+Name=$i\n" > /mnt/etc/X11/sessions/$i.desktop
+ # does not work correctly (add /var/X11R6/bin to path!!)
+ test -x /mnt/usr/X11R6/bin/$i || \
+ ln -fs /var/X11R6/bin/desktop-session /mnt/$sesspath/$i
+done
+
+# add special path /var/X11R6/bin to the PATH variable
+# fixme!! add path directly to /etc/profile!?
+#[ "x$addpath" != "x" ] && \
+# echo -e "# added path component by $0: $date\n\
+#PATH=\"\$PATH:/var/X11R6/bin\"" >>/mnt/etc/profile
+}
+
+# set up keytable (function run in hwautocfg)
+# fixme: is anything needed here - otherwise remove (and check that a
+# dummy function is present)
+keytable () {
+# fixme -- use keytable setup script here
+:
+}
+
+# consolefont and language
+consolefont () {
+[ "$LANG" == "de_DE@euro" ] && LANG=de_DE.UTF8
+sed -e "s,LANGUAGE=.*,LANGUAGE=${LANG},;s,LANG=.*,LANG=${LANG}," \
+ -i /mnt/etc/environment
+rllinker "console-screen.sh" "31" "03"
+}
diff --git a/initramfs/distro-specs/ubuntu/functions-default b/initramfs/distro-specs/ubuntu/functions-default
new file mode 100644
index 00000000..0310d1c7
--- /dev/null
+++ b/initramfs/distro-specs/ubuntu/functions-default
@@ -0,0 +1,443 @@
+# configuration script for general Ubuntu to configure OpenSLX linux
+# diskless clients (executed within initial ramdisk after genconfig)
+#
+# Dirk von Suchodoletz <dirk@goe.net>, 23-06-2006
+# Nico Dietrich
+# Felix Endres
+#
+# (c) 2006 - RZ Universitaet Freiburg
+# (c) 2006 - OpenSLX.ORG project
+
+# empty functions are defined at the beginning of /etc/functions
+
+# distro specific stuff to initialize
+preinit () {
+ echo "Creating dhcp user"
+ echo "dhcp:x:101:">>/etc/group
+ echo "dhcp:x:101:101::/nonexistent:/bin/false" >>/etc/passwd
+
+ # load unix module to provide sockets (is compiled into kernel on
+ # the live CDs!?)
+ modprobe ${MODPRV} unix || error "$df_errumod" nonfatal
+}
+
+
+#overwrite settings set by hwautocfg
+displayvars (){
+Files=' \t FontPath\t\t "/usr/share/X11/fonts/misc"\n
+\t FontPath\t\t "/usr/share/X11/fonts/100dpi/:unscaled"\n
+\t FontPath\t\t "/usr/share/X11/fonts/75dpi/:unscaled"\n
+\t FontPath\t\t "/usr/share/X11/fonts/Type1"\n
+\t FontPath\t\t "/usr/share/X11/fonts/100dpi"\n
+\t FontPath\t\t "/usr/share/X11/fonts/75dpi"\n
+'
+Module=' \t Load\t "i2c"\n
+\t Load\t "bitmap"\n
+\t Load\t "ddc"\n
+\t Load\t "dri"\n
+\t Load\t "extmod"\n
+\t Load\t "freetype"\n
+\t Load\t "glx"\n
+\t Load\t "int10"\n
+\t Load\t "type1"\n
+\t Load\t "vbe"\n'
+
+}
+# distro specific function called from servconfig script
+config_distro () {
+# add the halt link to the 0 and 6 runlevel directories
+ ln -sf ../init.d/halt /mnt/etc/rc0.d/S90halt
+ ln -sf ../init.d/reboot /mnt/etc/rc6.d/S90reboot
+
+ # set default runlevel
+ sed -e "s/.*initdefault/id:${D_INITDEFAULT}:initdefault/" -i /mnt/etc/inittab
+ # needed lateron (by hwsetup?)
+ /mnt/bin/mknod /dev/zero c 1 5
+ /mnt/bin/mknod /dev/mem c 1 1
+
+}
+
+# AUS SuSE-9.3
+# udev/hotplug - auto device discovery service
+# Result: 1 is bad, 0 is good
+udev_hotplug () {
+ local result=0
+ [ -d /etc/hotplug -a -d /etc/hotplug.d ] || error "$df_errhotpl" nonfatal
+ echo "Enabling hotplug/udev"
+ udevstart || result=1
+ udevd -d || result=1
+ return $result
+}
+
+# linking runlevel scripts
+rllinker () {
+local script="$1"
+local start="$2"
+local stop="$3"
+# empty runlevel links - decision on running certain services is
+# passed via configuration
+for i in rc2.d/K$stop$script rc3.d/K$stop$script \
+ rc2.d/S$start$script rc3.d/S$start$script ; do
+ if ! [ -f /mnt/etc/init.d/$script ]; then
+ echo "Target `pwd`../$script does not exist. Skipping links"
+ break
+ else
+ ln -sf ../init.d/$script /mnt/etc/$i
+ echo "Linked $script"
+ fi
+done
+}
+
+# group of functions for the normal runlevels - first parameter is start
+# second stop
+# function for ntp configuration
+config_ntp () {
+local start=07
+local stop=14
+if [ -f /mnt/etc/init.d/ntp ] ; then
+ echo -e "ntp:x:74:65534:NTP daemon:/var/lib/ntp:/bin/false" \
+ >>/mnt/etc/passwd
+ testmkd /mnt/var/lib/ntp/var/run/ntp &>/dev/null
+ if [ "x$start_ntp" = "xinitial" ] ; then
+ echo -e "# entry added by $0: $date" \
+ >>/mnt/etc/${D_INITDIR}/boot.ld
+ echo "ntpdate -s -b $ntp_servers >${LOGFILE} 2>&1 &" \
+ >>/mnt/etc/${D_INITDIR}/boot.ld
+ else
+ rllinker "ntp" "$start" "$stop"
+ fi
+fi
+}
+
+# function for atd
+config_atd () {
+if [ "x$start_atd" = "xyes" ]; then
+ # testmkd /mnt/var/spool/atjobs
+ # testmkd /mnt/var/spool/atspool
+ # chown 1:1 /mnt/var/spool/atjobs /mnt/var/spool/atspool
+ rllinker "atd" "14" "04"
+fi
+}
+
+# function for configuration of cron services
+config_cron () {
+if [ "x$start_cron" = "xyes" ] ; then
+ if [ -f /mnt/etc/init.d/cron ] ; then
+ rllinker "cron" "18" "02"
+ # fixme! check for proper permissions!
+ testmkd /mnt/var/spool/crontabs
+ echo -e "# /etc/crontab - file generated by $0:\n\
+#\t$date\nSHELL=/bin/sh\nPATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin\
+\nMAILTO=\n-*/15 * * * *\troot\ttest -x /usr/lib/cron/run-crons && \
+/usr/lib/cron/run-crons >/dev/null 2>&1\n" >/mnt/etc/crontab
+ else
+ error "$df_errcron" nonfatal
+ fi
+fi
+}
+
+# syslog service
+config_syslog () {
+if [ "x$start_syslog" = "xyes" ] ; then
+ testmkd /mnt/var/log/news
+ echo -e "# /etc/syslog.conf - file generated by $0" >/mnt/etc/syslogd.conf
+ echo "kern.warn;*.err;authpriv.none\t/dev/tty10\n\
+#kern.warn;*.err;authpriv.none\t|/dev/xconsole\n\
+#*.emerg\n\n*.=warn;*.=err\t\t\t-/var/log/warn\n\
+#*.crit\t\t\t\t/var/log/warn\n*.*;mail.none;news.none\t\t\
+#-/var/log/messages" >> /mnt/etc/syslogd.conf
+# test -n "$log_servers" && \
+# for logserver in $log_servers; do
+# echo -e "*.*;*.*;*.*;*kern.!*\t@$logserver" >>/mnt/etc/syslog.conf
+# done
+ rllinker "sysklogd" "02" "18"
+fi
+}
+
+# secure shell service
+config_sshd () {
+if [ "x$start_sshd" = "xyes" ] ; then
+ if [ -f /mnt/etc/init.d/ssh ] ; then
+ #testmkd /mnt/var/run/sshd
+ rllinker "ssh" "12" "10"
+ else
+ error "$df_errsshd" nonfatal
+ fi
+fi
+}
+
+# snmp agent for remote monitoring
+config_snmp () {
+if [ "x$start_snmp" = "xyes" ] ; then
+ if [ -f /mnt/etc/init.d/snmpd ] ; then
+ rllinker "snmpd" "24" "02"
+ testmkd /mnt/var/lib/net-snmp >/dev/null 2>&1
+ fi
+ # fixme!!
+ # write service monitor depending on services started
+ fi
+}
+
+# set up keytable (function run in hwautocfg)
+keytable () {
+# fixme -- use keytable setup script here
+:
+}
+
+# consolefont
+consolefont () {
+echo -e "setfont ${CONSOLE_FONT} >${LOGFILE} 2>&1" \
+ >>/mnt/etc/${D_INITDIR}/boot.ld
+}
+
+
+# acpi and powersave
+config_acpi () {
+ rllinker "acpid" "10" "19"
+ rllinker "acpi-support" "99" "02"
+
+ # nur hier weil udev_hotplug zu früh aufgerufen wird.
+ rllinker "udev" "11" "25"
+}
+
+# configure gdm as display manager
+config_gdm () {
+ln -sf ../${D_INITDIR}/gdm /mnt/etc/rc3.d/K20gdm
+if [ "x$start_xdmcp" = "xgdm" ]; then
+ echo /usr/sbin/gdm > /mnt/etc/X11/default-display-manager
+fi
+if [ "x$late_dm" = "xyes" ] ; then
+ ln -sf ../${D_INITDIR}/gdm /mnt/etc/rc3.d/S01gdm
+else
+ echo -e "\t/etc/${D_INITDIR}/gdm start >${LOGFILE} 2>&1\n\
+ \t( sleep 60; ln -sf /etc/${D_INITDIR}/gdm /etc/rc3.d/S01gdm \
+ >${LOGFILE} 2>&1) &\n" >>/mnt/etc/${D_INITDIR}/boot.ld
+fi
+# append gdm user
+echo "gdm:x:113:">>/etc/group
+echo "gdm:x:106:113:Gnome Display Manager" >> /etc/shadow
+
+# fixme: check if a gdm.conf was provided via ConfTGZ
+# [ -f /rootfs/etc/gdm/gdm.conf ??? ] || \
+echo -e "# /etc/gdm/gdm.conf - file generated by $0\n\
+
+[daemon]
+AutomaticLoginEnable=false
+AutomaticLogin=
+TimedLoginEnable=false
+TimedLogin=
+TimedLoginDelay=30
+Greeter=/usr/lib/gdm/gdmgreeter
+DefaultPath=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11:/usr/games
+RootPath=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11:/usr/games
+User=gdm
+Group=gdm
+LogDir=/var/log/gdm
+PidFile=/var/run/gdm.pid
+PostLoginScriptDir=/etc/gdm/PostLogin/
+PreSessionScriptDir=/etc/gdm/PreSession/
+PostSessionScriptDir=/etc/gdm/PostSession/
+DisplayInitDir=/etc/gdm/Init
+XKeepsCrashing=/etc/gdm/XKeepsCrashing
+RebootCommand=/sbin/shutdown -r now \"Rebooted from gdm menu.\"
+HaltCommand=/sbin/shutdown -h now \"Halted from gdm menu.\"
+SuspendCommand=/usr/sbin/pmi action sleep
+HibernateCommand=/usr/sbin/pmi action hibernate
+ServAuthDir=/var/lib/gdm
+BaseXsession=/etc/gdm/Xsession
+SessionDesktopDir=/etc/X11/sessions/:/etc/dm/Sessions/:/usr/share/gdm/BuiltInSessions/:/usr/share/xsessions/
+DefaultSession=default.desktop
+UserAuthDir=
+UserAuthFBDir=/tmp
+UserAuthFile=.Xauthority
+StandardXServer=/usr/X11R6/bin/X
+Xnest=/usr/X11R6/bin/Xnest -br -audit 0 -name Xnest
+FirstVT=7
+VTAllocation=true
+SoundProgram=/usr/lib/gdmplay
+[security]
+AllowRoot=false
+AllowRemoteRoot=false
+AllowRemoteAutoLogin=false
+RelaxPermissions=0
+CheckDirOwner=true
+DisallowTCP=true
+[xdmcp]
+Enable=false
+[gui]
+GtkTheme=Human
+AllowGtkThemeChange=true
+GtkThemesToAllow=Human,HighContrast,HighContrastInverse,LowContrast
+[greeter]
+ConfigAvailable=false
+Browser=true
+MinimalUID=1000
+Exclude=bin,daemon,adm,lp,sync,shutdown,halt,mail,news,uucp,operator,nobody,gdm,postgres,pvm,rpm
+IncludeAll=true
+LocaleFile=/etc/gdm/locale.conf
+SystemMenu=true
+SecureSystemMenu=false
+DefaultWelcome=true
+DefaultRemoteWelcome=true
+BackgroundColor=#523921
+UseCirclesInEntry=true
+GraphicalTheme=Human
+GraphicalThemeDir=/usr/share/gdm/themes/
+GraphicalThemeRand=false
+SoundOnLogin=true
+SoundOnLoginFile=/usr/share/sounds/question.wav
+[chooser]
+HostImageDir=/usr/share/hosts/
+Hosts=
+Broadcast=true
+Multicast=false
+[debug]
+Enable=false
+[servers]
+0=Standard
+[server-Standard]
+name=Standard server
+command=/usr/X11R6/bin/X -br -audit 0
+flexible=true
+[server-Terminal]
+name=Terminal server
+command=/usr/X11R6/bin/X -br -audit 0 -terminate
+flexible=false
+handled=false
+[server-Chooser]
+name=Chooser server
+command=/usr/X11R6/bin/X -br -audit 0
+flexible=false
+chooser=true
+
+[debug]
+Enable=$debug" >/mnt/etc/gdm/gdm.conf
+if [ "x$start_x" = "xindirect" ] ; then
+ # when X server consumes to much mem set X -terminate
+ echo -e "\n[servers]\n0=Terminal -audit 0 -indirect \
+$host_name\n\n\
+[server-Terminal]\nname=Terminal server\ncommand=/usr/X11R6/bin/X \
+-audit 0\n\
+flexible=true\nhandled=true\nchooser=true" >>/mnt/etc/gdm/gdm.conf
+else
+ echo -e "\n[servers]\n0=Standard\n\n\
+[server-Standard]\nname=Standard server\ncommand=/usr/X11R6/bin/X\n\
+flexible=true\nhandled=true" >>/mnt/etc/gdm/gdm.conf
+fi
+}
+
+# configure kdm as display manager
+config_kdm () {
+# fixme: check if a kdmrc was provided via ConfTGZ
+#[ -f /rootfs/etc/opt/???? kdmrc ] || \
+# echo " ..." > kdmrc
+#if [ "x$late_dm" = "xyes" ] ; then
+ rllinker "kdm" "25" "01"
+ if [ "x$start_xdmcp" = "xkdm" ]; then
+ echo /usr/bin/kdm > /mnt/etc/X11/default-display-manager
+ fi
+#else
+# ln -sf ../${D_INITDIR}/kdm /mnt/etc/rc3.d/K20kdm
+# echo -e "\t/etc/${D_INITDIR}/kdm start >${LOGFILE} 2>&1\n\
+# \t( sleep 120; ln -sf /etc/${D_INITDIR}/kdm /etc/rc3.d/S01kdm \
+# >${LOGFILE} 2>&1) &\n" >>/mnt/etc/${D_INITDIR}/boot.ld
+#fi
+}
+
+# configure hal, dbus, resmgr and services like that
+config_dreshal () {
+if [ "x$start_dreshal" = "xyes" ]; then
+ rllinker "dbus" "17" "20"
+fi
+}
+
+# initialize boot.ld - skript to be executed during early system startup
+# (before most of the normal boot init scripts)
+# this script should operate like a normal runlevel script (fixme!!)
+d_mkrlscript () {
+local switch="$1"
+local name="$2"
+local info="$3"
+case "$switch" in
+ init)
+ echo -e "#!/bin/sh\n# skeleton of /etc/${D_INITDIR}/$name written \
+from $0\n# after you applied changes to the creation scripts you have to \
+rerun\n# the mkdxsinitrd script to get them applied" \
+ >/mnt/etc/${D_INITDIR}/$name
+ echo -e "\n\ncase \"\$1\" in\n start)\techo -n \"$info\"" \
+ >>/mnt/etc/${D_INITDIR}/$name
+ chmod u+x /mnt/etc/${D_INITDIR}/$name
+ ;;
+ close)
+ echo -e "\t;;\n stop)\n\t;;\nesac\nexit 0" \
+ >>/mnt/etc/${D_INITDIR}/$name
+ ;;
+esac
+}
+
+# fixme!! taken from SuSE10.0 untested here ...
+# prepare virtual machine environment (vmware, vmplayer)
+config_vmware () {
+if [ -f /mnt/etc/init.d/vmware-prep ] ; then
+if [ -f /mnt/etc/init.d/vmware ] ; then
+rllinker "vmware-prep" "18" "02"
+rllinker "vmware" "20" "02"
+# during vmware sessions linux should not handle usb events/devices
+testmkd /mnt/var/X11R6/bin
+echo '#!/bin/sh'>> /mnt/etc/udev/rules.d/01-udev-vm.rules
+echo -e "# Script for blocking linux from handling usb \
+devices\n# during vmware sessions. If you like to remove certain modules \
+add them\n# to the list below - Dirk von Suchodoletz, <dirk@goe.net>\n\
+STATE=1\nps aux|grep -i vmware|grep -v \"grep\" &>/dev/null && { STATE=0; \
+/sbin/rmmod usb-storage &>/tmp/null; }\n\
+[ x$ACTION = xremove ] && { [ $STATE = 0 ] && /sbin/rmmod usb-storage \
+&>/dev/null; }\nexit \$STATE" > /mnt/var/X11R6/bin/vm-udev
+chmod u+x /mnt/var/X11R6/bin/vm-udev
+echo -e "# special entry to block linux from reacting to usb events during \
+running\n# vmware sessions, generated by $0 during initramfs\n# Dirk von \
+Suchodoletz, <dirk@goe.net>\nSUBSYSTEM==\"usb\", ACTION==\"add\", \
+PROGRAM=\"/var/X11R6/bin/vm-udev\", OPTIONS=\"ignore_device\"\n\
+SUBSYSTEM==\"usb\", ACTION==\"remove\", PROGRAM=\"/var/X11R6/bin/vm-udev\"" \
+ >> /mnt/etc/udev/rules.d/01-udev-vm.rules
+fi
+fi
+}
+
+# configure automounter
+config_automount () {
+if [ -f /mnt/etc/init.d/autofs ] ; then
+ testmkd /var/lock/subsys
+ echo -e "# /etc/auto.master - file generated by $0:\n\
+/misc\t/etc/auto.misc" >/mnt/etc/auto.master
+ echo -e "# /etc/auto.misc - file generated by $0:\n" \
+ > /mnt/etc/auto.misc
+ if [ -n "${automnt_src}" ] ; then
+ # local directory and home directory server from machine-setup
+ [ -z "${automnt_dir}" ] && automnt_dir="/home"
+ strinstr "/" "${automnt_dir}" && error "$df_erratpld" nonfatal
+ automnt_dir=${automnt_dir#/}
+ echo -e "/home\t/etc/auto.${automnt_dir}\n" >> /mnt/etc/auto.master
+ echo -e "# /etc/auto.${automnt_dir} created by $0:\n" \
+ > /mnt/etc/auto.${automnt_dir}
+ echo -e "*\t-rsize=32768,wsize=32768,tcp,rw\t${automnt_src}/&" \
+ >> /mnt/etc/auto.${automnt_dir}
+ fi
+ echo -e "# /etc/sysconfig/autofs - file modified by\n#\t$0:\n#" \
+ > /etc/autofs
+ sed -e "s,AUTOFS_OPTIONS.*,AUTOFS_OPTIONS=\"--timeout 3\"," \
+ /mnt/etc/${D_SYSCONFDIR}/autofs >> /etc/autofs
+ cp /etc/autofs /mnt/etc/${D_SYSCONFDIR}/autofs
+ config_portmap
+ rllinker "autofs" "18" "04"
+fi
+}
+
+# start portmapper (needed at least for nfs and nis services)
+config_portmap () {
+ rllinker "portmap" "02" "20"
+}
+
+# start NIS (fixmee - does the service is really named ypbind??)
+config_nis () {
+ rllinker "ypbind" "06" "16"
+}