summaryrefslogtreecommitdiffstats
path: root/initramfs/distro-specs/ubuntu/functions-default
diff options
context:
space:
mode:
Diffstat (limited to 'initramfs/distro-specs/ubuntu/functions-default')
-rw-r--r--initramfs/distro-specs/ubuntu/functions-default229
1 files changed, 106 insertions, 123 deletions
diff --git a/initramfs/distro-specs/ubuntu/functions-default b/initramfs/distro-specs/ubuntu/functions-default
index 4215920d..bfd01524 100644
--- a/initramfs/distro-specs/ubuntu/functions-default
+++ b/initramfs/distro-specs/ubuntu/functions-default
@@ -1,5 +1,5 @@
# Copyright (c) 2003..2006 - RZ Uni Freiburg
-# Copyright (c) 2006..2009 - OpenSLX GmbH
+# Copyright (c) 2006..2010 - OpenSLX GmbH
#
# This program/file is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -9,7 +9,7 @@
#
# General information about OpenSLX can be found under http://openslx.org
#
-# Configuration script for general Ubuntu to configure OpenSLX linux
+# 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
@@ -21,126 +21,92 @@
# 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
+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
-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
+postinit () {
+ if [ $DEBUGLEVEL -gt 2 ]; then
+ export DEBUG_UPSTART=" -v --debug"
+ fi
}
# distro specific function called from servconfig script
config_distro () {
- # clean the runlevel directories which will be populated by the stage3 setup
+ # 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
- # 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
+ # 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
+ # copy initial upstart scripts back
+ for file in alsa-mixer-save.conf control-alt-delete.conf dbus.conf \
+ dmesg.conf hwclock.conf hwclock-save.conf irqbalance.conf \
+ module-init-tools.conf mountall.conf mounted*conf plymouth*conf \
+ networking.conf procps.conf rc*.conf tty*conf udev*conf \
+ upstart-udev-bridge.conf ; do
+ mv /mnt/etc/init.inactive/${file} /mnt/etc/init >/dev/null 2>&1
+ done
- # 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
+ # 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 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
}
-# initial (boot time) runlevel scripts
+# initial boot looks different since ubuntu upstart
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
+# runlevel linker - mostly deprecated in the old form because of new upstart
+# mechanism (with backward compatibility)
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 \
+# activating the new way, check if a appropriate script is available, else
+# try the traditional approach
+if [ -e /mnt/etc/init.inactive/${script}.conf ] ; then
+ mv /mnt/etc/init.inactive/${script}.conf /mnt/etc/init
+elif [ -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
- 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
+ done
+else
+ error echo "Target $(pwd)../${script} does not exist. Skipping links."
+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 "s/LANG.*/LANG=\"${LANG}\"/" -i /mnt/etc/default/locale
-#d_mkrlscript entry boot.slx "setfont ${CONSOLE_FONT} >${LOGFILE} 2>&1"
-}
-
-# 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
+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
@@ -149,7 +115,7 @@ 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
@@ -158,14 +124,18 @@ 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
+ 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.d/cron ] ; then
- rllinker "cron" 18 2
+ 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\
@@ -180,30 +150,36 @@ 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
+ 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
+# snmp agent for remote monitoring (upstart functionality unchecked)
config_snmp () {
if [ "x$start_snmp" = "xyes" ] ; then
- if [ -f /mnt/etc/init.d/snmpd ] ; then
- rllinker "snmpd" 24 2
+ if [ -f /mnt/etc/init.inactive/snmpd.conf ] ; then
testmkd /mnt/var/lib/net-snmp
- fi
+ 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 () {
- rllinker "acpid" 8 16
- #Commented out since battery checking is only useful for Notebooks
- #rllinker "acpi-support" 99 2
+ 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 () {
@@ -223,14 +199,9 @@ if [ "x$start_dreshal" = "xyes" ]; then
-e "s/@@return@@/ <return result=\"yes\"\/>/"
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
+ 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
}
@@ -241,6 +212,7 @@ 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 \
@@ -260,35 +232,46 @@ rerun\n# the mkdxsinitrd script to get them applied\n\n\
;;
esac
}
-# configure automounter
+# configure automounter (unchecked)
config_automount () {
-if [ -f /mnt/etc/init.d/autofs ] ; then
+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
- rllinker "autofs" 12 4
- rllinker "nfs-common" 11 5
+ config_nfs
fi
}
# start portmapper (needed at least for nfsN and nis services)
config_portmap () {
- rllinker "portmap" 2 20
+ mv /mnt/etc/init.inactive/portmap.conf /mnt/etc/init
+ mv /mnt/etc/init.inactive/statd.conf /mnt/etc/init
+}
+# 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 (fixme - does the service is really named ypbind??)
+
+# start NIS (unchecked!! fixme - does the service is really named ypbind??)
config_nis () {
- if [ -f /mnt/etc/init.d/ypbind ] ; then
- rllinker "ypbind" 6 16
+ 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 (useful in most cases)
+# name service caching daemon (really existing!?)
config_nscd () {
- if [ -f /mnt/etc/init.d/nscd ] ; then
- testmkd /mnt/var/cache/nscd
- rllinker "nscd" 20 5
- fi
+ #if [ -f /mnt/etc/init.inactive/nscd.conf ] ; then
+ # testmkd /mnt/var/cache/nscd
+ #fi
+ :
}