diff options
Diffstat (limited to 'initrd/distro-specs/debian')
| -rw-r--r-- | initrd/distro-specs/debian/config-3.1 | 4 | ||||
| -rw-r--r-- | initrd/distro-specs/debian/config-default | 50 | ||||
| -rwxr-xr-x | initrd/distro-specs/debian/files-3.1/etc/init.d/boot | 286 | ||||
| -rwxr-xr-x | initrd/distro-specs/debian/files-3.1/etc/init.d/halt | 90 | ||||
| -rw-r--r-- | initrd/distro-specs/debian/functions-3.1 | 268 | ||||
| -rw-r--r-- | initrd/distro-specs/debian/functions-default | 270 |
6 files changed, 327 insertions, 641 deletions
diff --git a/initrd/distro-specs/debian/config-3.1 b/initrd/distro-specs/debian/config-3.1 index 6492ed1c..f6172d6f 100644 --- a/initrd/distro-specs/debian/config-3.1 +++ b/initrd/distro-specs/debian/config-3.1 @@ -1,6 +1,6 @@ # Description: distro specific settings for Debian/Sarge # -# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 01-05-2006 +# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 23-06-2006 # Felix Endres # # Copyright: (c) 2003, 2006 - RZ Universitaet Freiburg @@ -15,7 +15,6 @@ # 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, ... @@ -39,7 +38,6 @@ D_DIRINDXS="/var/X11R6/compose-cache \ /var/lib/texmf /var/lib/nfs/sm \ /var/lib/misc /var/lib/acpi /var/spool/cron \ /var/lock/subsys/sysconfig" -D_BINDMNT="# " D_INITDIR="/init.d" D_INITBOOTD="/rcS.d" D_RCDIRS="/rc0.d /rc1.d /rc2.d /rc3.d /rc4.d /rc5.d /rc6.d" diff --git a/initrd/distro-specs/debian/config-default b/initrd/distro-specs/debian/config-default new file mode 100644 index 00000000..55be830a --- /dev/null +++ b/initrd/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" +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/initrd/distro-specs/debian/files-3.1/etc/init.d/boot b/initrd/distro-specs/debian/files-3.1/etc/init.d/boot deleted file mode 100755 index f975046f..00000000 --- a/initrd/distro-specs/debian/files-3.1/etc/init.d/boot +++ /dev/null @@ -1,286 +0,0 @@ -#!/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-01-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 -n -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/initrd/distro-specs/debian/files-3.1/etc/init.d/halt b/initrd/distro-specs/debian/files-3.1/etc/init.d/halt deleted file mode 100755 index 65e5b0ad..00000000 --- a/initrd/distro-specs/debian/files-3.1/etc/init.d/halt +++ /dev/null @@ -1,90 +0,0 @@ -#! /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/initrd/distro-specs/debian/functions-3.1 b/initrd/distro-specs/debian/functions-3.1 index 878df587..3b884631 100644 --- a/initrd/distro-specs/debian/functions-3.1 +++ b/initrd/distro-specs/debian/functions-3.1 @@ -1,268 +1,12 @@ -# Description: configuration script for Debian 3.1 to configure -# linux diskless clients (executed within initial -# ramdisk after genconfig) +# 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>, 18-05-2006 +# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 23-06-2006 # Felix Endres, 30-04-2006 # # Copyright: (c) 2006 - RZ Universitaet Freiburg # -# Version: 0.2.1d +# Version: 0.3.0a -# 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 -} +# nothing changed yet from default diff --git a/initrd/distro-specs/debian/functions-default b/initrd/distro-specs/debian/functions-default new file mode 100644 index 00000000..6c21c049 --- /dev/null +++ b/initrd/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 +} |
