summaryrefslogtreecommitdiffstats
path: root/initrd/distro-specs/suse/functions-default
diff options
context:
space:
mode:
Diffstat (limited to 'initrd/distro-specs/suse/functions-default')
-rw-r--r--initrd/distro-specs/suse/functions-default479
1 files changed, 479 insertions, 0 deletions
diff --git a/initrd/distro-specs/suse/functions-default b/initrd/distro-specs/suse/functions-default
new file mode 100644
index 00000000..958647d8
--- /dev/null
+++ b/initrd/distro-specs/suse/functions-default
@@ -0,0 +1,479 @@
+# 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>, 23-06-2006
+#
+# Copyright: (c) 2006 - RZ Universitaet Freiburg
+#
+# Version: 0.3.0a
+
+# 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.0a\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 is
+# started twice during bootup - quickhack ...
+#ln -sf /etc/${D_INITDIR}/xdm /mnt/etc/${D_INITDIR}/rc5.d/S01xdm
+ln -sf ../xdm /mnt/etc/${D_INITDIR}/rc5.d/K20xdm
+echo -e "\t/etc/${D_INITDIR}/xdm start >${LOGFILE} 2>&1\n\
+\t( sleep 120; ln -sf ../xdm /etc/${D_INITDIR}/rc5.d/S01xdm \
+>${LOGFILE} 2>&1) &\n" >>/mnt/etc/${D_INITDIR}/boot.ld
+}
+
+# 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
+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
+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
+}
+
+# configure kdm as display manager
+config_kdm () {
+config_dm_entry yes
+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\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
+}
+
+# consolefont and language
+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
+}