X-Git-Url: https://git.grml.org/?p=grml-autoconfig.git;a=blobdiff_plain;f=autoconfig.functions;h=ef31f1a633e4f87d1082ba655d1de2c0be5fc3e2;hp=3cc12ee3ca8d9b067c2c03c8fe4a888b3f6ac552;hb=037fd7068c07a73a81bb0cb11e67347ab6d5ec48;hpb=34be1a5b46d770b134219692d080aa7f82070c09 diff --git a/autoconfig.functions b/autoconfig.functions index 3cc12ee..ef31f1a 100755 --- a/autoconfig.functions +++ b/autoconfig.functions @@ -176,7 +176,7 @@ if checkbootparam 'log' || checkbootparam 'debug' ; then einfo "Bootparameter log found. Log files: ${DEBUG} and /var/log/boot" eindent einfo "Starting bootlogd." # known to be *very* unreliable :( - bootlogd -r -c 1>>$DEBUG 2>&1 ; eend $? + bootlogd -r -c >>$DEBUG 2>&1 ; eend $? eoutdent else DEBUG="/dev/null" @@ -189,7 +189,7 @@ config_fwtimeout(){ if checkbootparam 'fwtimeout' ; then TIMEOUT="$(getbootparam 'fwtimeout' 2>>$DEBUG)" einfo "Bootoption fwtimeout found. (Re)Loading firmware_class module." - rmmod firmware_class 1>>$DEBUG 2>&1 + rmmod firmware_class >>$DEBUG 2>&1 modprobe firmware_class ; eend $? fi if [ -z "$TIMEOUT" ] ; then @@ -208,16 +208,14 @@ config_language(){ einfo "Activating language settings:" eindent - # people can specify $LANGUAGE and $CONSOLEFONT in a config file: + # people can specify $LANGUAGE and $CONSOLEFONT in a config file [ -r /etc/grml/autoconfig ] && . /etc/grml/autoconfig - grep -q ' lang=.*-utf8' /proc/cmdline && UTF8='yes' || UTF8='' - - # check for bootoption which overrides config from /etc/grml/autoconfig: + # check for bootoption which overrides config from /etc/grml/autoconfig BOOT_LANGUAGE="$(getbootparam 'lang' 2>>$DEBUG)" [ -n "$BOOT_LANGUAGE" ] && LANGUAGE="$BOOT_LANGUAGE" - # set default to 'en' in live-cd mode if $LANGUAGE is not yet set: + # set default to 'en' in live-cd mode iff $LANGUAGE is not set yet if [ -z "$INSTALLED" ] ; then [ -n "$LANGUAGE" ] || LANGUAGE='en' fi @@ -235,8 +233,6 @@ config_language(){ # set console font if [ -z "$CONSOLEFONT" ] ; then if ! checkbootparam 'nodefaultfont' >>$DEBUG 2>&1 ; then - # [ -n "$UTF8" ] && CONSOLEFONT='LatArCyrHeb-16' || CONSOLEFONT='Lat15-Terminus16' - # if [ -r /usr/share/consolefonts/Lat15-Terminus16.psf.gz ] ; then if [ -r /usr/share/consolefonts/Uni3-Terminus16.psf.gz ] ; then CONSOLEFONT='Uni3-Terminus16' else @@ -683,7 +679,7 @@ else eindent einfo "$(discover --data-path=linux/module/name --data-path=linux/modules/options --format="%s %s" --data-version=`uname -r` --enable-bus all | sort -u | xargs echo)" eoutdent - /sbin/discover-modprobe -v 1>>$DEBUG 2>&1 & + /sbin/discover-modprobe -v >>$DEBUG 2>&1 & eend 0 else eerror "Application discover not available. Information: udev should handle hardware recognition." ; eend 0 @@ -740,11 +736,11 @@ if checkbootparam 'nohotplug' ; then else if [ -r /etc/init.d/hotplug ] ; then einfo "Starting hotplug system in background." - /etc/init.d/hotplug start 1>>$DEBUG 2>>$DEBUG & + /etc/init.d/hotplug start >>$DEBUG 2>>$DEBUG & eend 0 elif [ -r /etc/init.d/hotplug-light ] ; then einfo "Starting hotplug-light system in background." - /etc/init.d/hotplug-light start 1>>$DEBUG 2>>$DEBUG & + /etc/init.d/hotplug-light start >>$DEBUG 2>>$DEBUG & eend 0 else ewarn "No hotplug system found. Should be handled by udev. Skipping execution." ; eend 0 @@ -809,7 +805,7 @@ if [ -d /proc/acpi ]; then if ! ps x | grep -q /usr/sbin/acpid ; then if ! [ -r /var/run/dbus/pid ] ; then einfo "Starting acpi daemon." - /etc/init.d/acpid start 1>>$DEBUG 2>&1 ; eend $? + /etc/init.d/acpid start >>$DEBUG 2>&1 ; eend $? else eerror "acpid error: it seems you are running d-bus/hal, but acpid needs to be started before d-bus." eerror "Solution: please activate acpid via /etc/runlevel.conf" @@ -1086,7 +1082,7 @@ done </dev/null 2>&1 # avoid output "check_partitions:3: read-only file system" +check_partitions >/dev/null 2>&1 # avoid output "check_partitions:3: read-only file system" # }}} # {{{ Enable DMA for all IDE drives now if not disabled @@ -1297,59 +1293,6 @@ fi } # }}} -# {{{ helper functions -findfile(){ -FOUND="" -# search all partitions for a file in the root directory -for i in /mnt/[sh]d[a-z] /mnt/[sh]d[a-z][1-9] /mnt/[sh]d[a-z][1-9]?*; do -# See if it's already mounted - [ -f "$i/$1" ] && { echo "$i/$1"; return 0; } - if [ -d "$i" ] && mount -r "$i" 2>>$DEBUG; then - [ -f "$i/$1" ] && FOUND="$i/$1" - umount -l "$i" 2>>$DEBUG - [ -n "$FOUND" ] && { echo "$FOUND"; return 0; } - fi -done -return 2 -} - -fstype(){ -case "$(file -s $1)" in - *[Ff][Aa][Tt]*|*[Xx]86*) echo "vfat"; return 0;; - *[Rr][Ee][Ii][Ss][Ee][Rr]*) echo "reiserfs"; return 0;; - *[Xx][Ff][Ss]*) echo "xfs"; return 0;; - *[Ee][Xx][Tt]3*) echo "ext3"; return 0;; - *[Ee][Xx][Tt]2*) echo "ext2"; return 0;; - *data*) echo "invalid"; return 0;; - *) echo "auto"; return 0;; -esac -} - -# Try to mount this filesystem read-only, without or with encryption -trymount(){ -# Check if already mounted -case "$(cat /proc/mounts)" in *\ $2\ *) return 0;; esac -# Apparently, mount-aes DOES autodetect AES loopback files. -[ -b "$1" ] && { mount -t auto -o ro "$1" "$2" 2>>$DEBUG; RC="$?"; } -# We need to mount crypto-loop files with initial rw support -[ -f "$1" ] && { mount -t auto -o loop,rw "$1" "$2" 2>>$DEBUG; RC="$?"; } -# Mount succeeded? -[ "$RC" = "0" ] && return 0 -echo "" -einfo "Filesystem not autodetected, trying to mount $1 with AES256 encryption." -a="y" -while [ "$a" != "n" -a "$a" != "N" ]; do -# We need to mount crypto-loop files with initial rw support - mount -t auto -o loop,rw,encryption=AES256 "$1" "$2" && return 0 - echo -n "${RED}Mount failed, retry? [Y/n] ${NORMAL}" - # Problem with ioctl() from getpasswd()? - # read a - read a -done -return 1 -} -# }}} - # {{{ CPU-detection config_cpu(){ if checkbootparam 'nocpu'; then @@ -1421,16 +1364,17 @@ else . /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 + modprobe "$MODULE" >>$DEBUG || modprobe "$MODULE_FALLBACK" >>$DEBUG RC=$? if [[ $RC == 0 ]]; then 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 @@ -1492,8 +1436,8 @@ if checkbootparam 'ssh' ; then fi einfo 'Starting secure shell server in background.' - /etc/init.d/rmnologin start 1>>$DEBUG 2>>$DEBUG - /etc/init.d/ssh start 1>>$DEBUG 2>>$DEBUG & + /etc/init.d/rmnologin start >>$DEBUG 2>>$DEBUG + /etc/init.d/ssh start >>$DEBUG 2>>$DEBUG & eend $? eindent @@ -1573,84 +1517,8 @@ fi # {{{ Check for persistent homedir option and eventually mount /home from there, or use a loopback file. config_homedir(){ if checkbootparam 'home' ; then - HOMEDIR="$(getbootparam 'home')" - MYHOMEDEVICE="" - MYHOMEMOUNTPOINT="" - MYHOMEDIR="" - if [ -n "$HOMEDIR" ]; then - einfo "Bootoption home detected." && eend 0 - case "$HOMEDIR" in - /dev/*) - MYHOMEDEVICE="${HOMEDIR##/dev/}" - MYHOMEDEVICE="/dev/${MYHOMEDEVICE%%/*}" - MYHOMEMOUNTPOINT="/mnt/${MYHOMEDEVICE##/dev/}" - MYHOMEDIR="/mnt/${HOMEDIR##/dev/}" - ;; - /mnt/*) - MYHOMEDEVICE="${HOMEDIR##/mnt/}" - MYHOMEDEVICE="/dev/${MYHOMEDEVICE%%/*}" - MYHOMEMOUNTPOINT="/mnt/${MYHOMEDEVICE##/dev/}" - MYHOMEDIR="$HOMEDIR" - ;; - [Aa][Uu][Tt][Oo]|[Ss][Cc][Aa][Nn]|[Ff][Ii][Nn][Dd]) - MYHOMEDIR="$(findfile grml.img)" - MYHOMEDEVICE="${MYHOMEDIR##/mnt/}" - MYHOMEDEVICE="/dev/${MYHOMEDEVICE%%/*}" - MYHOMEMOUNTPOINT="/mnt/${MYHOMEDEVICE##/dev/}" - ;; - *) - eerror "Invalid home= option '$HOMEDIR' specified (must start with /dev/ or /mnt/ or 'scan')." ; eend 1 - eerror "Option ignored." ; eend 1 - ;; - esac - fi # -n $HOMEDIR - - if [ -n "$MYHOMEDIR" ]; then - if trymount "$MYHOMEDEVICE" "$MYHOMEMOUNTPOINT"; then - [ -f "$MYHOMEMOUNTPOINT/grml.img" ] && MYHOMEDIR="$MYHOMEMOUNTPOINT/grml.img" - while read device mountpoint fs relax; do - case "$mountpoint" in *$MYHOMEMOUNTPOINT*) - case "$fs" in - *[Nn][Tt][Ff][Ss]*) - umount "$MYHOMEMOUNTPOINT"; eerror "Error: will not mount NTFS filesystem on $MYHOMEDEVICE read/write!" ; eend 1 - break - ;; - *[Ff][Aa][Tt]*) - # Note: This currently won't work with encrypted partitions - umount "$MYHOMEMOUNTPOINT"; mount -t vfat -o rw,uid=grml,gid=grml,umask=002 "$MYHOMEDEVICE" "$MYHOMEMOUNTPOINT" - if [ ! -f "$MYHOMEDIR" ]; then - ewarn "WARNING: FAT32 is not a good filesystem option for /home/grml (missing socket/symlink support)." - ewarn "WARNING: Better use an ext2 loopback file on this device, and boot with home=$MYHOMEDEVICE/grml.img." - fi - ;; - esac - - if mount -o remount,rw "$MYHOMEMOUNTPOINT"; then - einfo "Mounting ${WHITE}$MYHOMEDIR${NORMAL} as ${WHITE}/home/grml${NORMAL}." - if [ -f "$MYHOMEDIR" ]; then - # It's a loopback file, mount it over the /home/grml directory - trymount "$MYHOMEDIR" /home/grml - RC="$?" - [ "$RC" = "0" ] && ERROR="$(mount -o remount,rw /home/grml 2>&1)" - RC="$?" - else - # Do a --bind mount - ERROR="$(mount --bind "$MYHOMEDIR" /home/grml 2>&1)" - RC="$?" - fi # -f $MYHOMEDIR - - [ "$RC" = "0" ] && eend 0 || ( eerror "${ERROR}" ; eend 1 ) - - fi # mount -o remount,rw,... - break - ;; - esac # case "$mountpoint" in *$MYHOMEMOUNTPOINT*) - done </dev/null 2>>$DEBUG ; then + if amixer -q get Front >/dev/null 2>>$DEBUG ; then amixer -q set Front unmute &>/dev/null amixer -q set Front ${VOL}% &>/dev/null fi @@ -1829,7 +1697,7 @@ config_syslog(){ eerror "No syslog daemon found." ; eend 1 else einfo "Starting $SYSLOGD in background." - /etc/init.d/$SYSLOGD start 1>>$DEBUG & + /etc/init.d/$SYSLOGD start >>$DEBUG & eend 0 fi fi @@ -1845,8 +1713,8 @@ config_gpm(){ eerror "No mouse found - not starting GPM." ; eend 1 else einfo "Starting gpm in background." - /etc/init.d/gpm start 1>>$DEBUG & - # ( while [ ! -e /dev/psaux ]; do sleep 5; done; /etc/init.d/gpm start 1>>$DEBUG ) & + /etc/init.d/gpm start >>$DEBUG & + # ( while [ ! -e /dev/psaux ]; do sleep 5; done; /etc/init.d/gpm start >>$DEBUG ) & eend 0 fi fi @@ -1861,7 +1729,7 @@ config_services(){ SERVICENL=$(echo "$SERVICE" | sed 's/,/ /g') einfo "Starting service(s) ${SERVICENL} in background." for service in $(echo -e $SERVICELIST) ; do - /etc/init.d/${service} start 1>>$DEBUG & + /etc/init.d/${service} start >>$DEBUG & done [ "$?" == "0" ] ; eend $? fi @@ -1976,7 +1844,7 @@ if checkbootparam 'startx' && ! echo "$CMDLINE" | grep -q 'startx.*nostartx' ; t cat>|/etc/init.d/xstartup<>$DEBUG +sudo -u $fstabuser -i /usr/bin/grml-x $WINDOWMANAGER >>$DEBUG EOF chmod 755 /etc/init.d/xstartup @@ -2042,8 +1910,8 @@ else # We do need the following fix so floppy disk is available to blkid in any case :-/ if [ -r /dev/fd0 ] ; then einfo "Floppy device detected. Trying to access floppy disk." - if timeout 4 dd if=/dev/fd0 of=/dev/null bs=512 count=1 1>>$DEBUG 2>&1 ; then - blkid /dev/fd0 1>>$DEBUG 2>&1 + if timeout 4 dd if=/dev/fd0 of=/dev/null bs=512 count=1 >>$DEBUG 2>&1 ; then + blkid /dev/fd0 >>$DEBUG 2>&1 fi fi DCSDEVICE=$(blkid -t LABEL=GRMLCFG | head -1 | awk -F: '{print $1}') @@ -2064,7 +1932,7 @@ else ewarn "$DCSDEVICE already mounted on $DCSDIR"; eend 0 else [ -d $DCSMP ] || mkdir $DCSMP - umount $DCSMP 1>>$DEBUG 2>&1 # make sure it is not mounted + umount $DCSMP >>$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 $DCSMP (readonly)." ; eend 0 @@ -2248,7 +2116,7 @@ if checkbootparam 'distcc' ; then ) einfo "Starting distcc for network ${NET}, listening on ${IP}." - /etc/init.d/distcc start 1>/dev/null ; eend $? + /etc/init.d/distcc start >/dev/null ; eend $? eoutdent else eerror "No ip address for $INTERFACE found. distcc can not be used without it." ; eend 1 @@ -2435,6 +2303,10 @@ config_dmraid(){ for line in $(dmraid $1 ; echo errcode:$?); do case $line in + *'no block devices found'*) + einfo "No block devices found" ; eend 0 + break + ;; *'no raid disks'*) einfo "No active dmraid devices found" ; eend 0 break @@ -2487,7 +2359,7 @@ config_lvm(){ if ! [ -x /sbin/lvm -a -x /sbin/lvdisplay ] || ! [ -x /etc/init.d/lvm2 -o -x /etc/init.d/lvm ] ; then eerror "LVM not available, can not execute it." ; eend 1 else - if lvdisplay 2>&1 | grep -v 'No volume groups found' 1>/dev/null 2>&1 ; then + if lvdisplay 2>&1 | grep -v 'No volume groups found' >/dev/null 2>&1 ; then einfo "You seem to have logical volumes (LVM) on your system." eindent einfo "Just run 'Start lvm2' to activate them or boot using 'lvm' as bootoption for autostart." @@ -2513,7 +2385,7 @@ if checkbootparam 'debnet' ; then einfo "Bootoption 'debnet' found. Searching for Debian network configuration: " eindent - if ! mount | grep '/mnt ' 1>/dev/null 2>&1 ; then + if ! mount | grep '/mnt ' >/dev/null 2>&1 ; then for i in $DEVICES; do if mount -o ro -t auto "$i" /mnt >/dev/null 2>&1; then einfo "Scanning on $i" @@ -2528,8 +2400,8 @@ if checkbootparam 'debnet' ; then if [ -n "$FOUND_DEBNET" ]; then einfo "Stopping network." - pump -k 1>/dev/null 2>&1 - /etc/init.d/networking stop 1>/dev/null 2>&1 ; eend $? + pump -k >/dev/null 2>&1 + /etc/init.d/networking stop >/dev/null 2>&1 ; eend $? einfo "Copying Debian network configuration from $FOUND_DEBNET to running system." rm -rf /etc/network/run cp -a /mnt/etc/network /etc