#!/bin/sh # console Loads console font and keyboard table # # chkconfig: 2345 70 30 # # description: Loads the console font, the application-charset map \ # and the keyboard table. # This must be executed *after* /usr is mounted. # This means, if /usr is NFS-mounted it needs to # be run after networking and NFS mounts are up. [ -f /etc/sysconfig/console ] || exit 0 [ -f /bin/loadkeys -o -f /usr/bin/loadkeys ] || exit 0 [ -f /bin/setfont -o -f /usr/bin/setfont ] || exit 0 # Source function library . /etc/rc.d/init.d/functions if is_yes "$VSERVER"; then exit 0 fi upstart_controlled [ -f /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n . /etc/sysconfig/console start() { # Checking if we have framebuffer enabled if [ -f /proc/fb ]; then # /proc shows as files with size=0, this is workaround if cat /proc/fb | grep -q "."; then FB=yes; fi fi if [ -n "$SVGATEXTMODE" ]; then run_cmd "Setting Text Mode $SVGATEXTMODE" SVGATextMode $SVGATEXTMODE fi # Check for devfs (workaround: -a option doesn't work at all) local devpath tty cons if [ -d /dev/vc ]; then devpath="/dev/vc/" else devpath="/dev/tty" fi # save old tty number tty=$(/usr/bin/tty) if [ "$?" -ne 0 -o "$tty" = "/dev/console" ]; then tty=1 else tty=${tty#$devpath} fi if [ -n "$CONSOLEFONT" -a -x /sbin/setsysfont ]; then show "Loading console font and map" busy # don't initialize on multiple terminals if we use fbset # (assume that, in this case fb is loaded as a module) if [ ! -z "$FB" ]; then if [ -z "$SET_FONT_TERMINALS" ]; then # check if devfs (workaround: -a option doesn't work at all) if [ -d /dev/vc ]; then SET_FONT_TERMINALS=$(ls /dev/vc/) else SET_FONT_TERMINALS=$(awk -F: '/^[0-9]*:/{print $1}' /etc/inittab) fi fi for cons in $SET_FONT_TERMINALS; do /usr/bin/open -c $cons -s -w -- /sbin/setsysfont if [ "$NUM_LOCK" ]; then if [ $NUM_LOCK = "on" ]; then /usr/bin/open -c $cons -s -w -- /usr/bin/setleds -D +num else /usr/bin/open -c $cons -s -w -- /usr/bin/setleds -D -num fi fi done if [[ "$tty" = [0-9]* ]]; then /usr/bin/switchto $tty fi else for cons in $SET_FONT_TERMINALS; do /usr/bin/open -c $cons -s -w -- /sbin/setsysfont done fi ok fi if [ -n "$KEYTABLE" ]; then if [ "$(LANG="$LANG" locale charmap)" = "UTF-8" ]; then run_cmd "Loading keyboard table" loadkeys -u $KEYTABLE < /dev/tty0 > /dev/tty0 else run_cmd "Loading keyboard table" loadkeys $KEYTABLE < /dev/tty0 > /dev/tty0 fi fi run_cmd "Enabling SAK sequence" /bin/sh -c "echo Control Alt keycode 101 = SAK | loadkeys" power_option="" if ! is_no "$POWER_SAVE"; then if [ "$BLANK_TIME" ]; then power_option="-blank $BLANK_TIME"; fi if [ "$POWERDOWN_TIME" ]; then power_option="-powerdown $POWERDOWN_TIME $power_option"; fi else power_option="-blank 0 -powerdown 0 -powersave off"; fi setterm_option="$power_option" if [ "$FOREGROUND_COLOUR" ]; then setterm_option="$setterm_option -foreground $FOREGROUND_COLOUR" fi if [ "$BACKGROUND_COLOUR" ]; then setterm_option="$setterm_option -background $BACKGROUND_COLOUR" fi if [ "$BEEP_LENGTH" ]; then setterm_option="$setterm_option -blength $BEEP_LENGTH" fi if [ "$BEEP_FREQ" ]; then setterm_option="$setterm_option -bfreq $BEEP_FREQ" fi setterm_option="$setterm_option -store" for cons in $SET_FONT_TERMINALS; do /usr/bin/open -c $cons -s -w -- /usr/bin/setterm $setterm_option done if [[ "$tty" = [0-9]* ]]; then /usr/bin/switchto $tty fi touch /var/lock/subsys/console } RETVAL=0 case "$1" in start) if [ ! -f /var/lock/subsys/console ]; then start fi ;; restart) start ;; try-restart) if [ -f /var/lock/subsys/console ]; then start fi ;; reload|force-reload) if [ -f /var/lock/subsys/console ]; then start else RETVAL=7 fi ;; stop) if [ -f /var/lock/subsys/console ]; then run_cmd "Setting terminals to default values" /usr/bin/setterm -default rm -f /var/lock/subsys/console fi ;; status) /usr/bin/setleds ;; *) msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|status}" exit 3 esac exit $RETVAL