Subversion Repositories livecd

Rev

Rev 267 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

#!/bin/bash
#
# Fix things during bootup - run very first 
# Executed at the begining 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

# root on NFS?
NFSROOT=$( cmdline_value nfsroot )

# kernel modules for blacklist?
BLACKLIST=$( cmdline_value blacklist )

# disable udev hotplug?
NOHOTPLUG=$( cmdline_parameter nohotplug )


### create /srv and /selinux
mkdir -p /srv
mkdir -p /selinux


### blacklist file
[ -e /etc/hotplug/blacklist ]         && BLACKLIST_FILE=/etc/hotplug/blacklist
[ -e /etc/modprobe.d/blacklist ]      && BLACKLIST_FILE=/etc/modprobe.d/blacklist
[ -e /etc/modprobe.d/blacklist.conf ] && BLACKLIST_FILE=/etc/modprobe.d/blacklist.conf


### put wireless kernel module on blacklist, if boot over NFS
#   we don't need to load wireless modules, if we boot over network 
if [ $NFSROOT ]; then

    echo "Disable probing for wireless modules on diskless client"
    cp -a ${BLACKLIST_FILE} ${BLACKLIST_FILE}.ori
    echo >> ${BLACKLIST_FILE}
    echo "# Disable wireless modules on diskless client" >> ${BLACKLIST_FILE}

    # for SL4
    if [ -e /etc/hotplug/blacklist ]; then
        find /lib/modules/$( uname -r )/kernel/drivers/net/wireless -type f | grep -v "_" | while read module; do 
            basename $module | cut -d"." -f 1
        done >> ${BLACKLIST_FILE}
    fi

    # for SL5
    if [ -e /etc/modprobe.d/blacklist ]; then
        find /lib/modules/$( uname -r )/kernel/drivers/net/wireless -type f | grep -v "_" | while read module; do 
            echo -n "blacklist "; basename $module | cut -d"." -f 1
        done >> ${BLACKLIST_FILE}
    fi
fi


### blacklist kernel modules
if [ -n $BLACKLIST ]; then
    cp -a ${BLACKLIST_FILE} ${BLACKLIST_FILE}.ori
    echo "# Added by boot parameter (LiveCD)" >> ${BLACKLIST_FILE}
    for module in `echo "$BLACKLIST" | tr ':' ' '`; do
        echo "blacklist $module"              >> ${BLACKLIST_FILE}
    done
    echo                                      >> ${BLACKLIST_FILE}
fi


### disable udev hotplug - may make the system unusable
[ -e /lib/udev/udev_run_hotplugd ] && HOTPLUG_FILE=/lib/udev/udev_run_hotplugd   # SL5

if [ $NOHOTPLUG ] && [ $HOTPLUG_FILE ]; then
    mv ${HOTPLUG_FILE} ${HOTPLUG_FILE}.ori
    touch ${HOTPLUG_FILE}
    chmod 755 ${HOTPLUG_FILE}
fi