summaryrefslogtreecommitdiffstats
path: root/initramfs/distro-specs/suse/functions-default
diff options
context:
space:
mode:
Diffstat (limited to 'initramfs/distro-specs/suse/functions-default')
-rw-r--r--initramfs/distro-specs/suse/functions-default608
1 files changed, 0 insertions, 608 deletions
diff --git a/initramfs/distro-specs/suse/functions-default b/initramfs/distro-specs/suse/functions-default
deleted file mode 100644
index 14bb5ff0..00000000
--- a/initramfs/distro-specs/suse/functions-default
+++ /dev/null
@@ -1,608 +0,0 @@
-# Copyright (c) 2003..2006 - RZ Uni Freiburg
-# Copyright (c) 2006..2010 - OpenSLX GmbH
-#
-# This program/file is free software distributed under the GPL version 2.
-# See http://openslx.org/COPYING
-#
-# If you have any feedback please consult http://openslx.org/feedback and
-# send your feedback to feedback@openslx.org
-#
-# General information about OpenSLX can be found under http://openslx.org
-#
-# configuration script for general SuSE to configure linux stateless clients
-# (included by init, hwautocfg, servconfig within InitialRamFS after
-# inclusion of the main functions file). This file is the main base for the
-# several SuSE distro versions
-
-# settings of central variables (formerly done via config-*, these variables
-# are disputable ...)
-# 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_BINDMPTS="tmp root media home"
-D_DIRINBINDMNT="/var/run /var/log /var/tmp"
-D_RODIRSINRW="/etc/bootsplash /etc/gconf /etc/X11/xkb /var/adm /var/lib/texmf \
-/var/lib/rpm /var/cache/fontconfig"
-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/nfs/sm.bak /var/lib/misc \
-/var/lib/acpi /var/spool/cron /var/lock/subsys/sysconfig"
-
-# empty functions are defined at the beginning of /etc/functions
-
-# distro specific function called from servconfig script
-config_distro () {
-# clean the runlevel directories which will be populated by the stage3 setup
-for dir in rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d boot.d ; do
- rm -rf /mnt/etc/init.d/${dir}/*
-done
-
-# link the additional key setup (notbook special keys)
-grep -q -E "otebook" /etc/hwinfo.bios && \
- [ -e /mnt/etc/init.d/hotkey-setup ] && rllinker "hotkey-setup" 25 25
-# no need to run start scripts in parallel
-# enable magic sysrequest for the clients
-sed -e "1i# /etc/sysconfig/sysctl - modified by $0 version $version" \
- -e "s,ENABLE_SYSRQ=.*,ENABLE_SYSRQ=\"yes\"," \
- -i /mnt/etc/sysconfig/sysctl
-# add slx specific path /var/opt/openslx/bin ...
-echo -e "# stuff generated by $0 (out of InitRamFS written $date)\n\
-PATH=\"\$PATH:/var/opt/openslx/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 "SLX VERSION = $SLXVERSION\nINITRAMFS GENERATION DATE = $date" \
- >>/mnt/etc/SuSE-release
-
-# remove annoying udev rule set for changing eth interface and rtc symlink
-rm /mnt/etc/udev/rules.d/*persistent-net.rules \
- /mnt/etc/udev/rules.d/*net_persistent_names.rules >/dev/null 2>&1
-sed '/SYMLINK+="rtc"/d' -i \
- /mnt/etc/udev/rules.d/50-udev-default.rules >/dev/null 2>&1
-
-# create a stateless specific halt script
-echo -e '#!/bin/sh\n# script generated in InitRamFS (SLX stage3)
-. /etc/rc.status\n
-trap "echo" SIGINT SIGSEGV SIGQUIT SIGTERM\nset +e\n\n
-case "$0" in\n\t*halt)
-\t message="The system will be halted immediately."
-\t command="halt -p"\n\t ;;\n\t*reboot)\n
-\t message="Please stand by while rebooting the system..."
-\t command="reboot"\n\t ;;\nesac\n
-rc_reset\ntest -e /etc/init.d/halt.local && {
-\techo Running /etc/init.d/halt.local\n\t/bin/sh /etc/init.d/halt.local
-\trc_status -v1 -r\n}
-echo $message\nexec $command -d -f' >/mnt/etc/init.d/halt
-# add the halt link to the 0 and 6 runlevel directories
-ln -sf ../halt /mnt/etc/init.d/rc0.d/S20halt
-ln -sf ../halt /mnt/etc/init.d/rc6.d/S20reboot
-
-echo "LOGFILE=${LOGFILE}" >/mnt/etc/sysconfig/logfile
-# fixme: rather ugly to write that boot script this way
-echo '
-#!/bin/sh
-# SuSE specific initial boot file modified for the use with OpenSLX clients
-#
-###########################################################################
-
-# 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
-
-###########################################################################
-#
-# 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=""
-
-# 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 -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
-
-# 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' >/mnt/etc/init.d/boot
-## end of initial stage4 boot script
-
-# enable execution of all important start scripts
-# running stuff in parallel seems to be rather useless and generates some
-# difficult to solve problems. If you want to try nevertheless enable the
-# following line and disable the latter one (switching off that feature)
-sed -e "s,RUN_PARALLEL=.*,RUN_PARALLEL=\"no\"," \
- -i /mnt/etc/sysconfig/boot
-# if YaST2 should be runnable (without much effect anyway) on the client
-testmkd /mnt/var/log/YaST2
-# for screen sessions
-testmkd /mnt/var/run/uscreens 4777
-# set special SuSE HOSTNAME file
-echo "$host_name" > /mnt/etc/HOSTNAME
-# produce proper output formatting (of "done", "failed", ...)
-sed -e '/^test $LINES/ {
-i\
-# Script modified here by \$0 during stage3 bootup\
-LINECOL=$(stty size); LINES=${LINECOL% *}; COLUMNS=${LINECOL#* }
-}' -e "/^if test -z \"\$LINES/,/fi$/d" -i /mnt/etc/rc.status
-# check for inittab file
-test -f /mnt/etc/inittab || error "$df_erritab"
-}
-
-# initial (boot time) runlevel scripts
-initial_boot () {
-local scripts=$*
-local count=10
-# boot.slx is a special runlevel script generated within initialramfs which
-# should be executed before the normal runlevel scripts. Proper shutdown is
-# not needed!?
-for i in boot.udev boot.proc boot.klog boot.loadmodules boot.slx boot.clock \
-boot.sysctl boot.ipconfig boot.swap $D_SPLASHY kbd; do
- count=$(($count + 1))
- [ $DEBUGLEVEL -ge 2 ] && echo "boot-runlevelscript $i"
- ln -sf /etc/init.d/$i /mnt/etc/init.d/boot.d/S${count}$i
-done
-}
-
-# linking runlevel scripts
-rllinker () {
-local script="$1"
-if [ $2 -lt 10 ] ; then
- local start="0$2"; else local start="$2"
-fi
-if [ $3 -lt 10 ] ; then
- local stop="0$3"; else local stop="$3"
-fi
-# 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/init.d/$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/init.d/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
- if [ "x$start_ntp" = "xyes" ] ; then
- rllinker "ntp" 7 14
- fi
-fi
-}
-# function for atd
-config_atd () {
-if [ "x$start_atd" = "xyes" ]; then
- rllinker "atd" 14 4
-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 2
- 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
-}
-# name service caching daemon (useful in most cases)
-config_nscd () {
- if [ -f /mnt/etc/init.d/nscd ] ; then
- rllinker "nscd" 20 5
- fi
-}
-# secure shell service
-config_sshd () {
-if [ "x$start_sshd" = "xyes" ] ; then
- if [ -f /mnt/etc/init.d/sshd ] ; then
- testmkd /mnt/var/run/sshd
- testmkd /mnt/var/lib/empty
- if ! strinfile "sshd:" /mnt/etc/passwd ; then
- echo -e "sshd:x:117:65534::/var/run/sshd:/usr/sbin/nologin" \
- >>/mnt/etc/passwd
- echo -e "sshd:!:13099:0:99999:7:::" >>/mnt/etc/shadow
- fi
- # set permissions with userid
- #d_mkrlscript entry boot.slx "chown sshd:nogroup /var/run/sshd \
- # /var/lib/empty 2>/dev/null"
- rllinker "sshd" 25 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 2
- testmkd /mnt/var/lib/net-snmp
- fi
- # fixme!!
- # write service monitor depending on services started
- fi
-}
-# configure print server (lpd or cups)
-config_printer () {
-if [ "x${start_printdaemon}" != "x" ] && \
- [ "x${start_printdaemon}" != "xno" ]; then
- case ${start_printdaemon} in
- yes|cups*|CUPS*)
- rllinker "cups" 25 1
- testmkd /mnt/var/spool/cups/tmp
- #chown -R lp:lp /var/spool/cups
- ;;
- lp*|LP*|PLP*)
- rllinker "lpd" 25 1
- testmkd /mnt/var/spool/lpd
- #chown -R lp:lp /var/spool/lpd
- ;;
- *)
- #logwrite "Do not know print-server $start_printdaemon; \
- #specify 'cups' or 'lpd'."
- ;;
- esac
-fi
-# configure cups printer client, avoid to overwrite admin provided printer
-# configuration file
-if [ "x$lpr_servers" != "x" ] && [ ! -e /rootfs/etc/cups/client.conf ] ; then
- echo -e "# /etc/cups/client.conf - file generated by\n#\t$0:\n\
-#\t$date\n#\nServerName\t$lpr_servers" >/mnt/etc/cups/client.conf
-fi
-}
-# configure bluetooth services
-config_bt () {
-if [ -e /mnt/etc/sysconfig/bluetooth ] ; then
- sed -e "1i# /etc/sysconfig/bluetooth - file modified by $0" \
- -e "s,START_SERVICES.*,START_SERVICES=\"yes\"," \
- -i /mnt/etc/sysconfig/bluetooth
-else
- : # no bluetooth components installed
-fi
-}
-# set up localization like keytable and consolefont
-dlocale () {
-d_mkrlscript entry boot.slx "# entries added by $0: $date"
-sed -e "s,KEYTABLE=.*,KEYTABLE=\"${KEYTABLE}\"," \
- -i /mnt/etc/sysconfig/keyboard
-d_mkrlscript entry boot.slx "#loadkeys ${KEYTABLE} >${LOGFILE} 2>&1"
-d_mkrlscript entry boot.slx "#setfont ${CONSOLE_FONT} >${LOGFILE} 2>&1"
-sed -e "s,RC_LANG=.*,RC_LANG=\"${LANG}\" # added in initrd," \
- -i /mnt/etc/sysconfig/language
-}
-# acpi and powersave daemons, required e.g. to shutdown the machine via
-# power button, no need for early start
-config_acpi () {
-rllinker acpid 22 12
-rllinker powersaved 23 11
-# dbus is required to run acpid and powersaved
-start_dreshal="yes"
-}
-# 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=0
-local stop=18
-if [ "x$start_dreshal" = "xyes" ]; then
- for dir in /var/run/resmgr/classes /var/lib/PolicyKit; do
- testmkd /mnt/$dir
- done
- if [ -f /mnt/etc/init.d/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
- # create directories and set permissions with user and group id
- testmkd /mnt/var/run/dbus messagebus:messagebus
- rllinker "dbus" $start $stop
- fi
- if [ -f /mnt/etc/init.d/consolekit ] ; then
- strinfile "polkituser:" /mnt/etc/passwd || \
- echo "polkituser:x:104:106:PolicyKit:/var/run/PolicyKit:/bin/false" \
- >> /mnt/etc/passwd
- start=$(($start + 1))
- stop=$(($stop - 1))
- rllinker "consolekit" $start $stop
- echo -n > /mnt/var/lib/misc/PolicyKit.reload
- chmod a+x /mnt/var/lib/misc/PolicyKit.reload
- fi
- if [ -f /mnt/etc/init.d/resmgr ] ; then
- start=$(($start + 1))
- stop=$(($stop - 1))
- rllinker "resmgr" $start $stop
- fi
- if [ -f /mnt/etc/init.d/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
- echo -n "" > /mnt/var/lib/PolicyKit.reload
- # create directories and set permissions with user and group id
- testmkd /mnt/var/run/hal haldaemon:haldaemon
- testmkd /mnt/var/cache/hald haldaemon:haldaemon
- start=$(($start + 1))
- stop=$(($stop - 1))
- rllinker "haldaemon" $start $stop
- fi
-fi
-}
-# configure automounter (fixme: to be moved into plugin)
-config_automount () {
-if [ -e /mnt/etc/sysconfig/autofs ] ; then
- testmkd /mnt/var/lock/subsys
- sed -e "1i# /etc/sysconfig/autofs - file modified by\n#\t$0:\n#" \
- -e "s,AUTOFS_OPTIONS.*,AUTOFS_OPTIONS=\"--timeout 3\"," \
- -i /mnt/etc/sysconfig/autofs
- rllinker "autofs" 18 4
- # might be needed for autofs via NFS (start specific nfs related services)
- # echo 'NFS_START_SERVICES="no"' >>/mnt/etc/sysconfig/nfs
-else
- error "$df_erramt" nonfatal
-fi
-}
-# start name service caching daemon
-config_nscd () {
-if [ -e /mnt/etc/init.d/nscd ] ; then
- testmkd /mnt/var/run/nscd
- rllinker "nscd" 16 16
-else
- error "$df_errnsc" nonfatal
-fi
-}
-# start portmapper (needed at least for nfs and nis services)
-config_portmap () {
- rllinker "portmap" 2 20
-}
-# start NIS (mostly deprecated)
-config_nis () {
-if [ -f /mnt/etc/init.d/ypbind ] ; then
- rllinker "ypbind" 6 16
- config_portmap
- testmkd /mnt/var/yp/nicknames
-else
- error "$df_erryp" 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/init.d/${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/sysconfig/logfile\nrc_reset\ncase \
-\"\$1\" in\n start)\n\techo -n \"$info\"" >>/mnt/etc/init.d/${name}
- chmod u+x /mnt/etc/init.d/${name}
- ;;
- entry)
- echo -e "\t${info}" >>/mnt/etc/init.d/${name}
- ;;
- close)
- echo -e "\trc_status -v\n\t;;\n stop)\n\t;;\nesac\nrc_exit" \
- >>/mnt/etc/init.d/${name}
- ;;
-esac
-}
-
-