From 416ab8a37f1b07dc9f6c0fb3ff1a8ff2036510b5 Mon Sep 17 00:00:00 2001 From: Sebastian Schmelzer Date: Thu, 2 Sep 2010 17:50:49 +0200 Subject: change dir structure --- src/initramfs/distro-specs/debian/functions-4.0 | 14 + .../distro-specs/debian/functions-default | 209 +++++++ src/initramfs/distro-specs/scilin/functions-4.7 | 15 + src/initramfs/distro-specs/scilin/functions-5.3 | 42 ++ src/initramfs/distro-specs/scilin/functions-5.4 | 42 ++ src/initramfs/distro-specs/scilin/functions-5.5 | 42 ++ .../distro-specs/scilin/functions-default | 315 +++++++++++ src/initramfs/distro-specs/suse/functions-10.2 | 82 +++ src/initramfs/distro-specs/suse/functions-10.3 | 26 + src/initramfs/distro-specs/suse/functions-11.1 | 90 +++ src/initramfs/distro-specs/suse/functions-11.2 | 95 ++++ src/initramfs/distro-specs/suse/functions-11.3 | 97 ++++ src/initramfs/distro-specs/suse/functions-default | 608 +++++++++++++++++++++ src/initramfs/distro-specs/ubuntu/functions-10.04 | 16 + src/initramfs/distro-specs/ubuntu/functions-8.04 | 296 ++++++++++ src/initramfs/distro-specs/ubuntu/functions-8.10 | 296 ++++++++++ src/initramfs/distro-specs/ubuntu/functions-9.04 | 293 ++++++++++ src/initramfs/distro-specs/ubuntu/functions-9.10 | 16 + .../distro-specs/ubuntu/functions-default | 286 ++++++++++ 19 files changed, 2880 insertions(+) create mode 100644 src/initramfs/distro-specs/debian/functions-4.0 create mode 100644 src/initramfs/distro-specs/debian/functions-default create mode 100644 src/initramfs/distro-specs/scilin/functions-4.7 create mode 100644 src/initramfs/distro-specs/scilin/functions-5.3 create mode 100644 src/initramfs/distro-specs/scilin/functions-5.4 create mode 100644 src/initramfs/distro-specs/scilin/functions-5.5 create mode 100644 src/initramfs/distro-specs/scilin/functions-default create mode 100644 src/initramfs/distro-specs/suse/functions-10.2 create mode 100644 src/initramfs/distro-specs/suse/functions-10.3 create mode 100644 src/initramfs/distro-specs/suse/functions-11.1 create mode 100644 src/initramfs/distro-specs/suse/functions-11.2 create mode 100644 src/initramfs/distro-specs/suse/functions-11.3 create mode 100644 src/initramfs/distro-specs/suse/functions-default create mode 100644 src/initramfs/distro-specs/ubuntu/functions-10.04 create mode 100644 src/initramfs/distro-specs/ubuntu/functions-8.04 create mode 100644 src/initramfs/distro-specs/ubuntu/functions-8.10 create mode 100644 src/initramfs/distro-specs/ubuntu/functions-9.04 create mode 100644 src/initramfs/distro-specs/ubuntu/functions-9.10 create mode 100644 src/initramfs/distro-specs/ubuntu/functions-default (limited to 'src/initramfs/distro-specs') diff --git a/src/initramfs/distro-specs/debian/functions-4.0 b/src/initramfs/distro-specs/debian/functions-4.0 new file mode 100644 index 00000000..97be5342 --- /dev/null +++ b/src/initramfs/distro-specs/debian/functions-4.0 @@ -0,0 +1,14 @@ +# Copyright (c) 2007 - OpenSLX GmbH +# +# This program 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 at http://openslx.org +# +# Configuration script for Debian Edge (4.1) to setup linux stateless clients +# (executed within initial ramfs) + +# nothing changed yet from default diff --git a/src/initramfs/distro-specs/debian/functions-default b/src/initramfs/distro-specs/debian/functions-default new file mode 100644 index 00000000..15639a2d --- /dev/null +++ b/src/initramfs/distro-specs/debian/functions-default @@ -0,0 +1,209 @@ +# Copyright (c) 2003..2006 - RZ Uni Freiburg +# Copyright (c) 2007..2010 - OpenSLX GmbH +# +# This program 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 at http://openslx.org +# +# Configuration script for general Debian distributions to setup linux +# stateless clients (included within initial ramfs) + +# distro specific configuration variables used in the setup functions +# (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 home" +D_DIRINBINDMNT="/var/run /var/log /var/tmp /var/lib/gdm /etc/X11" +D_RODIRSINRW="etc/gconf etc/X11/xkb /var/lib/texmf /var/cache/fontconfig \ +/var/lib/dpkg" +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" + +# empty functions are defined at the beginning of /etc/functions + +# distro specific stuff to initialize +preinit () { +: +} + +# 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 rcS.d ; do + rm -rf /mnt/etc/${dir}/* + done + # 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 + + # remove annoying udev rule set for changing eth interface + # fixme: not that simple, see ticket 187 + #rm /mnt/etc/udev/rules.d/*persistent-net.rules >/dev/null 2>&1 + + # set default runlevel + sed -e "s/.*initdefault/id:3:initdefault/" -i /mnt/etc/inittab + + # create needed auxiliary directories in (/mnt)/var,/etc,... + testmkd /mnt/var/run/screens root:utmp 0755 + + # add the slx specific path (/var/opt/openslx/bin) to the PATH variable + echo -e "# stuff generated by $0 (out of InitRamFS written $date)\n\ +export PATH=\"\$PATH:/var/opt/openslx/bin\"" >>/mnt/etc/profile + + # check for inittab file + #test -f /mnt/etc/inittab || error "$df_erritab" +} + +# initial (boot time) runlevel scripts +initial_boot () { + 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 mountkernfs.sh mountvirtfs boot.slx udev procps.sh bootlogd \ + $D_SPLASHY keymap.sh hwclock.sh sudo dbus-1; do + count=$(($count + 1)) + [ $DEBUGLEVEL -ge 2 ] && echo "boot-runlevelscript $i" + ln -sf /etc/init.d/$i /mnt/etc/rcS.d/S${count}$i + done +} + +# 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 or enabled through plugins + 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 + 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\ +. /lib/lsb/init-functions\ncase \"\$1\" in\n start)\n\ +\tlog_begin_msg \"${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 "\tlog_end_msg \$?\n\t;;\n stop)\n\tlog_end_msg \$?\n\t;;\ + \nesac\nexit 0" >>/mnt/etc/init.d/${name} + ;; + esac +} + +# group of functions for the normal runlevels - first parameter is start +# second stop +# function for ntp configuration +config_ntp () { + if [ -f /mnt/etc/init.d/ntp -a "x$start_ntp" != "xno" ] ; 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 + rllinker "ntp" "07" "14" + fi +} + +# function for atd +config_atd () { + if [ "x$start_atd" = "xyes" ]; then + # fixme!! needed? Fix permissions + #testmkd /mnt/var/spool/cron/atjobs daemon:daemon + #testmkd /mnt/var/spool/cron/atspool daemon:daemon + 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 root:crontab + 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" != "xno" ] ; then + : # fixme: handled by plugin in the future! + fi +} + +# secure shell service +config_sshd () { + if [ "x$start_sshd" = "xyes" ] ; then + if [ -f /mnt/etc/init.d/ssh ] ; then + rllinker "ssh" "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 +} + +# localization like consolefont and language +dlocale () { + # console font setting program not available in Debian 4!? + d_mkrlscript entry boot.slx "#setfont ${CONSOLE_FONT} >${LOGFILE} 2>&1" + # 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 + sed -e "s,LANG=.*,LANG=\"${LANG}\," # set within initramfs," \ + -i /mnt/etc/default/locale +} + +# configure hal, dbus, resmgr and services like that +config_dreshal () { + if [ "x$start_dreshal" = "xyes" ]; then + : + fi +} + diff --git a/src/initramfs/distro-specs/scilin/functions-4.7 b/src/initramfs/distro-specs/scilin/functions-4.7 new file mode 100644 index 00000000..e3ffe443 --- /dev/null +++ b/src/initramfs/distro-specs/scilin/functions-4.7 @@ -0,0 +1,15 @@ +# Copyright (c) 2009 - RZ Uni Freiburg +# +# This program 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 at http://openslx.org +# +# Configuration script for Scientific Linux (4.7) to setup linux stateless +# clients (executed within initial ramfs) + +# nothing changed yet from default + diff --git a/src/initramfs/distro-specs/scilin/functions-5.3 b/src/initramfs/distro-specs/scilin/functions-5.3 new file mode 100644 index 00000000..1548ab9a --- /dev/null +++ b/src/initramfs/distro-specs/scilin/functions-5.3 @@ -0,0 +1,42 @@ +# Copyright (c) 2009 - RZ Uni Freiburg +# +# This program 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 at http://openslx.org +# +# Configuration script for Scientific Linux (5.1) to setup linux stateless +# clients (executed within initial ramfs) + +# initial (boot time) runlevel scripts +initial_boot () { +# delete all classical disk base rootfs stuff from rc.sysinit +sed -e "6i# Script modified by $0 during stage3 bootup." \ + -e "/relabel_se/,/^}/d" \ + -e "/# Start up swap/,/# Set up bin/d" \ + -e "/^remount_needed/,/^fi$/d" -e "/^# Clean out/,/in_sysinit/d" \ + -e "/# Mount all o/,/# Start the g/d" \ + -e "/# Boot time/,/# let's/d" -i /mnt/etc/rc.d/rc.sysinit +# delete all classical disk base rootfs stuff from halt +sed -e "7i# Modified by $0 during stage3 bootup." \ + -e "/# Save mixer/,/Saving random/d" -e "/quotaoff/,/^# Now halt/d" \ + -i /mnt/etc/init.d/halt +# boot.slx is a special runlevel script generated within initialramfs which +# should be executed before the normal runlevel scripts. +echo -e "# Run OpenSLX init runlevel script\n/etc/init.d/boot.slx" \ + >>/mnt/etc/rc.d/rc.sysinit +# switch off SElinux enforcing +sed -e "1i# Configuration modified by $0 during stage3 bootup." \ + -e "s/SELINUX=.*/SELINUX=permissive/" -i /mnt/etc/selinux/config +# switch off display manager start via inittab +sed -e "s/x:5:re.*/# line deleted in stage3, re-enable via desktop plugin/" \ + -i /mnt/etc/inittab +# link halt and reboot scripts +ln -s ../init.d/killall /mnt/etc/rc.d/rc0.d/S00killall +ln -s ../init.d/halt /mnt/etc/rc.d/rc0.d/S01halt +ln -s ../init.d/killall /mnt/etc/rc.d/rc6.d/S00killall +ln -s ../init.d/halt /mnt/etc/rc.d/rc6.d/S01reboot +} diff --git a/src/initramfs/distro-specs/scilin/functions-5.4 b/src/initramfs/distro-specs/scilin/functions-5.4 new file mode 100644 index 00000000..1548ab9a --- /dev/null +++ b/src/initramfs/distro-specs/scilin/functions-5.4 @@ -0,0 +1,42 @@ +# Copyright (c) 2009 - RZ Uni Freiburg +# +# This program 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 at http://openslx.org +# +# Configuration script for Scientific Linux (5.1) to setup linux stateless +# clients (executed within initial ramfs) + +# initial (boot time) runlevel scripts +initial_boot () { +# delete all classical disk base rootfs stuff from rc.sysinit +sed -e "6i# Script modified by $0 during stage3 bootup." \ + -e "/relabel_se/,/^}/d" \ + -e "/# Start up swap/,/# Set up bin/d" \ + -e "/^remount_needed/,/^fi$/d" -e "/^# Clean out/,/in_sysinit/d" \ + -e "/# Mount all o/,/# Start the g/d" \ + -e "/# Boot time/,/# let's/d" -i /mnt/etc/rc.d/rc.sysinit +# delete all classical disk base rootfs stuff from halt +sed -e "7i# Modified by $0 during stage3 bootup." \ + -e "/# Save mixer/,/Saving random/d" -e "/quotaoff/,/^# Now halt/d" \ + -i /mnt/etc/init.d/halt +# boot.slx is a special runlevel script generated within initialramfs which +# should be executed before the normal runlevel scripts. +echo -e "# Run OpenSLX init runlevel script\n/etc/init.d/boot.slx" \ + >>/mnt/etc/rc.d/rc.sysinit +# switch off SElinux enforcing +sed -e "1i# Configuration modified by $0 during stage3 bootup." \ + -e "s/SELINUX=.*/SELINUX=permissive/" -i /mnt/etc/selinux/config +# switch off display manager start via inittab +sed -e "s/x:5:re.*/# line deleted in stage3, re-enable via desktop plugin/" \ + -i /mnt/etc/inittab +# link halt and reboot scripts +ln -s ../init.d/killall /mnt/etc/rc.d/rc0.d/S00killall +ln -s ../init.d/halt /mnt/etc/rc.d/rc0.d/S01halt +ln -s ../init.d/killall /mnt/etc/rc.d/rc6.d/S00killall +ln -s ../init.d/halt /mnt/etc/rc.d/rc6.d/S01reboot +} diff --git a/src/initramfs/distro-specs/scilin/functions-5.5 b/src/initramfs/distro-specs/scilin/functions-5.5 new file mode 100644 index 00000000..1548ab9a --- /dev/null +++ b/src/initramfs/distro-specs/scilin/functions-5.5 @@ -0,0 +1,42 @@ +# Copyright (c) 2009 - RZ Uni Freiburg +# +# This program 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 at http://openslx.org +# +# Configuration script for Scientific Linux (5.1) to setup linux stateless +# clients (executed within initial ramfs) + +# initial (boot time) runlevel scripts +initial_boot () { +# delete all classical disk base rootfs stuff from rc.sysinit +sed -e "6i# Script modified by $0 during stage3 bootup." \ + -e "/relabel_se/,/^}/d" \ + -e "/# Start up swap/,/# Set up bin/d" \ + -e "/^remount_needed/,/^fi$/d" -e "/^# Clean out/,/in_sysinit/d" \ + -e "/# Mount all o/,/# Start the g/d" \ + -e "/# Boot time/,/# let's/d" -i /mnt/etc/rc.d/rc.sysinit +# delete all classical disk base rootfs stuff from halt +sed -e "7i# Modified by $0 during stage3 bootup." \ + -e "/# Save mixer/,/Saving random/d" -e "/quotaoff/,/^# Now halt/d" \ + -i /mnt/etc/init.d/halt +# boot.slx is a special runlevel script generated within initialramfs which +# should be executed before the normal runlevel scripts. +echo -e "# Run OpenSLX init runlevel script\n/etc/init.d/boot.slx" \ + >>/mnt/etc/rc.d/rc.sysinit +# switch off SElinux enforcing +sed -e "1i# Configuration modified by $0 during stage3 bootup." \ + -e "s/SELINUX=.*/SELINUX=permissive/" -i /mnt/etc/selinux/config +# switch off display manager start via inittab +sed -e "s/x:5:re.*/# line deleted in stage3, re-enable via desktop plugin/" \ + -i /mnt/etc/inittab +# link halt and reboot scripts +ln -s ../init.d/killall /mnt/etc/rc.d/rc0.d/S00killall +ln -s ../init.d/halt /mnt/etc/rc.d/rc0.d/S01halt +ln -s ../init.d/killall /mnt/etc/rc.d/rc6.d/S00killall +ln -s ../init.d/halt /mnt/etc/rc.d/rc6.d/S01reboot +} diff --git a/src/initramfs/distro-specs/scilin/functions-default b/src/initramfs/distro-specs/scilin/functions-default new file mode 100644 index 00000000..f9bb0f0e --- /dev/null +++ b/src/initramfs/distro-specs/scilin/functions-default @@ -0,0 +1,315 @@ +# 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 Scientific Linux to configure linux +# stateless clients (included by init, hwautocfg, servconfig within Initial- +# RamFS after inclusion of the main functions file). This file is the main +# base for the several RedHat based Scientific Linux versions. + +# settings of central variables +# 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 /var/adm /var/lib/texmf /var/lib/rpm \ +/var/cache/fontconfig" +D_DIRINDXS="/var/lib/rpm /var/lib/nobody /var/lib/alternatives/ /var/db/nscd \ +/var/lib/bluetooth /var/lib/scrollkeeper /var/lib/nfs/sm /var/lib/nfs/sm.bak \ +/var/lib/misc /var/spool/cron" + +# 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 ; do + rm -rf /mnt/etc/${dir}/* + done + # set some system/environment information + echo -e "SLX VERSION = $SLXVERSION\nINITRAMFS GENERATION DATE = $date" \ + >>/mnt/etc/redhat-release + # simple bash configuration for root + echo -e "# Generated in OpenSLX stage3\n. /etc/bashrc" >/mnt/root/.profile + # enable sysrq + sed -e "1i# Configuration modified by $0 during stage3 bootup." \ + -e "s/kernel.sysrq =.*/kernel.sysrq = 1/" -i /mnt/etc/sysctl.conf + # set some networking stuff if needed + [ -e /mnt/etc/sysconfig/network ] && \ + sed -e "s/HOSTNAME=.*/HOSTNAME=$host_name/" \ + -e "s/GATEWAY=.*/GATEWAY=$gateway/" -i /mnt/etc/sysconfig/network + # check for inittab file + #test -f /mnt/etc/inittab || error "$df_erritab" +} + +# initial (boot time) runlevel scripts +initial_boot () { +# delete all classical disk base rootfs stuff from rc.sysinit +sed -e "6i# Script modified by $0 during stage3 bootup." \ + -e "/# Initialize ha/,/success/d" -e "/^ROOTFSTYPE/,/Remounting root/d" \ + -e "/# Check f/,/Mounting l/d" -e "/^# Configure mach/,/-f \/fastboot/d" \ + -e "s,/sbin/start_udev$,/etc/init.d/udevd," -i /mnt/etc/rc.d/rc.sysinit +# write a custom udev script (to be checked!!) +echo -e "#!/bin/sh\n# Simple udev starter script created as a replacement \ +during OpenSLX stage3\n# bootup." >/mnt/etc/init.d/udevd +echo -e ". /etc/init.d/functions\nSTRING=\$\"Starting udev: \" \ +\necho -n \"\$STRING \"\n/sbin/udevstart /dev/null 2>&1 \ +\n[ \$? -eq 0 ] && success \$\"\$STRING\" || failure \$\"\$STRING\" \ +\nexit 0" >>/mnt/etc/init.d/udevd +chmod u+x /mnt/etc/init.d/udevd +# delete all classical disk base rootfs stuff from halt +sed -e "7i# Modified by $0 during stage3 bootup." \ + -e "/# Save mixer/,/Saving random/d" -e "/quotaoff/,/^# Now halt/d" \ + -i /mnt/etc/init.d/halt +# boot.slx is a special runlevel script generated within initialramfs which +# should be executed before the normal runlevel scripts. +echo -e "# Run OpenSLX init runlevel script\n/etc/init.d/boot.slx" \ + >>/mnt/etc/rc.d/rc.sysinit +# switch off SElinux enforcing +sed -e "1i# Configuration modified by $0 during stage3 bootup." \ + -e "s/SELINUX=.*/SELINUX=permissive/" -i /mnt/etc/selinux/config +# link halt and reboot scripts +ln -s ../init.d/killall /mnt/etc/rc.d/rc0.d/S00killall +ln -s ../init.d/halt /mnt/etc/rc.d/rc0.d/S01halt +ln -s ../init.d/killall /mnt/etc/rc.d/rc6.d/S00killall +ln -s ../init.d/halt /mnt/etc/rc.d/rc6.d/S01reboot +} + +# 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 ../init.d/$script /mnt/etc/$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/ntpd ] ; then + if ! strinfile "ntp:" /mnt/etc/passwd ; then + echo -e "ntp:x:38:38:NTP daemon:/var/lib/ntp:/sbin/nologin" \ + >>/mnt/etc/passwd + echo -e "ntp:!:13099:0:99999:7:::" >>/mnt/etc/shadow + fi + testmkd /mnt/var/lib/ntp ntp:ntp + if [ "x$start_ntp" = "xyes" ] ; then + rllinker "ntpd" 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/anacron + echo -e "# /etc/crontab - file generated by $0:\n\ +" >/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 + testmkd /mnt/var/db/nscd + 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/empty/sshd/dev + if ! strinfile "sshd:" /mnt/etc/passwd ; then + echo -e "sshd:x:74:74::/var/empty/sshd:/sbin/nologin" \ + >>/mnt/etc/passwd + echo -e "sshd:!:13099:0:99999:7:::" >>/mnt/etc/shadow + fi + 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 root:sys + ;; + lp*|LP*|PLP*) + rllinker "lpd" 25 1 + testmkd /mnt/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,HID2HCI_ENABLE.*,HID2HCI_ENABLE=true," \ + -i /mnt/etc/sysconfig/bluetooth +else + : # no bluetooth components installed +fi +} +# set up localization like keytable and consolefont +dlocale () { +echo -e "\t# entries added by $0: $date" >> /mnt/etc/init.d/boot.slx +sed -e "s,KEYTABLE=.*,KEYTABLE=\"${KEYTABLE}\"," \ + -i /mnt/etc/sysconfig/keyboard +#echo -e "\tsetfont ${CONSOLE_FONT} >${LOGFILE} 2>&1\n" \ +# >>/mnt/etc/init.d/boot.slx +} +# acpi and powersave daemons, required e.g. to shutdown the machine via +# power button, no need for early start +config_acpi () { +rllinker acpid 01 22 +} +# 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=4 +local stop=18 +if [ "x$start_dreshal" = "xyes" ]; then + testmkd /mnt/var/run/dbus + if [ -f /mnt/etc/init.d/messagebus ] ; then + testmkd /mnt/var/lib/dbus + strinfile "dbus:" /mnt/etc/passwd || \ + echo "dbus:x:81:81:System Message Bus:/var/run/dbus:/sbin/nologin" \ + >> /mnt/etc/passwd + strinfile "dbus:" /mnt/etc/group || echo "dbus:!:81:" >> /mnt/etc/group + rllinker "messagebus" $start $stop + fi + if [ -f /mnt/etc/init.d/haldaemon ] ; then + testmkd /mnt/var/lib/hal + strinfile "haldaemon:" /mnt/etc/passwd || \ + echo "haldaemon:x:68:68:User for haldaemon:/var/run/hal:/sbin/nologin" \ + >> /mnt/etc/passwd + strinfile "haldaemon:" /mnt/etc/group || \ + echo "haldaemon:!:103:" >> /mnt/etc/group + 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,DAEMONOPTIONS.*,DAEMONOPTIONS=\"--timeout 3\"," \ + -i /mnt/etc/sysconfig/autofs + rllinker "autofs" 18 4 +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.d/init.d/functions\n#. /etc/sysconfig/logfile\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 "\t;;\n stop)\n\t;;\nesac" \ + >>/mnt/etc/init.d/${name} + ;; +esac +} + + diff --git a/src/initramfs/distro-specs/suse/functions-10.2 b/src/initramfs/distro-specs/suse/functions-10.2 new file mode 100644 index 00000000..39a9d31c --- /dev/null +++ b/src/initramfs/distro-specs/suse/functions-10.2 @@ -0,0 +1,82 @@ +# Copyright (c) 2003..2006 - RZ Uni Freiburg +# Copyright (c) 2006..2008 - 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 OpenSuSE 10.2 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_RODIRSINRW="/etc/opt/gnome/gconf /etc/X11/xkb /var/adm /var/lib/texmf \ +/var/lib/rpm /var/cache/fontconfig" + +# 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=5 +local stop=18 +if [ "x$start_dreshal" = "xyes" ]; then + for dir in /var/run/dbus /var/run/resmgr/classes /var/run/hal \ + /var/cache/hald /var/lib/PolicyKit /var/lib/misc ; 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 + # set permissions with userid + testmkd /mnt/var/run/dbus messagebus:messagebus + rllinker "dbus" $start $stop + 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 + # set permissions with userid + d_mkrlscript entry boot.slx "chown haldaemon:haldaemon /var/run/hal\ + /var/cache/hald 2>/dev/null" + start=$(($start + 1)) + stop=$(($stop - 1)) + rllinker "haldaemon" $start $stop + fi + if [ -f /mnt/etc/init.d/policykitd ] ; then + strinfile "polkituser:" /mnt/etc/passwd || \ + echo "polkituser:x:104:106:PolicyKit:/var/run/PolicyKit:/bin/false" \ + >> /mnt/etc/passwd + testmkd /mnt/var/run/polkit polkit:polkit + start=$(($start + 10)) + stop=$(($stop - 1)) + rllinker "policykitd" $start $stop + echo -n > /mnt/var/lib/misc/PolicyKit.reload + chmod a+x /mnt/var/lib/misc/PolicyKit.reload + fi +fi +} diff --git a/src/initramfs/distro-specs/suse/functions-10.3 b/src/initramfs/distro-specs/suse/functions-10.3 new file mode 100644 index 00000000..3f9516c3 --- /dev/null +++ b/src/initramfs/distro-specs/suse/functions-10.3 @@ -0,0 +1,26 @@ +# Copyright (c) 2003..2006 - RZ Uni Freiburg +# Copyright (c) 2006..2008 - 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 OpenSuSE 10.3 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 + +# no changes from functions-default by now diff --git a/src/initramfs/distro-specs/suse/functions-11.1 b/src/initramfs/distro-specs/suse/functions-11.1 new file mode 100644 index 00000000..d350fa9c --- /dev/null +++ b/src/initramfs/distro-specs/suse/functions-11.1 @@ -0,0 +1,90 @@ +# Copyright (c) 2003..2006 - RZ Uni Freiburg +# Copyright (c) 2006..2009 - 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 OpenSuSE 11.1 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 + +# start portmapper (needed at least for nfs and nis services) +config_portmap () { + # portmap is provided via rpcbind in suse 11.1 + testmkd /mnt/var/lib/rpcbind + rllinker "rpcbind" 4 5 +} +# 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 +# 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) +config_dreshal () { +local start=1 +local stop=10 +if [ "x$start_dreshal" = "xyes" ]; then + testmkd /mnt/var/lib/misc + testmkd /mnt/var/run/PolicyKit polkituser:polkituser + testmkd /mnt/var/lib/PolicyKit polkituser:polkituser + testmkd /mnt/var/run/dbus/at_console/pool + + sed -i /mnt/etc/PolicyKit/PolicyKit.conf \ + -e "s/\(<\/config>\)/ @@new@@\n\1/" \ + -e "s/@@new@@/\n@@return@@\n <\/match>/" \ + -e "s/@@action@@/org.freedesktop.hal.storage.mount-removable/" \ + -e "s/@@return@@/ /" + + if [ -f /mnt/etc/init.d/dbus ] ; then + strinfile "messagebus:" /mnt/etc/passwd || \ + echo "messagebus:x:102:103:User for D-BUS:/var/run/dbus:/bin/false" \ + >> /mnt/etc/passwd + strinfile "messagebus:" /mnt/etc/group || \ + echo "messagebus:!:103:" >> /mnt/etc/group + # create directories and set permissions with user and group id + testmkd /mnt/var/run/dbus messagebus:messagebus + testmkd /mnt/var/lib/dbus + + rm -rf /mnt/etc/dbus-1/system.d/*etwork*anager.conf \ + /mnt/etc/dbus-1/system.d/nm-* \ + /mnt/etc/dbus-1/event.d/*NetworkManager* + + rllinker "dbus" $start $stop + fi + if [ -f /mnt/etc/init.d/haldaemon ] ; then + strinfile "haldaemon:" /mnt/etc/passwd || \ + echo "haldaemon:x:106:107:User for haldaemon:/var/run/hal:/bin/false" \ + >> /mnt/etc/passwd + strinfile "haldaemon:" /mnt/etc/group || \ + echo "haldaemon:!:107:" >> /mnt/etc/group + echo -n "" > /mnt/var/lib/misc/PolicyKit.reload + chmod a+x /mnt/var/lib/misc/PolicyKit.reload + # create directories and set permissions with user and group id + for dir in /var/run/hald /var/run/hald/hald-local \ + /var/run/hald/hald-runner /var/cache/hald; do + testmkd /mnt/${dir} haldaemon:haldaemon + done + start=$(($start + 1)) + stop=$(($stop - 1)) + rllinker "haldaemon" $start $stop + fi +fi +} diff --git a/src/initramfs/distro-specs/suse/functions-11.2 b/src/initramfs/distro-specs/suse/functions-11.2 new file mode 100644 index 00000000..ae8008b9 --- /dev/null +++ b/src/initramfs/distro-specs/suse/functions-11.2 @@ -0,0 +1,95 @@ +# Copyright (c) 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 OpenSuSE 11.2 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 + +# start portmapper (needed at least for nfs and nis services) +config_portmap () { +# portmap is provided via rpcbind in suse 11.1,2 +testmkd /mnt/var/lib/rpcbind +rllinker "rpcbind" 4 5 +} +# 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 +# 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) +config_dreshal () { +local start=1 +local stop=10 +if [ "x$start_dreshal" = "xyes" ]; then + for dir in /var/lib/misc /var/run/ConsoleKit \ + "/var/run/PolicyKit polkituser:polkituser" \ + "/var/lib/PolicyKit polkituser:polkituser" \ + "/var/run/dbus/at_console/pool"; do + testmkd /mnt${dir} + done + # enable access to removable devices + sed -i /mnt/etc/PolicyKit/PolicyKit.conf \ + -e "s/\(<\/config>\)/ @@new@@\n\1/" \ + -e "s/@@new@@/\n@@return@@\n <\/match>/" \ + -e "s/@@action@@/org.freedesktop.hal.storage.mount-removable/" \ + -e "s/@@return@@/ /" + + if [ -f /mnt/etc/init.d/dbus ] ; then + strinfile "messagebus:" /mnt/etc/passwd || \ + echo "messagebus:x:102:103:User for D-BUS:/var/run/dbus:/bin/false" \ + >> /mnt/etc/passwd + strinfile "messagebus:" /mnt/etc/group || \ + echo "messagebus:!:103:" >> /mnt/etc/group + # create directories and set permissions with user and group id + testmkd /mnt/var/run/dbus messagebus:messagebus + testmkd /mnt/var/lib/dbus + # console-kit-daemon is often not started properly (why ever) + sed -i /mnt/etc/init.d/dbus \ + -e '/start_daemon -f $DBUS_D/a\ +\ \ \ \ \ \ \ \ start_daemon -f /usr/sbin/console-kit-daemon' + + rm -rf /mnt/etc/dbus-1/system.d/*etwork*anager.conf \ + /mnt/etc/dbus-1/system.d/nm-* \ + /mnt/etc/dbus-1/event.d/*NetworkManager* + + rllinker "dbus" $start $stop + fi + if [ -f /mnt/etc/init.d/haldaemon ] ; then + strinfile "haldaemon:" /mnt/etc/passwd || \ + echo "haldaemon:x:106:107:User for haldaemon:/var/run/hal:/bin/false" \ + >> /mnt/etc/passwd + strinfile "haldaemon:" /mnt/etc/group || \ + echo "haldaemon:!:107:" >> /mnt/etc/group + echo -n "" >/mnt/var/lib/misc/PolicyKit.reload + chmod a+x /mnt/var/lib/misc/PolicyKit.reload + # create directories and set permissions with user and group id + for dir in /var/run/hald /var/run/hald/hald-local \ + /var/run/hald/hald-runner /var/cache/hald; do + testmkd /mnt/${dir} haldaemon:haldaemon + done + start=$(($start + 1)) + stop=$(($stop - 1)) + rllinker "haldaemon" $start $stop + fi +fi +} diff --git a/src/initramfs/distro-specs/suse/functions-11.3 b/src/initramfs/distro-specs/suse/functions-11.3 new file mode 100644 index 00000000..4eac33a0 --- /dev/null +++ b/src/initramfs/distro-specs/suse/functions-11.3 @@ -0,0 +1,97 @@ +# Copyright (c) 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 OpenSuSE 11.2 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 +# +# TODO: id. copy of functions-11.2 to be adapted to 11.3 + +# start portmapper (needed at least for nfs and nis services) +config_portmap () { +# portmap is provided via rpcbind in suse 11.1,2,3 +testmkd /mnt/var/lib/rpcbind +rllinker "rpcbind" 4 5 +} +# 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 +# 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) +config_dreshal () { +local start=1 +local stop=10 +if [ "x$start_dreshal" = "xyes" ]; then + for dir in /var/lib/misc /var/run/ConsoleKit \ + "/var/run/PolicyKit polkituser:polkituser" \ + "/var/lib/PolicyKit polkituser:polkituser" \ + "/var/run/dbus/at_console/pool"; do + testmkd /mnt${dir} + done + # enable access to removable devices + sed -i /mnt/etc/PolicyKit/PolicyKit.conf \ + -e "s/\(<\/config>\)/ @@new@@\n\1/" \ + -e "s/@@new@@/\n@@return@@\n <\/match>/" \ + -e "s/@@action@@/org.freedesktop.hal.storage.mount-removable/" \ + -e "s/@@return@@/ /" + + if [ -f /mnt/etc/init.d/dbus ] ; then + strinfile "messagebus:" /mnt/etc/passwd || \ + echo "messagebus:x:102:103:User for D-BUS:/var/run/dbus:/bin/false" \ + >> /mnt/etc/passwd + strinfile "messagebus:" /mnt/etc/group || \ + echo "messagebus:!:103:" >> /mnt/etc/group + # create directories and set permissions with user and group id + testmkd /mnt/var/run/dbus messagebus:messagebus + testmkd /mnt/var/lib/dbus + # console-kit-daemon is often not started properly (why ever) + sed -i /mnt/etc/init.d/dbus \ + -e '/start_daemon -f $DBUS_D/a\ +\ \ \ \ \ \ \ \ start_daemon -f /usr/sbin/console-kit-daemon' + + rm -rf /mnt/etc/dbus-1/system.d/*etwork*anager.conf \ + /mnt/etc/dbus-1/system.d/nm-* \ + /mnt/etc/dbus-1/event.d/*NetworkManager* + + rllinker "dbus" $start $stop + fi + if [ -f /mnt/etc/init.d/haldaemon ] ; then + strinfile "haldaemon:" /mnt/etc/passwd || \ + echo "haldaemon:x:106:107:User for haldaemon:/var/run/hal:/bin/false" \ + >> /mnt/etc/passwd + strinfile "haldaemon:" /mnt/etc/group || \ + echo "haldaemon:!:107:" >> /mnt/etc/group + echo -n "" >/mnt/var/lib/misc/PolicyKit.reload + chmod a+x /mnt/var/lib/misc/PolicyKit.reload + # create directories and set permissions with user and group id + for dir in /var/run/hald /var/run/hald/hald-local \ + /var/run/hald/hald-runner /var/cache/hald; do + testmkd /mnt/${dir} haldaemon:haldaemon + done + start=$(($start + 1)) + stop=$(($stop - 1)) + rllinker "haldaemon" $start $stop + fi +fi +} diff --git a/src/initramfs/distro-specs/suse/functions-default b/src/initramfs/distro-specs/suse/functions-default new file mode 100644 index 00000000..14bb5ff0 --- /dev/null +++ b/src/initramfs/distro-specs/suse/functions-default @@ -0,0 +1,608 @@ +# 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 +} + + diff --git a/src/initramfs/distro-specs/ubuntu/functions-10.04 b/src/initramfs/distro-specs/ubuntu/functions-10.04 new file mode 100644 index 00000000..7f73c4ca --- /dev/null +++ b/src/initramfs/distro-specs/ubuntu/functions-10.04 @@ -0,0 +1,16 @@ +# Copyright (c) 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 Ubuntu 10.04 configure OpenSLX Linux stateless +# clients (merged in stage2 with ubuntu/functions-default - and loaded within +# initial ramfs - stage3) It may overwrite settings from the default config +# file (/etc/functions) + +# no changes from default (as this is default at the moment) diff --git a/src/initramfs/distro-specs/ubuntu/functions-8.04 b/src/initramfs/distro-specs/ubuntu/functions-8.04 new file mode 100644 index 00000000..3b93e86d --- /dev/null +++ b/src/initramfs/distro-specs/ubuntu/functions-8.04 @@ -0,0 +1,296 @@ +# 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 Ubuntu 8.04 configure OpenSLX linux stateless +# clients (merged in stage2 with ubuntu/functions-default - and loaded within +# initial ramfs - stage3) It may overwrite settings from the default config +# file (/etc/functions) + +# distro specific configuration variables used in the setup functions +# (formerly done via config-*, these variables are disputable ...) +# 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_ETCEXCL="etc/gconf/*\n*.old\n*-\netc/autoinstall\nlogrotate*\nbootloader\n\ +#*~\npptp.d\nisdn\nyouservers\nhardware/hwcfg*\n\ +#X11/xdm/pixmaps\ndhclient.script" +D_BINDMPTS="tmp root home media" +D_DIRINBINDMNT="/var/run /var/log /var/tmp /var/lib/gdm" +D_RODIRSINRW="/etc/X11/xkb /var/lib/gconf /var/lib/dpkg /var/lib/aspell \ +/var/lib/pango /var/lib/defoma /var/cache/fontconfig /var/lib/dkms" +#D_RWDIRSINRO="/var/lib/gdm" +D_DIRINDXS="/var/X11R6/compose-cache /var/run/sysconfig/tmp /var/adm \ +/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/lib/alsa \ +/var/lock/subsys/sysconfig" + +# empty functions are defined at the beginning of /etc/functions + +# distro specific stuff to initialize +preinit () { + # load unix module to provide sockets (is compiled into kernel on + # the live CDs!?) + modprobe ${MODPRV} unix 2>/dev/null || error "$df_errumod" nonfatal + modprobe ${MODPRV} vesafb 2>/dev/null || error "$df_errumod" nonfatal + modprobe ${MODPRV} fbcon 2>/dev/null || error "$df_errumod" nonfatal +} + +# 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 rcS.d ; do + rm -rf /mnt/etc/${dir}/* + done + # 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 + + # remove annoying udev rule set for changing eth interface + rm /mnt/etc/udev/rules.d/*persistent-net.rules >/dev/null 2>&1 + + # inittab is obsolete with the change to upstart in ubuntu 7.10, but to + # prevent missunderstandings with the blank inittab created by openslx init + # we'll write a comment.. + echo "# inittab is obsolete with the change to upstart from ubuntu 7.10" \ + > /mnt/etc/inittab + + # fix getty bug (console login on tty1 is started too early) + [ -f /mnt/etc/event.d/tty1 ] && \ + sed -i "s/start on runlevel 2/start on stopped rc2/" /mnt/etc/event.d/tty1 + + # for screen sessions + testmkd /mnt/var/run/screen root:utmp 0775 + + # no additional /dev/shm mount needed as it is always used + sed -e "/Mount a tmpfs on/,/domount tmpfs /d" \ + -i /mnt/etc/init.d/mountdevsubfs.sh + + # clean up the udev script as much is handled already in stage3 + sed -e "3i# Script modified during SLX stage3 bootup (config_distro)" \ + -e "/# This next bit can/a\ /sbin/udevadm trigger" \ + -e "/# We need the uevent/,/# It's all over/d" \ + -e "/# Log things that/,/kill \$UDEV/d" -i /mnt/etc/init.d/udev + + # clean the mountall.sh script as only swap activation needed + sed -e "3i# Script modified during SLX stage3 bootup (config_distro)" \ + -e "/pre_mountall/,/post_mountall/d" \ + -i /mnt/etc/init.d/mountall.sh + + # add the slx specific path (/var/opt/openslx/bin) to the PATH variable + echo -e "# stuff generated by $0 (out of InitRamFS written $date)\n\ +export PATH=\"\$PATH:/var/opt/openslx/bin\"" >>/mnt/etc/profile + + # check for inittab file (might fail for new style init -> upstart) + #test -f /mnt/etc/inittab || test -d /mnt/etc/event.d || \ + # error "$df_erritab" +} + +# initial (boot time) runlevel scripts +initial_boot () { +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 mountkernfs.sh mountall.sh mountdevsubfs.sh keyboard-setup procps \ +bootlogd hwclock.sh sudo console-setup udev boot.slx $D_SPLASHY; do + count=$(($count + 1)) + [ $DEBUGLEVEL -ge 2 ] && echo "boot-runlevelscript $i" + ln -sf /etc/init.d/$i /mnt/etc/rcS.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 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 + [ "$DEBUGLEVEL" == 5 ] && echo "Linked $script" + fi +done +} + +# group of functions for the normal runlevels - first parameter is start +# second stop + +# configure udev +config_udev () { + [ -c /dev/pktcdvd ] && { rm -rf /dev/pktcdvd; mkdir /dev/pktcdvd; } + if [ -f /mnt/etc/init.d/udev-finish ] ; then + rllinker "udev-finish" 24 2 + fi +} + +# function for ntp configuration +config_ntp () { +if [ -f /mnt/etc/init.d/ntp -a "x$start_ntp" != "xno" ] ; 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 + rllinker "ntp" 7 14 +fi +} +# function for atd +config_atd () { +if [ "x$start_atd" = "xyes" ]; then + # testmkd /mnt/var/spool/atjobs + # testmkd /mnt/var/spool/atspool + # chown 1:1 /mnt/var/spool/atjobs /mnt/var/spool/atspool + rllinker "atd" 14 4 +fi +} +# function for configuration of cron services (fixme: to be moved to a plugin?) +config_cron () { +if [ "x$start_cron" = "xyes" ] ; then + if [ -f /mnt/etc/init.d/cron ] ; then + rllinker "cron" 18 2 + # fixme! check for proper permissions! + testmkd /mnt/var/spool/crontabs + echo -e "# /etc/crontab - file generated by $0:\n\ +#\t$date\nSHELL=/bin/sh\nPATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin\ +\nMAILTO=\n-*/15 * * * *\troot\ttest -x /usr/lib/cron/run-crons && \ +/usr/lib/cron/run-crons >/dev/null 2>&1\n" >/mnt/etc/crontab + else + error "$df_errcron" nonfatal + fi +fi +} +# secure shell service +config_sshd () { +if [ "x$start_sshd" = "xyes" ] ; then + if [ -f /mnt/etc/init.d/ssh ] ; then + #testmkd /mnt/var/run/sshd + rllinker "ssh" 12 10 + else + error "$df_errsshd" nonfatal + fi +fi +} +# snmp agent for remote monitoring +config_snmp () { +if [ "x$start_snmp" = "xyes" ] ; then + if [ -f /mnt/etc/init.d/snmpd ] ; then + rllinker "snmpd" 24 2 + testmkd /mnt/var/lib/net-snmp + fi + # fixme!! + # write service monitor depending on services started + fi +} +# acpi and powersave +config_acpi () { + rllinker "acpid" 8 16 + #Commented out since battery checking is only useful for Notebooks + #rllinker "acpi-support" 99 2 +} +# configure hal, dbus, policykitd and services like that +config_dreshal () { +if [ "x$start_dreshal" = "xyes" ]; then + testmkd /mnt/var/lib/dbus + testmkd /mnt/var/lib/misc + testmkd /mnt/var/cache/hald + touch /mnt/var/lib/misc/PolicyKit.reload + chown root:polkituser /mnt/var/lib/misc/PolicyKit.reload + rm -rf /mnt/etc/dbus-1/system.d/*etwork*anager.conf \ + /mnt/etc/dbus-1/system.d/nm-* \ + /mnt/etc/dbus-1/event.d/*NetworkManager* + sed -i /mnt/etc/PolicyKit/PolicyKit.conf \ + -e "s/\(<\/config>\)/ @@new@@\n\1/" \ + -e "s/@@new@@/\n@@return@@\n <\/match>/" \ + -e "s/@@action@@/org.freedesktop.hal.storage.mount-removable/" \ + -e "s/@@return@@/ /" + sed -i /mnt/etc/dbus-1/system.d/hal.conf \ + -e "s/^\([^d]*\)deny\(.*Volume.*\)/\1allow\2/" + rllinker "dbus" 2 20 + rllinker "hal" 3 18 + if [ ! -e /mnt/etc/init.d/policykit ] ; then + testmkd /mnt/var/lib/PolicyKit root:polkituser 1770 + testmkd /mnt/var/lib/PolicyKit-public root:polkituser + else + rllinker "policykit" 18 10 + fi +fi +} + +# initialize boot.slx - skript to be executed during early system startup +# (before most of the normal boot init scripts) +# this script should operate like a normal runlevel script (fixme!!) +d_mkrlscript () { +local switch="$1" +local name="$2" +local info="$3" +case "$switch" in + init) + echo -e "#!/bin/sh\n# skeleton of /etc/init.d/$name written \ +from $0\n# after you applied changes to the creation scripts you have to \ +rerun\n# the mkdxsinitrd script to get them applied\n\n\ +. /lib/lsb/init-functions\n" >/mnt/etc/init.d/$name + echo -e "\n\ncase \"\$1\" in\n start)\n\tlog_begin_msg \"$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 "\tlog_end_msg 0\n\t;;\n stop)\n\t;;\nesac\nexit 0" \ + >>/mnt/etc/init.d/$name + ;; +esac +} +# configure automounter +config_automount () { +if [ -f /mnt/etc/init.d/autofs ] ; then + testmkd /mnt/var/lock/subsys + sed -e "1i# /etc/default/autofs - file modified by\n#\t$0:\n#" \ + -e "s,TIMEOUT.*,TIMEOUT=60," -i /mnt/etc/default/autofs + config_portmap + rllinker "autofs" 12 4 + rllinker "nfs-common" 11 5 +fi +} +# start portmapper (needed at least for nfsN and nis services) +config_portmap () { + rllinker "portmap" 2 20 +} +# start NIS (fixme - does the service is really named ypbind??) +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 +} +# name service caching daemon (useful in most cases) +config_nscd () { + if [ -f /mnt/etc/init.d/nscd ] ; then + testmkd /mnt/var/cache/nscd + rllinker "nscd" 20 5 + fi +} diff --git a/src/initramfs/distro-specs/ubuntu/functions-8.10 b/src/initramfs/distro-specs/ubuntu/functions-8.10 new file mode 100644 index 00000000..8a3469e7 --- /dev/null +++ b/src/initramfs/distro-specs/ubuntu/functions-8.10 @@ -0,0 +1,296 @@ +# 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 Ubuntu 8.10 configure OpenSLX Linux stateless +# clients (merged in stage2 with ubuntu/functions-default - and loaded within +# initial ramfs - stage3) It may overwrite settings from the default config +# file (/etc/functions) + +# distro specific configuration variables used in the setup functions +# (formerly done via config-*, these variables are disputable ...) +# 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_ETCEXCL="etc/gconf/*\n*.old\n*-\netc/autoinstall\nlogrotate*\nbootloader\n\ +#*~\npptp.d\nisdn\nyouservers\nhardware/hwcfg*\n\ +#X11/xdm/pixmaps\ndhclient.script" +D_BINDMPTS="tmp root home media" +D_DIRINBINDMNT="/var/run /var/log /var/tmp /var/lib/gdm" +D_RODIRSINRW="/etc/X11/xkb /var/lib/gconf /var/lib/dpkg /var/lib/aspell \ +/var/lib/pango /var/lib/defoma /var/cache/fontconfig /var/lib/dkms" +#D_RWDIRSINRO="/var/lib/gdm" +D_DIRINDXS="/var/X11R6/compose-cache /var/run/sysconfig/tmp /var/adm \ +/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/lib/alsa \ +/var/lock/subsys/sysconfig" + +# empty functions are defined at the beginning of /etc/functions + +# distro specific stuff to initialize +preinit () { + # load unix module to provide sockets (is compiled into kernel on + # the live CDs!?) + modprobe ${MODPRV} unix 2>/dev/null || error "$df_errumod" nonfatal + modprobe ${MODPRV} vesafb 2>/dev/null || error "$df_errumod" nonfatal + modprobe ${MODPRV} fbcon 2>/dev/null || error "$df_errumod" nonfatal +} + +# 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 rcS.d ; do + rm -rf /mnt/etc/${dir}/* + done + # 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 + + # remove annoying udev rule set for changing eth interface + rm /mnt/etc/udev/rules.d/*persistent-net.rules >/dev/null 2>&1 + + # inittab is obsolete with the change to upstart in ubuntu 7.10, but to + # prevent missunderstandings with the blank inittab created by openslx init + # we'll write a comment.. + echo "# inittab is obsolete with the change to upstart from ubuntu 7.10" \ + > /mnt/etc/inittab + + # fix getty bug (console login on tty1 is started too early) + [ -f /mnt/etc/event.d/tty1 ] && \ + sed -i "s/start on runlevel 2/start on stopped rc2/" /mnt/etc/event.d/tty1 + + # for screen sessions + testmkd /mnt/var/run/screen root:utmp 0775 + + # no additional /dev/shm mount needed as it is always used + sed -e "/Mount a tmpfs on/,/domount tmpfs /d" \ + -i /mnt/etc/init.d/mountdevsubfs.sh + + # clean up the udev script as much is handled already in stage3 + sed -e "3i# Script modified during SLX stage3 bootup (config_distro)" \ + -e "/# This next bit can/a\ /sbin/udevadm trigger" \ + -e "/# We need the uevent/,/# It's all over/d" \ + -e "/# Log things that/,/kill \$UDEV/d" -i /mnt/etc/init.d/udev + + # clean the mountall.sh script as only swap activation needed + sed -e "3i# Script modified during SLX stage3 bootup (config_distro)" \ + -e "/pre_mountall/,/post_mountall/d" \ + -i /mnt/etc/init.d/mountall.sh + + # add the slx specific path (/var/opt/openslx/bin) to the PATH variable + echo -e "# stuff generated by $0 (out of InitRamFS written $date)\n\ +export PATH=\"\$PATH:/var/opt/openslx/bin\"" >>/mnt/etc/profile + + # check for inittab file (might fail for new style init -> upstart) + #test -f /mnt/etc/inittab || test -d /mnt/etc/event.d || \ + # error "$df_erritab" +} + +# initial (boot time) runlevel scripts +initial_boot () { +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 mountkernfs.sh mountall.sh mountdevsubfs.sh keyboard-setup procps \ +bootlogd hwclock.sh sudo console-setup udev boot.slx $D_SPLASHY; do + count=$(($count + 1)) + [ $DEBUGLEVEL -ge 2 ] && echo "boot-runlevelscript $i" + ln -sf /etc/init.d/$i /mnt/etc/rcS.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 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 + [ "$DEBUGLEVEL" == 5 ] && echo "Linked $script" + fi +done +} + +# group of functions for the normal runlevels - first parameter is start +# second stop + +# configure udev +config_udev () { + [ -c /dev/pktcdvd ] && { rm -rf /dev/pktcdvd; mkdir /dev/pktcdvd; } + if [ -f /mnt/etc/init.d/udev-finish ] ; then + rllinker "udev-finish" 24 2 + fi +} + +# function for ntp configuration +config_ntp () { +if [ -f /mnt/etc/init.d/ntp -a "x$start_ntp" != "xno" ] ; 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 + rllinker "ntp" 7 14 +fi +} +# function for atd +config_atd () { +if [ "x$start_atd" = "xyes" ]; then + # testmkd /mnt/var/spool/atjobs + # testmkd /mnt/var/spool/atspool + # chown 1:1 /mnt/var/spool/atjobs /mnt/var/spool/atspool + rllinker "atd" 14 4 +fi +} +# function for configuration of cron services (fixme: to be moved to a plugin?) +config_cron () { +if [ "x$start_cron" = "xyes" ] ; then + if [ -f /mnt/etc/init.d/cron ] ; then + rllinker "cron" 18 2 + # fixme! check for proper permissions! + testmkd /mnt/var/spool/crontabs + echo -e "# /etc/crontab - file generated by $0:\n\ +#\t$date\nSHELL=/bin/sh\nPATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin\ +\nMAILTO=\n-*/15 * * * *\troot\ttest -x /usr/lib/cron/run-crons && \ +/usr/lib/cron/run-crons >/dev/null 2>&1\n" >/mnt/etc/crontab + else + error "$df_errcron" nonfatal + fi +fi +} +# secure shell service +config_sshd () { +if [ "x$start_sshd" = "xyes" ] ; then + if [ -f /mnt/etc/init.d/ssh ] ; then + #testmkd /mnt/var/run/sshd + rllinker "ssh" 12 10 + else + error "$df_errsshd" nonfatal + fi +fi +} +# snmp agent for remote monitoring +config_snmp () { +if [ "x$start_snmp" = "xyes" ] ; then + if [ -f /mnt/etc/init.d/snmpd ] ; then + rllinker "snmpd" 24 2 + testmkd /mnt/var/lib/net-snmp + fi + # fixme!! + # write service monitor depending on services started + fi +} +# acpi and powersave +config_acpi () { + rllinker "acpid" 8 16 + #Commented out since battery checking is only useful for Notebooks + #rllinker "acpi-support" 99 2 +} +# configure hal, dbus, policykitd and services like that +config_dreshal () { +if [ "x$start_dreshal" = "xyes" ]; then + testmkd /mnt/var/lib/dbus + testmkd /mnt/var/lib/misc + testmkd /mnt/var/cache/hald + touch /mnt/var/lib/misc/PolicyKit.reload + chown root:polkituser /mnt/var/lib/misc/PolicyKit.reload + rm -rf /mnt/etc/dbus-1/system.d/*etwork*anager.conf \ + /mnt/etc/dbus-1/system.d/nm-* \ + /mnt/etc/dbus-1/event.d/*NetworkManager* + sed -i /mnt/etc/PolicyKit/PolicyKit.conf \ + -e "s/\(<\/config>\)/ @@new@@\n\1/" \ + -e "s/@@new@@/\n@@return@@\n <\/match>/" \ + -e "s/@@action@@/org.freedesktop.hal.storage.mount-removable/" \ + -e "s/@@return@@/ /" + sed -i /mnt/etc/dbus-1/system.d/hal.conf \ + -e "s/^\([^d]*\)deny\(.*Volume.*\)/\1allow\2/" + rllinker "dbus" 2 20 + rllinker "hal" 3 18 + if [ ! -e /mnt/etc/init.d/policykit ] ; then + testmkd /mnt/var/lib/PolicyKit root:polkituser 1770 + testmkd /mnt/var/lib/PolicyKit-public root:polkituser + else + rllinker "policykit" 18 10 + fi +fi +} + +# initialize boot.slx - skript to be executed during early system startup +# (before most of the normal boot init scripts) +# this script should operate like a normal runlevel script (fixme!!) +d_mkrlscript () { +local switch="$1" +local name="$2" +local info="$3" +case "$switch" in + init) + echo -e "#!/bin/sh\n# skeleton of /etc/init.d/$name written \ +from $0\n# after you applied changes to the creation scripts you have to \ +rerun\n# the mkdxsinitrd script to get them applied\n\n\ +. /lib/lsb/init-functions\n" >/mnt/etc/init.d/$name + echo -e "\n\ncase \"\$1\" in\n start)\n\tlog_begin_msg \"$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 "\tlog_end_msg 0\n\t;;\n stop)\n\t;;\nesac\nexit 0" \ + >>/mnt/etc/init.d/$name + ;; +esac +} +# configure automounter +config_automount () { +if [ -f /mnt/etc/init.d/autofs ] ; then + testmkd /mnt/var/lock/subsys + sed -e "1i# /etc/default/autofs - file modified by\n#\t$0:\n#" \ + -e "s,TIMEOUT.*,TIMEOUT=60," -i /mnt/etc/default/autofs + config_portmap + rllinker "autofs" 12 4 + rllinker "nfs-common" 11 5 +fi +} +# start portmapper (needed at least for nfsN and nis services) +config_portmap () { + rllinker "portmap" 2 20 +} +# start NIS (fixme - does the service is really named ypbind??) +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 +} +# name service caching daemon (useful in most cases) +config_nscd () { + if [ -f /mnt/etc/init.d/nscd ] ; then + testmkd /mnt/var/cache/nscd + rllinker "nscd" 20 5 + fi +} diff --git a/src/initramfs/distro-specs/ubuntu/functions-9.04 b/src/initramfs/distro-specs/ubuntu/functions-9.04 new file mode 100644 index 00000000..09567aa5 --- /dev/null +++ b/src/initramfs/distro-specs/ubuntu/functions-9.04 @@ -0,0 +1,293 @@ +# 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 Ubuntu 9.04 configure OpenSLX linux stateless +# clients (merged in stage2 with ubuntu/functions-default - and loaded within +# initial ramfs - stage3) It may overwrite settings from the default config +# file (/etc/functions) + +# distro specific configuration variables used in the setup functions +# (formerly done via config-*, these variables are disputable ...) +# 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_ETCEXCL="etc/gconf/*\n*.old\n*-\netc/autoinstall\nlogrotate*\nbootloader\n\ +#*~\npptp.d\nisdn\nyouservers\nhardware/hwcfg*\n\ +#X11/xdm/pixmaps\ndhclient.script" +D_BINDMPTS="tmp root home media" +D_DIRINBINDMNT="/var/run /var/log /var/tmp /var/lib/gdm" +RODIRSINRW="/var/lib/gconf /var/lib/dpkg /var/lib/aspell /var/lib/mlocate \ +/var/lib/pango /var/lib/defoma /var/cache/fontconfig /var/lib/dkms" +#D_RWDIRSINRO="/var/lib/gdm" +D_DIRINDXS="/var/run/sysconfig/tmp /var/adm /var/lib/nobody /var/lib/pam \ +/var/lib/bluetooth /var/lib/texmf /var/lib/nfs/sm /var/lib/misc \ +/var/lib/acpi-support /var/spool/cron /var/lib/alsa /var/lock/subsys" + +# empty functions are defined at the beginning of /etc/functions + +# distro specific stuff to initialize +preinit () { + # load unix module to provide sockets (is compiled into kernel on + # the live CDs!?) + modprobe ${MODPRV} fbcon 2>/dev/null || error "$df_errumod" nonfatal +} + +# 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 rcS.d ; do + rm -rf /mnt/etc/${dir}/* + done + # 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 + + # remove annoying udev rule set for changing eth interface + rm /mnt/etc/udev/rules.d/*persistent-net.rules >/dev/null 2>&1 + + # inittab is obsolete with the change to upstart in ubuntu 7.10, but to + # prevent missunderstandings with the blank inittab created by openslx init + # we'll write a comment.. + echo "# inittab is obsolete with the change to upstart from ubuntu 7.10" \ + > /mnt/etc/inittab + + # fix getty bug (console login on tty1 is started too early) + [ -f /mnt/etc/event.d/tty1 ] && \ + sed -i "s/start on runlevel 2/start on stopped rc2/" /mnt/etc/event.d/tty1 + + # for screen sessions + testmkd /mnt/var/run/screen root:utmp 0775 + + # no additional /dev/shm mount needed as it is always used + sed -e "/Mount a tmpfs on/,/domount tmpfs /d" \ + -i /mnt/etc/init.d/mountdevsubfs.sh + + # clean up the udev script as much is handled already in stage3 + sed -e "3i# Script modified during SLX stage3 bootup (config_distro)" \ + -e "/# This next bit can/a\ /sbin/udevadm trigger" \ + -e "/# We need the uevent/,/# It's all over/d" \ + -e "/# Log things that/,/kill \$UDEV/d" -i /mnt/etc/init.d/udev + + # clean the mountall.sh script as only swap activation needed + sed -e "3i# Script modified during SLX stage3 bootup (config_distro)" \ + -e "/pre_mountall/,/post_mountall/d" \ + -i /mnt/etc/init.d/mountall.sh + + # add the slx specific path (/var/opt/openslx/bin) to the PATH variable + echo -e "# stuff generated by $0 (out of InitRamFS written $date)\n\ +export PATH=\"\$PATH:/var/opt/openslx/bin\"" >>/mnt/etc/profile + + # check for inittab file (might fail for new style init -> upstart) + #test -f /mnt/etc/inittab || test -d /mnt/etc/event.d || \ + # error "$df_erritab" +} + +# initial (boot time) runlevel scripts +initial_boot () { +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 mountkernfs.sh mountall.sh mountdevsubfs.sh keyboard-setup procps \ +bootlogd hwclock.sh sudo console-setup udev boot.slx $D_SPLASHY; do + count=$(($count + 1)) + [ $DEBUGLEVEL -ge 2 ] && echo "boot-runlevelscript $i" + ln -sf /etc/init.d/$i /mnt/etc/rcS.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 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 + [ "$DEBUGLEVEL" == 5 ] && echo "Linked $script" + fi +done +} + +# group of functions for the normal runlevels - first parameter is start +# second stop + +# configure udev +config_udev () { + [ -c /dev/pktcdvd ] && { rm -rf /dev/pktcdvd; mkdir /dev/pktcdvd; } + if [ -f /mnt/etc/init.d/udev-finish ] ; then + rllinker "udev-finish" 24 2 + fi +} + +# function for ntp configuration +config_ntp () { +if [ -f /mnt/etc/init.d/ntp -a "x$start_ntp" != "xno" ] ; 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 + rllinker "ntp" 7 14 +fi +} +# function for atd +config_atd () { +if [ "x$start_atd" = "xyes" ]; then + # testmkd /mnt/var/spool/atjobs + # testmkd /mnt/var/spool/atspool + # chown 1:1 /mnt/var/spool/atjobs /mnt/var/spool/atspool + rllinker "atd" 14 4 +fi +} +# function for configuration of cron services (fixme: to be moved to a plugin?) +config_cron () { +if [ "x$start_cron" = "xyes" ] ; then + if [ -f /mnt/etc/init.d/cron ] ; then + rllinker "cron" 18 2 + # fixme! check for proper permissions! + testmkd /mnt/var/spool/crontabs + echo -e "# /etc/crontab - file generated by $0:\n\ +#\t$date\nSHELL=/bin/sh\nPATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin\ +\nMAILTO=\n-*/15 * * * *\troot\ttest -x /usr/lib/cron/run-crons && \ +/usr/lib/cron/run-crons >/dev/null 2>&1\n" >/mnt/etc/crontab + else + error "$df_errcron" nonfatal + fi +fi +} +# secure shell service +config_sshd () { +if [ "x$start_sshd" = "xyes" ] ; then + if [ -f /mnt/etc/init.d/ssh ] ; then + #testmkd /mnt/var/run/sshd + rllinker "ssh" 12 10 + else + error "$df_errsshd" nonfatal + fi +fi +} +# snmp agent for remote monitoring +config_snmp () { +if [ "x$start_snmp" = "xyes" ] ; then + if [ -f /mnt/etc/init.d/snmpd ] ; then + rllinker "snmpd" 24 2 + testmkd /mnt/var/lib/net-snmp + fi + # fixme!! + # write service monitor depending on services started + fi +} +# acpi and powersave +config_acpi () { + rllinker "acpid" 8 16 + #Commented out since battery checking is only useful for Notebooks + #rllinker "acpi-support" 99 2 +} +# configure hal, dbus, policykitd and services like that +config_dreshal () { +if [ "x$start_dreshal" = "xyes" ]; then + testmkd /mnt/var/lib/dbus + testmkd /mnt/var/lib/misc + testmkd /mnt/var/cache/hald + touch /mnt/var/lib/misc/PolicyKit.reload + chown root:polkituser /mnt/var/lib/misc/PolicyKit.reload + rm -rf /mnt/etc/dbus-1/system.d/*etwork*anager.conf \ + /mnt/etc/dbus-1/system.d/nm-* \ + /mnt/etc/dbus-1/event.d/*NetworkManager* + sed -i /mnt/etc/PolicyKit/PolicyKit.conf \ + -e "s/\(<\/config>\)/ @@new@@\n\1/" \ + -e "s/@@new@@/\n@@return@@\n <\/match>/" \ + -e "s/@@action@@/org.freedesktop.hal.storage.mount-removable/" \ + -e "s/@@return@@/ /" + sed -i /mnt/etc/dbus-1/system.d/hal.conf \ + -e "s/^\([^d]*\)deny\(.*Volume.*\)/\1allow\2/" + rllinker "dbus" 2 20 + rllinker "hal" 3 18 + if [ ! -e /mnt/etc/init.d/policykit ] ; then + testmkd /mnt/var/lib/PolicyKit root:polkituser 1770 + testmkd /mnt/var/lib/PolicyKit-public root:polkituser + else + rllinker "policykit" 18 10 + fi +fi +} + +# initialize boot.slx - skript to be executed during early system startup +# (before most of the normal boot init scripts) +# this script should operate like a normal runlevel script (fixme!!) +d_mkrlscript () { +local switch="$1" +local name="$2" +local info="$3" +case "$switch" in + init) + echo -e "#!/bin/sh\n# skeleton of /etc/init.d/$name written \ +from $0\n# after you applied changes to the creation scripts you have to \ +rerun\n# the mkdxsinitrd script to get them applied\n\n\ +. /lib/lsb/init-functions\n" >/mnt/etc/init.d/$name + echo -e "\n\ncase \"\$1\" in\n start)\n\tlog_begin_msg \"$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 "\tlog_end_msg 0\n\t;;\n stop)\n\t;;\nesac\nexit 0" \ + >>/mnt/etc/init.d/$name + ;; +esac +} +# configure automounter +config_automount () { +if [ -f /mnt/etc/init.d/autofs ] ; then + testmkd /mnt/var/lock/subsys + sed -e "1i# /etc/default/autofs - file modified by\n#\t$0:\n#" \ + -e "s,TIMEOUT.*,TIMEOUT=60," -i /mnt/etc/default/autofs + config_portmap + rllinker "autofs" 12 4 + rllinker "nfs-common" 11 5 +fi +} +# start portmapper (needed at least for nfsN and nis services) +config_portmap () { + rllinker "portmap" 2 20 +} +# start NIS (fixme - does the service is really named ypbind??) +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 +} +# name service caching daemon (useful in most cases) +config_nscd () { + if [ -f /mnt/etc/init.d/nscd ] ; then + testmkd /mnt/var/cache/nscd + rllinker "nscd" 20 5 + fi +} diff --git a/src/initramfs/distro-specs/ubuntu/functions-9.10 b/src/initramfs/distro-specs/ubuntu/functions-9.10 new file mode 100644 index 00000000..28d1dba3 --- /dev/null +++ b/src/initramfs/distro-specs/ubuntu/functions-9.10 @@ -0,0 +1,16 @@ +# Copyright (c) 2009 - 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 Ubuntu 9.10 configure OpenSLX Linux stateless +# clients (merged in stage2 with ubuntu/functions-default - and loaded within +# initial ramfs - stage3) It may overwrite settings from the default config +# file (/etc/functions) + +# no changes from default diff --git a/src/initramfs/distro-specs/ubuntu/functions-default b/src/initramfs/distro-specs/ubuntu/functions-default new file mode 100644 index 00000000..1fdbf6bb --- /dev/null +++ b/src/initramfs/distro-specs/ubuntu/functions-default @@ -0,0 +1,286 @@ +# 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 Ubuntu to configure OpenSLX Linux +# stateless clients (executed within initial ramdisk after genconfig) + +# distro specific configuration variables used in the setup functions +# (formerly done via config-*, these variables are disputable ...) +# 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_BINDMPTS="tmp root home media" +D_DIRINBINDMNT="/var/run /var/log /var/tmp /var/lib/gdm" +D_RODIRSINRW="/etc/X11/xkb /var/lib/gconf /var/lib/dpkg /var/lib/aspell \ +/var/lib/pango /var/lib/defoma /var/cache/fontconfig /var/lib/dkms" +D_DIRINDXS="/var/run/sysconfig/tmp /var/lib/nobody /var/lib/misc /var/lib/pam \ +/var/lib/bluetooth /var/lib/texmf /var/lib/nfs/sm /var/lib/acpi_support \ +/var/spool/cron /var/lib/alsa" + +# distro specific stuff to initialize +postinit () { + if [ $DEBUGLEVEL -gt 3 ]; then + export DEBUG_UPSTART=" -v --debug" + fi +} + +# distro specific function called from servconfig script +config_distro () { + # runlevel system changed significantly compared to pre 9.10 sys-v-init + # clean up nevertheless + for dir in rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d rcS.d ; do + rm -rf /mnt/etc/${dir}/* + done + # remove unneeded init scripts (stuff handled in stage3 which would + # interface with already existing setup) + # copy all event scripts to a special directory + testmkd /mnt/etc/init.inactive + echo -e "# This directory was created in OpenSLX stage3 and contains all \ +disabled\n# upstart scripts. They are moved by servconfig to init if this is \ +required." >/mnt/etc/init.inactive/README + mv /mnt/etc/init/* /mnt/etc/init.inactive + # remove plymouth component from *dm.conf (not needed with splashy) + sed "/# Check kernel c/,/done/d" -i /mnt/etc/init.inactive/*dm.conf + # copy initial upstart scripts back + for file in alsa-mixer-save control-alt-delete console-setup dbus \ + dmesg hwclock hwclock-save irqbalance module-init-tools \ + mountall mounted* networking procps rc* tty* udev* \ + upstart-udev-bridge ; do + mv /mnt/etc/init.inactive/${file}.conf /mnt/etc/init >/dev/null 2>&1 + done + + # remove annoying udev rule set for changing eth interface and cd/dvds + rm /mnt/etc/udev/rules.d/*persistent*.rules >/dev/null 2>&1 + + # for screen sessions + testmkd /mnt/var/run/screen root:utmp 0777 + + # apt stuff + testmkd /mnt/var/cache/apt/archives/partial + + # add the slx specific path (/var/opt/openslx/bin) to the PATH variable + echo -e "# stuff generated by $0 (out of InitRamFS written $date)\n\ +export PATH=\"\$PATH:/var/opt/openslx/bin\"" >>/mnt/etc/profile +} + +# initial boot looks different since ubuntu upstart +initial_boot () { + : +} + +# runlevel linker - mostly deprecated in the old form because of new upstart +# mechanism (with backward compatibility) +rllinker () { +local script="$1" +# activating the new way, check if a appropriate script is available, else +# try the traditional approach + +if [ -e /mnt/etc/init.inactive/${script}.conf -o -e /mnt/etc/init/${script}.conf ]; then + # we have upstart scripts + if [ -e /mnt/etc/init.inactive/${script}.conf ] ; then + mv /mnt/etc/init.inactive/${script}.conf /mnt/etc/init + fi +elif [ -e /mnt/etc/init.d/${script} ]; then + # we old rc scripts + if [ -e /mnt/etc/init.d/${script} -a -n "$1" -a -n "$2" ] ; then + 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 + for i in rc2.d/K$stop$script rc3.d/K$stop$script \ + rc2.d/S$start$script rc3.d/S$start$script ; do + ln -sf ../init.d/$script /mnt/etc/$i + [ "$DEBUGLEVEL" == 5 ] && echo "Linked $script" + done + fi +else + error "Script: ${script} does not exist. Skipping setup of startscipts/events.." nonfatal +fi + +} + +# set up localization like keytable, console +dlocale () { +# fixme -- use keytable setup script here +# echo -e "\t# entries added by $0: $date" >> /mnt/etc/init.d/boot.slx +sed -e "1i# File modified during SLX stage3 bootup (config_distro)" \ + -e "s/LANG.*/LANG=\"${LANG}\"/" -i /mnt/etc/default/locale +} + +# function for ntp configuration +config_ntp () { +if [ -f /mnt/etc/init.d/ntp -a "x$start_ntp" != "xno" ] ; 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 + +fi +} +# function for atd +config_atd () { +if [ "x$start_atd" = "xyes" ]; then + # testmkd /mnt/var/spool/atjobs + # testmkd /mnt/var/spool/atspool + # chown 1:1 /mnt/var/spool/atjobs /mnt/var/spool/atspool + if [ -f /mnt/etc/init.inactive/atd ] ; then + mv /mnt/etc/init.inactive/atd /mnt/etc/init + else + error "$df_erratd" nonfatal + fi +fi +} +# function for configuration of cron services (fixme: to be moved to a plugin?) +config_cron () { +if [ "x$start_cron" = "xyes" ] ; then + if [ -f /mnt/etc/init.inactive/anacron ] ; then + mv /mnt/etc/init.inactive/anacron /mnt/etc/init + # fixme! check for proper permissions! + testmkd /mnt/var/spool/crontabs + echo -e "# /etc/crontab - file generated by $0:\n\ +#\t$date\nSHELL=/bin/sh\nPATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin\ +\nMAILTO=\n-*/15 * * * *\troot\ttest -x /usr/lib/cron/run-crons && \ +/usr/lib/cron/run-crons >/dev/null 2>&1\n" >/mnt/etc/crontab + else + error "$df_errcron" nonfatal + fi +fi +} +# secure shell service +config_sshd () { +if [ "x$start_sshd" = "xyes" ] ; then + if [ -f /mnt/etc/init.inactive/ssh.conf ] ; then + testmkd /mnt/var/run/sshd + mv /mnt/etc/init.inactive/ssh.conf /mnt/etc/init + else + error "$df_errsshd" nonfatal + fi +fi +} +# snmp agent for remote monitoring (upstart functionality unchecked) +config_snmp () { +if [ "x$start_snmp" = "xyes" ] ; then + if [ -f /mnt/etc/init.inactive/snmpd.conf ] ; then + testmkd /mnt/var/lib/net-snmp + mv /mnt/etc/init.inactive/snmpd.conf /mnt/etc/init + else + # fixme!! + # write service monitor depending on services started + : + fi +fi +} +# acpi and powersave +config_acpi () { + if [ -f /mnt/etc/init.inactive/acpid.conf ] ; then + mv /mnt/etc/init.inactive/acpid.conf /mnt/etc/init + else + # fixme!! + # write service monitor depending on services started + : + fi +} +# configure hal, dbus, policykitd and services like that +config_dreshal () { +if [ "x$start_dreshal" = "xyes" ]; then + testmkd /mnt/var/lib/dbus + testmkd /mnt/var/lib/misc + testmkd /mnt/var/cache/hald + rm -rf /mnt/etc/dbus-1/system.d/*etwork*anager.conf \ + /mnt/etc/dbus-1/system.d/nm-* \ + /mnt/etc/dbus-1/event.d/*NetworkManager* + sed -i /mnt/etc/dbus-1/system.d/hal.conf \ + -e "s/^\([^d]*\)deny\(.*Volume.*\)/\1allow\2/" + for dir in 10-vendor.d 20-org.d 30-site.d 50-local.d 90-mandatory.d ; do + testmkd /mnt/var/lib/polkit-1/localauthority/${dir} + done +fi +} + +# initialize boot.slx - skript to be executed during early system startup +# (before most of the normal boot init scripts) +# this script should operate like a normal runlevel script (fixme!!) +d_mkrlscript () { +local switch="$1" +local name="$2" +local info="$3" +# ToDo: needs to be adapted to upstart mechanism +case "$switch" in + init) + echo -e "#!/bin/sh\n# skeleton of /etc/init.d/$name written \ +from $0\n# after you applied changes to the creation scripts you have to \ +rerun\n# the mkdxsinitrd script to get them applied\n\n\ +. /lib/lsb/init-functions\n" >/mnt/etc/init.d/$name + echo -e "\n\ncase \"\$1\" in\n start)\n\tlog_begin_msg \"$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 "\tlog_end_msg 0\n\t;;\n stop)\n\t;;\nesac\nexit 0" \ + >>/mnt/etc/init.d/$name + ;; +esac +} +# configure automounter (unchecked) +config_automount () { +if [ -f /mnt/etc/init.inactive/autofs.conf ] ; then + mv /mnt/etc/init.inactive/autofs.conf /mnt/etc/init + testmkd /mnt/var/lock/subsys + sed -e "1i# /etc/default/autofs - file modified by\n#\t$0:\n#" \ + -e "s,TIMEOUT.*,TIMEOUT=60," -i /mnt/etc/default/autofs + config_portmap + config_nfs +fi +} +# start portmapper (needed at least for nfsN and nis services) +config_portmap () { +if [ -f /mnt/etc/init.inactive/portmap.conf ]; then + mv /mnt/etc/init.inactive/portmap.conf /mnt/etc/init + mv /mnt/etc/init.inactive/statd.conf /mnt/etc/init +else + error "$df_errpmap" nonfatal +fi +} +# mostly unused yet (needs to be properly integrated) +config_nfs () { + [ -e /mnt/etc/init.inactive/gssd.conf ] && \ + mv /mnt/etc/init.inactive/gssd.conf /mnt/etc/init + [ -e /mnt/etc/init.inactive/rpc_pipefs.conf ] && \ + mv /mnt/etc/init.inactive/rpc_pipefs.conf /mnt/etc/init + [ -e /mnt/etc/init.inactive/idmapd.conf ] && \ + mv /mnt/etc/init.inactive/idmapd.conf /mnt/etc/init +} + +# start NIS (unchecked!! fixme - does the service is really named ypbind??) +config_nis () { + if [ -f /mnt/etc/init.inactive/ypbind.conf ] ; then + mv /mnt/etc/init.inactive/ypbind.conf /mnt/etc/init + config_portmap + testmkd /mnt/var/yp/nicknames + else + error "$df_erryp" nonfatal + fi +} +# name service caching daemon (really existing!?) +config_nscd () { + #if [ -f /mnt/etc/init.inactive/nscd.conf ] ; then + # testmkd /mnt/var/cache/nscd + #fi + : +} -- cgit v1.2.3-55-g7522