diff options
Diffstat (limited to 'initramfs/distro-specs/suse')
-rw-r--r-- | initramfs/distro-specs/suse/config-10.0 | 9 | ||||
-rw-r--r-- | initramfs/distro-specs/suse/config-10.1 | 28 | ||||
-rw-r--r-- | initramfs/distro-specs/suse/config-9.3 | 30 | ||||
-rw-r--r-- | initramfs/distro-specs/suse/config-default | 53 | ||||
-rwxr-xr-x | initramfs/distro-specs/suse/files-default/etc/init.d/boot | 286 | ||||
-rwxr-xr-x | initramfs/distro-specs/suse/files-default/etc/init.d/halt | 90 | ||||
-rw-r--r-- | initramfs/distro-specs/suse/functions-10.0 | 58 | ||||
-rw-r--r-- | initramfs/distro-specs/suse/functions-10.1 | 120 | ||||
-rw-r--r-- | initramfs/distro-specs/suse/functions-9.3 | 74 | ||||
-rw-r--r-- | initramfs/distro-specs/suse/functions-default | 499 |
10 files changed, 1247 insertions, 0 deletions
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 +} |