export PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin"
DEBUG="/dev/null"
KERNEL="$(uname -r)"
+ARCH="$(uname -m)"
umask 022
# old linuxrc version:
esac
}
+# Check if currently using a framebuffer
+hasfb() {
+ [ -e /dev/fb0 ] && return 0 || return 1
+}
+
# Check wheter a configuration variable (like $CONFIG_TOHD) is
# enabled or not
checkvalue(){
# set default to 'en' in live-cd mode if $LANGUAGE is not yet set:
if [ -z "$INSTALLED" ] ; then
- [ -n "$LANGUAGE" ] || LANGUAGE='us'
+ [ -n "$LANGUAGE" ] || LANGUAGE='en'
fi
- # if bootoption lang is used update /etc/default/locale, otherwise *not*!
- if [ -n "$BOOT_LANGUAGE" -a -x /usr/sbin/grml-setlang ] ; then
- if checkgrmlsmall ; then
- /usr/sbin/grml-setlang "POSIX"
- else
- /usr/sbin/grml-setlang "$LANGUAGE"
- fi
+ if [ -x /usr/sbin/grml-setlang ] ; then
+ # if bootoption lang is used update /etc/default/locale accordingly
+ if [ -n "$BOOT_LANGUAGE" ] ; then
+ checkgrmlsmall && /usr/sbin/grml-setlang "POSIX" || /usr/sbin/grml-setlang "$LANGUAGE"
+ # otherwise default to lang=en
+ else
+ checkgrmlsmall && /usr/sbin/grml-setlang "POSIX" || /usr/sbin/grml-setlang "en"
+ fi
fi
# set console font
else
ewarn "/usr/share/consolefonts/Uni3-Terminus16.psf.gz not available. Please upgrade package console-terminus." ; eend 1
fi
+ if ! hasfb ; then
+ CONSOLEFONT='Lat15-Terminus16'
+ fi
fi
fi
if checkbootparam 'hostname' ; then
HOSTNAME="$(getbootparam 'hostname' 2>>$DEBUG)"
einfo "Setting hostname to $HOSTNAME as requested."
- sed -i "s/^127.0.0.1.*localhost/127.0.0.1 $HOSTNAME localhost/" /etc/hosts
- hostname $HOSTNAME ; eend $?
+ grml-hostname $HOSTNAME >>$DEBUG ; RC=$?
+ [ "$RC" = "0" ] && hostname $HOSTNAME
+ eend $RC
else
hostname --file /etc/hostname
fi
einfo "Network device ${WHITE}${DEVICE}${NORMAL} detected, DHCP broadcasting for IP. (Backgrounding)"
trap 2 3 11
ifconfig $DEVICE up >>$DEBUG 2>&1
- ( pump -i $DEVICE >>$DEBUG 2>&1 && echo finished_running_pump > /etc/network/status/$DEVICE ) &
+ ( pump -i $DEVICE --script=/usr/lib/grml-autoconfig/pump-runparts >>$DEBUG 2>&1 && echo finished_running_pump > /etc/network/status/$DEVICE ) &
trap "" 2 3 11
sleep 1
eend 0
# Disclaimer: sorry for the tons of if/then/else... but this makes sure we use:
# * it only if we have the according kernel modules available
- # * cpufreq only on laptops (check via /usr/sbin/laptop-detect) and not inside Virtual Box
+ # * cpufreq not inside Virtual Box
# * current version of /etc/init.d/loadcpufreq from Debian (to stay in sync)
# -> parse output of the initscript and output it according to our look'n'feel
# * our own cpufreq-detect.sh if /etc/init.d/loadcpufreq isn't present
if ! cpufreq_check ; then
ewarn "Skipping cpufreq setup as module dependencies are not fulfilled." ; eend 1
else
- if /usr/sbin/laptop-detect 1>/dev/null 2>&1 ; then
- # Virtual Box supports ACPI and laptop-detect returns with '0', so check for it:
- if [ -r /proc/acpi/battery/BAT0/info ] ; then
- if grep -q 'OEM info: innotek' /proc/acpi/battery/BAT0/info ; then
- einfo 'Virtual Box detected, skipping cpufreq setup.' ; eend 0
- return 0
- fi
- fi
- einfo "Detected Laptop - trying to use cpu frequency scaling:"
- eindent
- if [ -x /etc/init.d/loadcpufreq ] ; then
- SKIP_CPU_GOVERNOR=''
- LOADCPUFREQ=$(mktemp)
- /etc/init.d/loadcpufreq start >"$LOADCPUFREQ" 2>&1 ; RC=$?
- if grep -q FATAL "$LOADCPUFREQ" ; then
- eindent
- SKIP_CPU_GOVERNOR=1
- oldIFS="$IFS"
- IFS="
+ # Virtual Box supports ACPI and laptop-detect would return with '0', so check for it:
+ if [ -r /proc/acpi/battery/BAT0/info ] ; then
+ if grep -q 'OEM info: innotek' /proc/acpi/battery/BAT0/info ; then
+ einfo 'Virtual Box detected, skipping cpufreq setup.' ; eend 0
+ return 0
+ fi
+ fi
+ einfo "Trying to set up cpu frequency scaling:"
+ eindent
+ if [ -x /etc/init.d/loadcpufreq ] ; then
+ SKIP_CPU_GOVERNOR=''
+ LOADCPUFREQ=$(mktemp)
+ /etc/init.d/loadcpufreq start >"$LOADCPUFREQ" 2>&1 ; RC=$?
+ if grep -q FATAL "$LOADCPUFREQ" ; then
+ eindent
+ SKIP_CPU_GOVERNOR=1
+ oldIFS="$IFS"
+ IFS="
"
- for line in $(grep FATAL "$LOADCPUFREQ" | sed 's/.*FATAL: //; s/ (.*)//') ; do
- eerror "$line" ; eend $RC
- done
- IFS="$oldIFS"
- eoutdent
- elif grep -q done "$LOADCPUFREQ" ; then
- MODULE=$(grep done "$LOADCPUFREQ" | sed 's/.*done (\(.*\))./\1/')
- if [ -n "$MODULE" -a "$MODULE" != none ]; then
- einfo "Loading cpufreq kernel module $MODULE" ; eend 0
- else
- ewarn "Could not find an appropriate kernel module for cpu frequency scaling." ; eend 1
- fi
- fi
- rm -f $LOADCPUFREQ
- elif [ -r /usr/bin/cpufreq-detect.sh ] ; then
- . /usr/bin/cpufreq-detect.sh
- if [ -n "$MODULE" -a "$MODULE" != none ]; then
- einfo "Loading modules ${MODULE}"
- modprobe "$MODULE" 1>>$DEBUG || modprobe "$MODULE_FALLBACK" 1>>$DEBUG
- RC=$?
- if [[ $RC == 0 ]]; then
- eend 0
- else
- SKIP_CPU_GOVERNOR=1
- eend $1
- fi
- else
- ewarn "Could not detect an appropriate CPU for use with cpu frequency scaling - skipping." && eend 1
- fi # $MODULE
- fi # loadcpufreq
-
- if [ -z "$SKIP_CPU_GOVERNOR" ] ; then
- einfo "Loading cpufreq_ondemand, setting ondemand governor"
- if modprobe cpufreq_ondemand ; RC=$? ; then
- for file in $(find /sys/devices/system/cpu/ -name scaling_governor 2>/dev/null) ; do
- echo ondemand > $file
- done
- fi
- eend $RC
- fi # cpu-governor
+ for line in $(grep FATAL "$LOADCPUFREQ" | sed 's/.*FATAL: //; s/ (.*)//') ; do
+ eerror "$line" ; eend $RC
+ done
+ IFS="$oldIFS"
+ eoutdent
+ elif grep -q done "$LOADCPUFREQ" ; then
+ MODULE=$(grep done "$LOADCPUFREQ" | sed 's/.*done (\(.*\))./\1/')
+ if [ -n "$MODULE" -a "$MODULE" != none ]; then
+ einfo "Loading cpufreq kernel module $MODULE" ; eend 0
+ else
+ ewarn "Could not find an appropriate kernel module for cpu frequency scaling." ; eend 1
+ fi
+ fi
+ rm -f $LOADCPUFREQ
+ elif [ -r /usr/bin/cpufreq-detect.sh ] ; then
+ . /usr/bin/cpufreq-detect.sh
+ if [ -n "$MODULE" -a "$MODULE" != none ]; then
+ einfo "Loading modules ${MODULE}"
+ modprobe "$MODULE" 1>>$DEBUG || modprobe "$MODULE_FALLBACK" 1>>$DEBUG
+ RC=$?
+ if [[ $RC == 0 ]]; then
+ eend 0
+ else
+ SKIP_CPU_GOVERNOR=1
+ eend $1
+ fi
+ else
+ ewarn "Could not detect an appropriate CPU for use with cpu frequency scaling - skipping." && eend 1
+ fi # $MODULE
+ fi # loadcpufreq
+
+ if [ -z "$SKIP_CPU_GOVERNOR" ] ; then
+ einfo "Loading cpufreq_ondemand, setting ondemand governor"
+ if modprobe cpufreq_ondemand ; RC=$? ; then
+ for file in $(find /sys/devices/system/cpu/ -name scaling_governor 2>/dev/null) ; do
+ echo ondemand > $file
+ done
+ fi
+ eend $RC
+ fi # cpu-governor
- eoutdent
+ eoutdent
- fi # laptop-detect
fi # cpufreq_check
fi # checkbootparam nocpu
}
}
# }}}
+# {{{ autostart of x11vnc
+config_vnc(){
+
+USER=grml # TODO: make it dynamically configurable
+if checkbootparam 'vnc' ; then
+ VNC_PASSWD=''
+ VNC_PASSWD="$(getbootparam 'vnc' 2>>$DEBUG)"
+ einfo "Bootoption vnc found, trying to set password for user $USER."
+ eindent
+ if [ -z "$VNC_PASSWD" ] ; then
+ if [ -x /usr/bin/apg ] ; then
+ VNC_PASSWD="$(apg -M NL -a 0 -m 8 -x 12 -n 1)"
+ elif [ -x /usr/bin/gpw ] ; then
+ VNC_PASSWD="$(gpw 1)"
+ elif [ -x /usr/bin/pwgen ] ; then
+ VNC_PASSWD="$(pwgen -1 8)"
+ elif [ -x /usr/bin/hexdump ] ; then
+ VNC_PASSWD="$(dd if=/dev/urandom bs=14 count=1 2>/dev/null | hexdump | awk '{print $3 $4}')"
+ elif [ -n "$RANDOM" ] ; then
+ VNC_PASSWD="${USER}${RANDOM}"
+ else
+ VNC_PASSWD=''
+ eerror "Empty passphrase and neither pwgen nor hexdump nor \$RANDOM found. Skipping."
+ eend 1
+ fi
+
+ if [ -n "$VNC_PASSWD" ] ; then
+ ewarn "No given password for vnc found. Using random password: $VNC_PASSWD" ; eend 0
+ fi
+ fi
+ eoutdent
+
+ # finally check if we have a password we can use:
+ if [ -n "$VNC_PASSWD" ] ; then
+
+ VNCDIR="/home/${USER}/.vnc"
+ [ -d "$VNCDIR" ] || mkdir "$VNCDIR"
+
+ if [ ! -x /usr/bin/x11vnc ] ; then
+ eerror "Error: x11vnc not found - can not set up vnc. Please make sure to install the x11vnc package."
+ eend 1
+ else
+ /usr/bin/x11vnc -storepasswd "$VNC_PASSWD" "$VNCDIR"/passwd ; eend $?
+ /bin/chown -R "$USER": "$VNCDIR"
+ fi
+ fi
+fi
+}
+# }}}
+
# {{{ set password for user grml
config_passwd(){
if checkbootparam 'passwd' >>$DEBUG 2>&1; then
# }}}
# {{{ Sound
+
config_mixer(){
-if ! [ -x /usr/bin/aumix ] ; then
- eerror "aumix binary not available. Can not set sound volumes therefore." ; eend 1
+if ! [ -x /usr/bin/amixer ] ; then
+ eerror "amixer binary not available. Can not set sound volumes therefore." ; eend 1
else
if ! [ -r /proc/asound/cards ] ; then
if checkbootparam 'nosound' ; then
einfo "Muting sound devices on request."
- # some IBM notebooks require the following stuff:
- if [ -x /usr/bin/amixer ] ; then
- if amixer get Front 1>/dev/null 2>>$DEBUG ; then
- amixer set Front unmute 1>/dev/null
- amixer set Front 0% 1>/dev/null
- fi
- fi
- ERROR=$(aumix -w 0 -v 0 -p 0 -m 0 2>&1) ; RC=$?
+
+ fix_ibm_sound 0
+ # mute the master, this should be sufficient
+ ERROR=$(amixer -q set Master mute)
+ RC=$?
+
if [ -n "$ERROR" ] ; then
eindent
eerror "Problem muting sound devices: $ERROR"
eend $RC
elif [ -z "$INSTALLED" ]; then
einfo "Setting mixer volumes to level ${WHITE}${VOL}${NORMAL}."
- # some IBM notebooks require the following stuff:
- if [ -x /usr/bin/amixer ] ; then
- if amixer get Front 1>/dev/null 2>>$DEBUG ; then
- amixer set Front unmute 1>/dev/null
- amixer set Front ${VOL}% 1>/dev/null
- fi
- fi
+
+ fix_ibm_sound ${VOL}
+
# by default assume '0' as volume for microphone:
if checkbootparam 'micvol' ; then
MICVOL="$(getbootparam 'micvol' 2>>$DEBUG)"
fi
# finally set the volumes:
- ERROR=$(aumix -w $VOL -v $VOL -p $VOL -m $MICVOL 2>&1) ; RC=$?
- if [ -n "$ERROR" ] ; then
- eindent
- eerror "Problem setting mixer volumes: $ERROR (no soundcard?)"
- eoutdent
+ RC=0
+ for CONTROL in Master PCM ; do
+ amixer -q set ${CONTROL} ${VOL}%
+ if [ $? -ne 0 ] ; then RC=$? ; fi
+ done
+ # dont know how to set microphone volume for all soundcards with amixer,
+ # so use aumix instead :/
+ if [ ${MICVOL} -ne 0 -a -x /usr/bin/aumix ] ; then
+ aumix -m $MICVOL &>/dev/null
+ if [ $? -ne 0 ] ; then RC=$? ; fi
fi
+
eend $RC
fi
fi
}
+
+# on some IBM notebooks the front control has to be toggled
+fix_ibm_sound() {
+ if [ -z $1 ] ; then
+ return
+ fi
+
+ VOL=${1}
+
+ if [ -x /usr/bin/amixer ] ; then
+ if amixer -q get Front 1>/dev/null 2>>$DEBUG ; then
+ amixer -q set Front unmute &>/dev/null
+ amixer -q set Front ${VOL}% &>/dev/null
+ fi
+ fi
+}
# }}}
# {{{ modem detection
# {{{ remote files
get_remote_file() {
[ "$#" -eq 2 ] || ( echo "Error: wrong parameter for get_remote_file()" ; return 1 )
- SOURCE="$1"
+ SOURCE=$(eval echo "$1")
TARGET="$2"
getconfig() {
wget --timeout=10 --dns-timeout=10 --connect-timeout=10 --tries=1 \
}
# }}}
+# {{{ remote scripts
+config_netscript() {
+ if checkbootparam 'netscript' ; then
+ CONFIG="$(getbootparam 'netscript' 2>>$DEBUG)"
+ SCRIPTFILE='/tmp/netscript.grml'
+
+ if get_remote_file ${CONFIG} ${SCRIPTFILE} ; then
+ chmod +x ${SCRIPTFILE}
+ einfo "Running ${WHITE}${SCRIPTFILE}${NORMAL}:" && ${SCRIPTFILE} ; eend $?
+ fi
+
+ fi
+}
+# }}}
+
# {{{ blindsound
config_blindsound(){
if checkbootparam 'blind' ; then
# make sure we start X only if startx is used *before* a nostartx option
# so it's possible to disable automatic X startup using nostart
if checkbootparam 'startx' && ! echo "$CMDLINE" | grep -q 'startx.*nostartx' ; then
- if [ -x /usr/X11R6/bin/X ] ; then
+ if [ -x $(which X) ] ; then
if [ -z "$INSTALLED" ] ; then
WINDOWMANAGER="$(getbootparam 'startx' 2>>$DEBUG)"
if [ -z "$WINDOWMANAGER" ] ; then
# - If myconfig=foo is set on the command line, $dcs-dir is set to
# foo, even if a GRMLCFG partition is present.
DCSDIR=""
+DCSMP="/mnt/grml"
if checkbootparam 'noautoconfig' || checkbootparam 'forensic' ; then
ewarn "Skipping running automount of device(s) labeled GRMLCFG as requested." ; eend 0
else
if checkbootparam 'myconfig' ; then
DCSDEVICE="$(getbootparam 'myconfig' 2>>$DEBUG)"
if [ -z "$DCSDEVICE" ]; then
- einfo "No device for bootoption myconfig provided." ; eend 1
+ eerror "Error: No device for bootoption myconfig provided." ; eend 1
fi # [ -z "$DCSDEVICE" ]
elif checkvalue $CONFIG_MYCONFIG; then # checkbootparam myconfig
einfo "Searching for device(s) labeled with GRMLCFG. (Disable this via boot option: noautoconfig)" ; eend 0
fi
fi
DCSDEVICE=$(blkid -t LABEL=GRMLCFG | head -1 | awk -F: '{print $1}')
+ if [ -n "$DCSDEVICE" ]; then
+ DCSMP="/mnt/grmlcfg"
+ fi
+ eoutdent
fi
- if [ -n "$DCSDEVICE" ]; then
+
+ # if not specified/present then assume default:
+ if [ -z "$DCSDEVICE" ]; then
+ DCSDIR="/live/image"
+ else
+ eindent
einfo "debs, config, scripts are read from $DCSDEVICE." ; eend 0
DCSDIR="$(< /proc/mounts awk -v DCSDEV=$DCSDEVICE '{if ($1 == DCSDEV) { print $2 }}')"
if [ -n "$DCSDIR" ]; then
- einfo "$DCSDEVICE already mounted on $DCSDIR"; eend 0
+ ewarn "$DCSDEVICE already mounted on $DCSDIR"; eend 0
else
- [ -d /mnt/grml ] || mkdir /mnt/grml
- umount /mnt/grml 1>>$DEBUG 2>&1 # make sure it is not mounted
- mount -o ro -t auto $DCSDEVICE /mnt/grml ; RC="$?"
+ [ -d $DCSMP ] || mkdir $DCSMP
+ umount $DCSMP 1>>$DEBUG 2>&1 # make sure it is not mounted
+ mount -o ro -t auto $DCSDEVICE $DCSMP ; RC="$?"
if [[ $RC == 0 ]]; then
- einfo "Successfully mounted $DCSDEVICE to /mnt/grml (readonly)." ; eend 0
- eindent
+ einfo "Successfully mounted $DCSDEVICE to $DCSMP (readonly)." ; eend 0
+ else
+ eerror "Error: mounting $DCSDEVICE to $DCSMP (readonly) failed." ; eend 1
fi
- DCSDIR="/mnt/grml"
+ DCSDIR="$DCSMP"
fi
- else
- DCSDIR="/live/image"
+ eoutdent
fi
fi
fi
-if [ -n "$DCSDIR" ]; then
- einfo "Debs, config, scripts will be read from $DCSDIR." ; eend 0
+if [ -n "$DCSDIR" -a "$DCSDIR" != "/live/image" ] ; then
+ einfo "Debs, config, scripts (if present) will be read from $DCSDIR." ; eend 0
elif checkbootparam 'debs' || checkbootparam 'config' || checkbootparam 'scripts'; then
einfo "Debs, config, scripts will be read from the live image directly." ; eend 0
fi
}
config_scripts(){
-if checkbootparam 'scripts' ; then
+if checkbootparam 'scripts' || [ "$DCSMP" = "/mnt/grmlcfg" ]; then
SCRIPTS="$(getbootparam 'scripts' 2>>$DEBUG)"
- if [ -z "$SCRIPTS" ]; then
+ if [ -d ${DCSDIR}/scripts ] && [ -z "$SCRIPTS" ]; then
SCRIPTS="$(cd ${DCSDIR}/scripts; /bin/ls -1d [Gg][Rr][Mm][Ll].[Ss][Hh] 2>>$DEBUG)"
fi
if ! echo $SCRIPTS | grep -q '/'; then
# backwards compatibility: if no path is given get scripts from scripts/
SCRIPTS="scripts/$SCRIPTS"
fi
- SCRIPTS="${DCSDIR}/$SCRIPTS"
- if [ -d "$SCRIPTS" ]; then
- einfo "Bootparameter scripts found. Trying to execute from directory ${SCRIPTS}:"
- run-parts $SCRIPTS
- else
- einfo "Bootparameter scripts found. Trying to execute ${SCRIPTS}:"
- sh -c $SCRIPTS
+ if [ "$DCSMP" = "/mnt/grmlcfg" ]; then
+ # we are executing from a GRMLCFG labeled fs
+ # kick everything we have done before and start over
+ SCRIPTS="$(cd ${DCSDIR}; /bin/ls -1d [Gg][Rr][Mm][Ll].[Ss][Hh] 2>>$DEBUG)"
+ fi
+ if [ -n "$SCRIPTS" ]; then
+ SCRIPTS="${DCSDIR}/$SCRIPTS"
+ if [ "$DCSMP" = "/mnt/grmlcfg" ]; then
+ einfo "Trying to execute ${SCRIPTS}"
+ sh -c $SCRIPTS
+ elif [ -d "$SCRIPTS" ]; then
+ einfo "Bootparameter scripts found. Trying to execute from directory ${SCRIPTS}:"
+ run-parts $SCRIPTS
+ else
+ einfo "Bootparameter scripts found. Trying to execute ${SCRIPTS}:"
+ sh -c $SCRIPTS
+ fi
fi
fi
}
config_config(){
-if checkbootparam 'config' ; then
+if checkbootparam 'config' || [ "$DCSMP" = "/mnt/grmlcfg" ]; then
CONFIG="$(getbootparam 'config' 2>>$DEBUG)"
if [ -z "$CONFIG" ]; then
CONFIG="$(cd ${DCSDIR}; ls -1d [Cc][Oo][Nn][Ff][Ii][Gg].[Tt][Bb][Zz] 2>>$DEBUG)"
fi
fi
fi
-# umount /mnt/grml if it was mounted by finddcsdir
+# umount $DCSMP if it was mounted by finddcsdir
# this doesn't really belong here
-grep -q '/mnt/grml' /proc/mounts && umount /mnt/grml
+grep -q '$DCSMP' /proc/mounts && umount $DCSMP
}
# }}}
# {{{ SW-RAID
config_swraid(){
- if [ -z "$INSTALLED" ] ; then
+ [ -n "$INSTALLED" ] && return 0
+
# notice: checkbootparam "forensic" is just for users who don't know how to really use the bootoption
- if checkbootparam 'noraid' || checkbootparam 'noswraid' -o \
+ if checkbootparam 'noraid' || checkbootparam 'noswraid' || \
checkbootparam 'forensic' || checkbootparam 'raid=noautodetect' ; then
ewarn "Skipping SW-RAID code as requested on boot commandline." ; eend 0
else
fi # is /sbin/mdadm executable?
fi # check for bootoptions
- fi # run only in live-cd mode
+}
+# }}}
+
+# {{{ dmraid
+config_dmraid(){
+ [ -n "$INSTALLED" ] && return 0
+
+ if checkbootparam 'nodmraid' ; then
+ ewarn "Skipping dmraid code as requested on boot commandline." ; eend 0
+ return 0
+ fi
+
+ if ! [ -x /sbin/dmraid ] ; then
+ eerror "dmraid not available, can not execute it." ; eend 1
+ return
+ fi
+
+ dmraid_wrapper() {
+ # usage: dmraid_wrapper <dmraid_option>
+ [ -n "$1" ] || return 1
+
+ IFSOLD=${IFS:-}
+ IFS='
+'
+ eindent
+
+ for line in $(dmraid $1 ; echo errcode:$?); do
+ case $line in
+ *'no raid disks'*)
+ einfo "No active dmraid devices found" ; eend 0
+ break
+ ;;
+ errcode:0)
+ eend 0;
+ ;;
+ errcode:1)
+ eend 1
+ ;;
+ *)
+ einfo "$line"
+ ;;
+ esac
+ done
+
+ eoutdent
+ IFS=$IFSOLD
+ }
+
+ if checkbootparam 'dmraid' ; then
+ local ACTION="$(getbootparam 'dmraid' 2>>$DEBUG)"
+ if [ "$ACTION" = "off" ] ; then
+ # Deactivates all active software RAID sets:
+ einfo "Deactivating present dmraid sets (as requested via dmraid=off):"
+ dmraid_wrapper -an
+ else
+ # Activate all software RAID sets discovered:
+ einfo "Activating present dmraid sets (as requested via dmraid):"
+ dmraid_wrapper -ay
+ fi
+
+ return
+ fi
+
+ # by default (no special bootoptions) discover all software RAID devices:
+ einfo "Searching for any present dmraid sets:"
+ dmraid_wrapper -r
}
# }}}
# {{{ LVM (Logical Volumes)
config_lvm(){
- if [ -z "$INSTALLED" ] ; then
- # notice: checkbootparam "forensic" is just for users who don't know how to really use the bootoption
+ [ -n "$INSTALLED" ] && return 0
+
if checkbootparam 'nolvm' ; then
ewarn "Skipping LVM code as requested on boot commandline." ; eend 0
else
fi
fi # check for lvm binary
fi # check for bootoption nolvm
- fi # run only in live-cd mode
}
# }}}