X-Git-Url: https://git.grml.org/?p=grml-autoconfig.git;a=blobdiff_plain;f=autoconfig.functions;h=883231bbe5e9c3123f5c69c1bcc52b6d8bc8d95d;hp=b71e69d6294519dd090486b4be6dc226358094cf;hb=86279cdec69f44dce191edb0fa9a056cf65d1e24;hpb=c820a66a697b8a4bf9d250382de10feeb38f0617 diff --git a/autoconfig.functions b/autoconfig.functions index b71e69d..883231b 100755 --- a/autoconfig.functions +++ b/autoconfig.functions @@ -13,12 +13,10 @@ KERNEL="$(uname -r)" ARCH="$(uname -m)" umask 022 -# old linuxrc version: -[ -d /cdrom ] && export LIVECD_PATH=/cdrom -# initramfs layout until around December 2012: -[ -d /live/image ] && export LIVECD_PATH=/live/image -# initramfs layout since around December 2012: -[ -d /lib/live/mount/medium ] && export LIVECD_PATH=/lib/live/mount/medium +# initramfs layout since December 2012, backwards compatibility: +[ -d /lib/live/mount/medium ] && export LIVECD_PATH='/lib/live/mount/medium' +# initramfs layout since December 2018: +[ -d /run/live/medium ] && export LIVECD_PATH='/run/live/medium' # Ignore these signals in non-interactive mode: INT, TERM, SEGV [ -z "$PS1" ] && trap "" 2 3 11 @@ -229,166 +227,190 @@ fi ### {{{ language configuration / localization config_language(){ - einfo "Activating language settings:" - eindent + einfo "Activating language settings:" + eindent - # people can specify $LANGUAGE and $CONSOLEFONT in a config file - [ -r /etc/grml/autoconfig ] && . /etc/grml/autoconfig + # people can specify $LANGUAGE and $CONSOLEFONT in a config file + [ -r /etc/grml/autoconfig ] && . /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" + # 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 iff $LANGUAGE is not set yet - if [ -z "$INSTALLED" ] ; then + # set default to 'en' in live-cd mode iff $LANGUAGE is not set yet + if [ -z "$INSTALLED" ] ; then [ -n "$LANGUAGE" ] || LANGUAGE='en' - fi + fi - if [ -x /usr/sbin/grml-setlang ] ; then - # if bootoption lang is used update /etc/default/locale accordingly - if [ -n "$BOOT_LANGUAGE" ] ; then - /usr/sbin/grml-setlang "$LANGUAGE" - # otherwise default to lang=en - else - /usr/sbin/grml-setlang "en" - fi - fi + if [ -x /usr/sbin/grml-setlang ] ; then + # if bootoption lang is used update /etc/default/locale accordingly + if [ -n "$BOOT_LANGUAGE" ] ; then + /usr/sbin/grml-setlang "$LANGUAGE" + # otherwise default to lang=en + else + /usr/sbin/grml-setlang "en" + fi + fi - # set console font - if [ -z "$CONSOLEFONT" ] ; then - if ! checkbootparam 'nodefaultfont' >>$DEBUG 2>&1 ; then - if [ -r /usr/share/consolefonts/Uni3-Terminus16.psf.gz ] ; then + if ! $SYSTEMD ; then + # set console font + if [ -z "$CONSOLEFONT" ] ; then + if ! checkbootparam 'nodefaultfont' >>$DEBUG 2>&1 ; then + if [ -r /usr/share/consolefonts/Uni3-Terminus16.psf.gz ] ; then CONSOLEFONT='Uni3-Terminus16' - else + else ewarn "/usr/share/consolefonts/Uni3-Terminus16.psf.gz not available. Please upgrade package console-terminus." ; eend 1 - fi - if ! hasfb ; then + fi + if ! hasfb ; then CONSOLEFONT='Lat15-Terminus16' - fi + fi + fi fi - fi + fi # not running systemd - # export it now, so error messages get translated, too - [ -r /etc/default/locale ] && . /etc/default/locale - export LANG LANGUAGE - - # configure keyboard layout, read in already set values first: - [ -r /etc/sysconfig/keyboard ] && . /etc/sysconfig/keyboard - - # now allow keyboard override by boot commandline for later use: - KKEYBOARD="$(getbootparam 'keyboard' 2>>$DEBUG)" - [ -n "$KKEYBOARD" ] && KEYTABLE="$KKEYBOARD" - # notce: de/at is a bad choice, so take de-latin1-nodeadkeys instead: - [[ "$KKEYBOARD" == 'de' ]] && KEYTABLE=de-latin1-nodeadkeys - [[ "$KKEYBOARD" == 'at' ]] && KEYTABLE=de-latin1-nodeadkeys - - # modify /etc/sysconfig/keyboard only in live-cd mode: - if [ -z "$INSTALLED" ] ; then - - local LANGUAGE="$BOOT_LANGUAGE" - . /etc/grml/language-functions - # allow setting xkeyboard explicitly different than console keyboard - KXKEYBOARD="$(getbootparam 'xkeyboard' 2>>$DEBUG)" - if [ -n "$KXKEYBOARD" ]; then - XKEYBOARD="$KXKEYBOARD" - KDEKEYBOARD="$KXKEYBOARD" - elif [ -n "$KKEYBOARD" ]; then - XKEYBOARD="$KKEYBOARD" - KDEKEYBOARD="$KKEYBOARD" - fi + # export it now, so error messages get translated, too + [ -r /etc/default/locale ] && . /etc/default/locale + export LANG LANGUAGE - # duplicate of previous code to make sure /etc/grml/language-functions - # does not overwrite our values.... - # now allow keyboard override by boot commandline for later use: - KKEYBOARD="$(getbootparam 'keyboard' 2>>$DEBUG)" - [ -n "$KKEYBOARD" ] && KEYTABLE="$KKEYBOARD" - # notce: de/at is a bad choice, so take de-latin1-nodeadkeys instead: - [[ "$KKEYBOARD" == 'de' ]] && KEYTABLE=de-latin1-nodeadkeys - [[ "$KKEYBOARD" == 'at' ]] && KEYTABLE=de-latin1-nodeadkeys - - # write keyboard related variables to file for later use - [ -d /etc/sysconfig ] || mkdir /etc/sysconfig - if ! [ -e /etc/sysconfig/keyboard ] ; then - echo "KEYTABLE=\"$KEYTABLE\"" > /etc/sysconfig/keyboard - echo "XKEYBOARD=\"$XKEYBOARD\"" >> /etc/sysconfig/keyboard - echo "KDEKEYBOARD=\"$KDEKEYBOARD\"" >> /etc/sysconfig/keyboard - echo "KDEKEYBOARDS=\"$KDEKEYBOARDS\"" >> /etc/sysconfig/keyboard - fi - fi + if $SYSTEMD ; then + local KEYBOARD + KEYBOARD="$(getbootparam 'keyboard' 2>>$DEBUG)" + [ -n "$KEYBOARD" ] || KEYBOARD="$LANGUAGE" + # "symbols/en" doesn't exist, so rewrite to "us" + [[ "$KEYBOARD" == 'en' ]] && KEYBOARD="us" + + if [ -r /etc/default/keyboard ] ; then + sed -i "s/^XKBLAYOUT=.*/XKBLAYOUT=\"$KEYBOARD\"/" /etc/default/keyboard + + case "$KEYBOARD" in + de|at) + sed -i "s/^XKBVARIANT=.*/XKBVARIANT=\"nodeadkeys\"/" /etc/default/keyboard + ;; + esac - [ -r /etc/sysconfig/keyboard ] && . /etc/sysconfig/keyboard + fi + service_wrapper console-setup restart >>$DEBUG 2>&1 ; eend $? + else # not running systemd, keeing for backwards compatibility: + # configure keyboard layout, read in already set values first: + [ -r /etc/sysconfig/keyboard ] && . /etc/sysconfig/keyboard + + # now allow keyboard override by boot commandline for later use: + KKEYBOARD="$(getbootparam 'keyboard' 2>>$DEBUG)" + [ -n "$KKEYBOARD" ] && KEYTABLE="$KKEYBOARD" + # notce: de/at is a bad choice, so take de-latin1-nodeadkeys instead: + [[ "$KKEYBOARD" == 'de' ]] && KEYTABLE=de-latin1-nodeadkeys + [[ "$KKEYBOARD" == 'at' ]] && KEYTABLE=de-latin1-nodeadkeys + + # modify /etc/sysconfig/keyboard only in live-cd mode: + if [ -z "$INSTALLED" ] ; then + + local LANGUAGE="$BOOT_LANGUAGE" + . /etc/grml/language-functions + # allow setting xkeyboard explicitly different than console keyboard + KXKEYBOARD="$(getbootparam 'xkeyboard' 2>>$DEBUG)" + if [ -n "$KXKEYBOARD" ]; then + XKEYBOARD="$KXKEYBOARD" + KDEKEYBOARD="$KXKEYBOARD" + elif [ -n "$KKEYBOARD" ]; then + XKEYBOARD="$KKEYBOARD" + KDEKEYBOARD="$KKEYBOARD" + fi + # duplicate of previous code to make sure /etc/grml/language-functions + # does not overwrite our values.... + # now allow keyboard override by boot commandline for later use: + KKEYBOARD="$(getbootparam 'keyboard' 2>>$DEBUG)" + [ -n "$KKEYBOARD" ] && KEYTABLE="$KKEYBOARD" + # notce: de/at is a bad choice, so take de-latin1-nodeadkeys instead: + [[ "$KKEYBOARD" == 'de' ]] && KEYTABLE=de-latin1-nodeadkeys + [[ "$KKEYBOARD" == 'at' ]] && KEYTABLE=de-latin1-nodeadkeys + + # write keyboard related variables to file for later use + [ -d /etc/sysconfig ] || mkdir /etc/sysconfig + if ! [ -e /etc/sysconfig/keyboard ] ; then + echo "KEYTABLE=\"$KEYTABLE\"" > /etc/sysconfig/keyboard + echo "XKEYBOARD=\"$XKEYBOARD\"" >> /etc/sysconfig/keyboard + echo "KDEKEYBOARD=\"$KDEKEYBOARD\"" >> /etc/sysconfig/keyboard + echo "KDEKEYBOARDS=\"$KDEKEYBOARDS\"" >> /etc/sysconfig/keyboard + fi + fi - # we have to set up all consoles, therefore loop it over all ttys: - NUM_CONSOLES=$(fgconsole --next-available 2>/dev/null) - if [ -n "$NUM_CONSOLES" ] ; then - NUM_CONSOLES=$(expr ${NUM_CONSOLES} - 1) - [ ${NUM_CONSOLES} -eq 1 ] && NUM_CONSOLES=6 - fi - CUR_CONSOLE=$(fgconsole 2>/dev/null) + [ -r /etc/sysconfig/keyboard ] && . /etc/sysconfig/keyboard + fi - if [ -x "$(which setfont)" ] ; then - use_setfont=true - elif [ -x "$(which consolechars)" ] ; then - use_consolechars=true - else - eerror "Neither setfont nor consolechars tool present, can not set font." - eend 1 - return 1 - fi - if [ -n "$CHARMAP" ] ; then - einfo "Setting font to ${CHARMAP}" - RC=0 - for vc in $(seq 0 ${NUM_CONSOLES}) ; do + if ! $SYSTEMD ; then + # we have to set up all consoles, therefore loop it over all ttys: + NUM_CONSOLES=$(fgconsole --next-available 2>/dev/null) + if [ -n "$NUM_CONSOLES" ] ; then + NUM_CONSOLES=$(expr ${NUM_CONSOLES} - 1) + [ ${NUM_CONSOLES} -eq 1 ] && NUM_CONSOLES=6 + fi + CUR_CONSOLE=$(fgconsole 2>/dev/null) + + if [ -x "$(which setfont)" ] ; then + use_setfont=true + elif [ -x "$(which consolechars)" ] ; then + use_consolechars=true + else + eerror "Neither setfont nor consolechars tool present, can not set font." + eend 1 + return 1 + fi + + if [ -n "$CHARMAP" ] ; then + einfo "Setting font to ${CHARMAP}" + RC=0 + for vc in $(seq 0 ${NUM_CONSOLES}) ; do if $use_setfont ; then setfont -C /dev/tty${vc} $CHARMAP ; RC=$? elif $use_consolechars ; then consolechars --tty=/dev/tty${vc} -m ${CHARMAP} ; RC=$? fi - done - if [ -n "$CUR_CONSOLE" ] ; then - [ "$CUR_CONSOLE" != "serial" ] && chvt $CUR_CONSOLE + done + if [ -n "$CUR_CONSOLE" ] ; then + [ "$CUR_CONSOLE" != "serial" ] && chvt $CUR_CONSOLE + fi + eend $RC fi - eend $RC - fi - if checkbootparam 'noconsolefont' ; then - ewarn "Skipping setting console font as requested on boot commandline." ; eend 0 - else - if [ -n "$CONSOLEFONT" ] ; then - einfo "Setting font to ${CONSOLEFONT}" - RC=0 - for vc in $(seq 0 ${NUM_CONSOLES}) ; do - if $use_setfont ; then - setfont -C /dev/tty${vc} ${CONSOLEFONT} ; RC=$? - elif $use_consolechars ; then - consolechars --tty=/dev/tty${vc} -f ${CONSOLEFONT} ; RC=$? - fi - done - if [ -n "$CUR_CONSOLE" ] ; then + if checkbootparam 'noconsolefont' ; then + ewarn "Skipping setting console font as requested on boot commandline." ; eend 0 + else + if [ -n "$CONSOLEFONT" ] ; then + einfo "Setting font to ${CONSOLEFONT}" + RC=0 + for vc in $(seq 0 ${NUM_CONSOLES}) ; do + if $use_setfont ; then + setfont -C /dev/tty${vc} ${CONSOLEFONT} ; RC=$? + elif $use_consolechars ; then + consolechars --tty=/dev/tty${vc} -f ${CONSOLEFONT} ; RC=$? + fi + done + if [ -n "$CUR_CONSOLE" ] ; then [ "$CUR_CONSOLE" != "serial" ] && chvt $CUR_CONSOLE - fi - eend $RC + fi + eend $RC + fi fi - fi - # Set default keyboard before interactive setup - if [ -n "$KEYTABLE" ] ; then - einfo "Running loadkeys for ${WHITE}${KEYTABLE}${NORMAL} in background" - loadkeys -q $KEYTABLE & - eend $? - fi + # Set default keyboard before interactive setup + if [ -n "$KEYTABLE" ] ; then + einfo "Running loadkeys for ${WHITE}${KEYTABLE}${NORMAL} in background" + loadkeys -q $KEYTABLE & + eend $? + fi - # activate unicode console if running within utf8 environment - if [ -r /etc/default/locale ] ; then - if grep -q "LANG=.*UTF" /etc/default/locale ; then - einfo "Setting up unicode environment." - unicode_start ; eend $? + # activate unicode console if running within utf8 environment + if [ -r /etc/default/locale ] ; then + if grep -q "LANG=.*UTF" /etc/default/locale ; then + einfo "Setting up unicode environment." + unicode_start ; eend $? + fi fi - fi + fi # not running systemd - eoutdent + eoutdent } # }}} @@ -757,7 +779,8 @@ fi # {{{ Start brltty config_brltty() { if checkbootparam 'brltty' ; then - [ -x /lib/brltty/brltty.sh ] && /lib/brltty/brltty.sh + einfo "Starting brltty service as requested on boot commandline." + service_wrapper brltty start ; eend $? fi } # }}} @@ -890,62 +913,6 @@ if [[ $(grep -c processor /proc/cpuinfo) -gt 1 ]] ; then else einfo "Found CPU: `awk -F: '/^processor/{printf " Processor"$2" is"};/^model name/{printf $2};/^vendor_id/{printf vendor};/^cpu MHz/{printf " %dMHz",int($2)};/^cache size/{printf ","$2" Cache"};/^$/{print ""}' /proc/cpuinfo 2>>$DEBUG` " ; eend 0 fi - -# no cpufreq setup inside VirtualBox -if $VIRTUALBOX ; then - einfo 'Virtual Box detected, skipping cpufreq setup.' ; eend 0 - return 0 -fi - -if ! [ -x /etc/init.d/loadcpufreq ] ; then - ewarn "loadcpufreq init script not available, ignoring cpu frequency scaling." - eend 0 - return 0 -else - einfo "Trying to set up cpu frequency scaling:" - eindent - 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=$'\n' - 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 - SKIP_CPU_GOVERNOR=1 - ewarn "Could not find an appropriate kernel module for cpu frequency scaling." ; eend 1 - fi - fi - - rm -f "$LOADCPUFREQ" - - if [ -z "$SKIP_CPU_GOVERNOR" ] ; then - if [ -r /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors ] ; then - if ! grep -q ondemand /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors ; then - einfo "Ondemand governor not available for CPU(s), not modifying governor configuration" - else - einfo "Setting ondemand governor" - RC=0 - for file in $(find /sys/devices/system/cpu/ -name scaling_governor 2>/dev/null) ; do - echo ondemand > $file || RC=1 - done - eend $RC - fi - fi - fi - - eoutdent -fi } # }}} @@ -980,6 +947,7 @@ if checkbootparam 'ssh' ; then fi einfo "Starting secure shell server in background for root and user $localuser" + service_wrapper haveged start >>$DEBUG 2>>$DEBUG service_wrapper rmnologin start >>$DEBUG 2>>$DEBUG service_wrapper ssh start background >>$DEBUG 2>>$DEBUG eend $? @@ -1745,12 +1713,18 @@ config_lvm(){ fi eend 0 if checkbootparam 'lvm' ; then - einfo "Bootoption LVM found. Searching for logical volumes and enabling them:" if $SYSTEMD ; then - service_wrapper lvm2-lvmetad start - vgchange -ay - eend $? + einfo "Bootoption LVM found, enabling related services." + if [ -r /etc/init.d/lvm2-lvmetad ] ; then + service_wrapper lvm2-lvmetad start ; eend $? + fi + if [ -r /etc/init.d/lvm2-lvmpolld ] ; then + service_wrapper lvm2-lvmpolld start ; eend $? + fi + einfo "Searching for logical volumes and enabling them:" + vgchange -ay ; eend $? else + einfo "Bootoption LVM found. Searching for logical volumes and enabling them:" service_wrapper lvm2 start ; eend $? fi fi