[ -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
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
eend 0
else
SKIP_CPU_GOVERNOR=1
- eend $1
+ eend $RC
fi
else
- ewarn "Could not detect an appropriate CPU for use with cpu frequency scaling - skipping." && eend 1
+ ewarn "Could not detect an appropriate CPU for use with cpu frequency scaling - skipping."
+ eend 1
fi # $MODULE
fi # loadcpufreq
}
# }}}
+# {{{ 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
# {{{ 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
}
# }}}