Rev 210 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed
#!/bin/bash
#
# Fix things during bootup - run first
# For example: Enable services, etc ...
# Executed at the very end of /etc/rc.d/rc.sysinit
#
# Urs Beyerle
#
### -----------------------------------------------------------
### Definitions
### -----------------------------------------------------------
# dir of mounted /$MOUNTDIR/live
MOUNTDIR=livecd
# source functions
. /$MOUNTDIR/live/liblinuxlive
. /etc/init.d/functions
### -----------------------------------------------------------
### Get boot parameters
### -----------------------------------------------------------
# start afs?
AFS=$( cmdline_parameter afs )
CELL=$( cmdline_value cell )
# or force no afs
[ $( cmdline_parameter noafs ) ] && AFS=""
# start ssh server?
SSH=$( cmdline_parameter ssh )
# root on NFS?
NFSROOT=$( cmdline_value nfsroot )
# PSI setup?
PSI=$( cmdline_parameter psi )
# do not start network
NONET=$( cmdline_parameter nonet )
# fast booting ?
FASTBOOT=$( cmdline_parameter fastboot )
# no (auto) kudzu ?
NOKUDZU=$( cmdline_parameter nokudzu )
# if run=rdesktop, we do fast boot
if [ "$( cmdline_value run )" = "rdesktop" ]; then
FASTBOOT="fastboot"
fi
# start ntpd ?
NTPD=$( cmdline_parameter ntpd )
# services on/off
SERVICEON=$( cmdline_value serviceon )
SERVICEOFF=$( cmdline_value serviceoff )
# Xserver configurations
SCREEN=$( cmdline_value screen )
### -----------------------------------------------------------
### Set system clock again (code copied from rc.sysinit)
### -----------------------------------------------------------
ARC=0
SRM=0
UTC=0
if [ -f /etc/sysconfig/clock ]; then
. /etc/sysconfig/clock
# convert old style clock config to new values
if [ "${CLOCKMODE}" = "GMT" ]; then
UTC=true
elif [ "${CLOCKMODE}" = "ARC" ]; then
ARC=true
fi
fi
CLOCKDEF=""
CLOCKFLAGS="$CLOCKFLAGS --hctosys"
case "$UTC" in
yes|true) CLOCKFLAGS="$CLOCKFLAGS --utc"
CLOCKDEF="$CLOCKDEF (utc)" ;;
no|false) CLOCKFLAGS="$CLOCKFLAGS --localtime"
CLOCKDEF="$CLOCKDEF (localtime)" ;;
esac
case "$ARC" in
yes|true) CLOCKFLAGS="$CLOCKFLAGS --arc"
CLOCKDEF="$CLOCKDEF (arc)" ;;
esac
case "$SRM" in
yes|true) CLOCKFLAGS="$CLOCKFLAGS --srm"
CLOCKDEF="$CLOCKDEF (srm)" ;;
esac
[ -x /sbin/hwclock ] && /sbin/hwclock $CLOCKFLAGS
action $"Setting clock $CLOCKDEF: `date`" /bin/true
### -----------------------------------------------------------
### Configure services
### -----------------------------------------------------------
### save status of services that may be disabled,
# if LiveCD mounted over NFS
if [ $NFSROOT ]; then
NFS_SERVICES="rpcidmapd NetworkManager NetworkManagerDispatcher \
netfs nfslock portmap network"
for serv in $NFS_SERVICES; do
chkconfig --list $serv 2>/dev/null | grep -q ":on" && echo $serv >> /$MOUNTDIR/service.on
done
fi
### disable rpcidmapd, if LiveCD mounted over NFS
if [ $NFSROOT ]; then
chkconfig rpcidmapd off >/dev/null 2>&1
fi
### disable NetworkManager, if LiveCD mounted over NFS
if [ $NFSROOT ]; then
chkconfig NetworkManager off >/dev/null 2>&1
chkconfig NetworkManagerDispatcher off >/dev/null 2>&1
fi
### disable shutdown of network and nfs,
# if we have the LiveCD mounted over NFS
if [ $NFSROOT ]; then
rm -f /etc/rc.d/rc6.d/K*netfs
rm -f /etc/rc.d/rc6.d/K*nfslock
rm -f /etc/rc.d/rc6.d/K*portmap
rm -f /etc/rc.d/rc6.d/K*network
rm -f /etc/rc.d/rc0.d/K*netfs
rm -f /etc/rc.d/rc0.d/K*nfslock
rm -f /etc/rc.d/rc0.d/K*portmap
rm -f /etc/rc.d/rc0.d/K*network
fi
### enable AFS during start up, if given by boot parameter
if [ $AFS ]; then
chkconfig afs on
fi
### disable auto-kudzu ?
if [ $NOKUDZU ]; then
chkconfig kudzu-auto off
fi
### disable some services for fast booting
if [ $FASTBOOT ]; then
echo "Fast booting enabled"
chkconfig vpnclient_init off 2>/dev/null
chkconfig haldaemon off 2>/dev/null
chkconfig pcmcia off 2>/dev/null
chkconfig ntpd off 2>/dev/null
chkconfig atd off 2>/dev/null
chkconfig cpuspeed off 2>/dev/null
chkconfig gpm off 2>/dev/null
chkconfig messagebus off 2>/dev/null
chkconfig avahi-daemon off 2>/dev/null
chkconfig kudzu-auto off 2>/dev/null
fi
### enable ntpd ?
if [ $NTPD ]; then
chkconfig ntpd on
fi
### enable SSH server during start up, if given by boot parameter
if [ $SSH ]; then
chkconfig sshd on
fi
### activate ipw3945d daemon, if we have Intel IPW3945 WLAN
if [ ! $NONET ]; then
lspci | grep -q Intel.*3945ABG
if [ "$?" = "0" ]; then
chkconfig ipw3945d on 2>/dev/null
fi
fi
### enable 915resolution on Intel Mobile Display controller, if screen= is given
# and set correct resolution in /etc/sysconfig/915resolution
lspci | grep -q Display.*Intel.*Mobile
if [ "$?" = "0" ] && [ $SCREEN ]; then
chkconfig 915resolution on 2>/dev/null
if [ -e /etc/sysconfig/915resolution ]; then
X=$( echo $SCREEN | cut -d"x" -f1 )
Y=$( echo $SCREEN | cut -d"x" -f2 )
if [ $X ]; then
sed -i "s|^X=.*|X=$X|" /etc/sysconfig/915resolution
fi
if [ $Y ]; then
sed -i "s|^Y=.*|Y=$Y|" /etc/sysconfig/915resolution
fi
fi
fi
### services on
if [ -n $SERVICEON ]; then
for service in `echo "$SERVICEON" | tr ':' ' '`; do
if [ -f /etc/init.d/$service ]; then
chkconfig $service on
fi
done
fi
### services off
if [ -n $SERVICEOFF ]; then
for service in `echo "$SERVICEOFF" | tr ':' ' '`; do
if [ -f /etc/init.d/$service ]; then
chkconfig $service off
fi
done
fi
### -----------------------------------------------------------
### Main
### -----------------------------------------------------------
### get resolv.conf, if we have the LiveCD mounted over NFS
if [ $NFSROOT ]; then
cp -f /$MOUNTDIR/live/etc/resolv.conf /etc/
fi
### restore blacklist (modified in runveryfirst)
if [ $NFSROOT ]; then
[ -e /etc/hotplug/blacklist ] && BLACKLIST_FILE=/etc/hotplug/blacklist
[ -e /etc/modprobe.d/blacklist ] && BLACKLIST_FILE=/etc/modprobe.d/blacklist
mv -f ${BLACKLIST_FILE}.backup ${BLACKLIST_FILE}
fi
### create AFS mount point
mkdir -p /afs
### set afs cell, if given by boot parameter
if [ $CELL ]; then
echo $CELL > /usr/vice/etc/ThisCell
fi
### fix perm of /tmp
chmod 1777 /tmp
### create home
mkdir -p /home
### create /media, /misc, /net
mkdir -p /media /misc /net
### create /scratch
mkdir -p /scratch
chmod 1777 /scratch
### create /data
if [ $PSI ]; then
mkdir -p /data
chmod 1777 /data
fi
### add PSI master
if [ $PSI ]; then
mkdir -p /mnt/master
echo "pxeserv01:/master /mnt/master nfs noauto,nolock,ro 0 0" >> /etc/fstab
fi