#!/bin/sh # $Id$ # # fbset: Sets up fbcon video modes. # # # chkconfig: 2345 69 31 # description: fbset is a utility with which fbcons video modes can be read \ # and changed # # config: /etc/sysconfig/fbset # Source function library . /etc/rc.d/init.d/functions # Get service config if [ -f /etc/sysconfig/fbset ]; then . /etc/sysconfig/fbset fi function try_load { if [ -n "${FBMODULE}" ]; then _modprobe single $FBMODULE else exit 0 fi } # Setting default depth if [ -n "${DEPTH}" ]; then DEPTH_options="-depth ${DEPTH}" fi if [ -z "${FBDEV_NUM}" ]; then FBDEV_NUM=0 fi # See how we were called. case "$1" in start) # Check if service is already running? if [ ! -f /var/lock/subsys/fbset ]; then # Check if we have framebuffer in kernel. if [ -f /proc/fb ]; then # /proc files show as files with size=0, this is a workaround. cat /proc/fb | grep -q "." || try_load else # if not, then try to load specified kernel module try_load fi if [ -n "${FBMODE_default}" ]; then show "Setting default video mode" busy # check if devfs (workaround: -a option don't work at all) if [ -d /dev/vc ]; then if [ -z "$FBTERMINALS" ]; then FBTERMINALS=\ "`ls /dev/vc/* | sed 's|/dev/vc/||g'`" fi FBDEV=`echo /dev/fb/${FBDEV_NUM}` pattern="s/\/dev\/vc\///g" else if [ -z "$FBTERMINALS" ]; then FBTERMINALS=\ "`cat /etc/inittab | grep '^[0-9]*:' | cut -f1 -d:`" fi FBDEV=`echo /dev/fb${FBDEV_NUM}` pattern="s/\/dev\/tty//g" fi # save old tty number tty=`/usr/bin/tty | sed $pattern` for cons in $FBTERMINALS; do /usr/bin/con2fb $FBDEV $cons /usr/bin/switchto $cons /usr/bin/fbset -fb \ $FBDEV ${DEPTH_options} $FBMODE_default \ 0<>/dev/tty$cons >&0 2>&0 done [ $tty = "/dev/console" ] && tty=1 /usr/bin/switchto $tty ok fi touch /var/lock/subsys/fbset else msg_already_running fbset fi ;; stop) if [ -f /var/lock/subsys/fbset ]; then rm -f /var/lock/subsys/fbset else msg_not_running fbset fi ;; status) # Check if we have framebuffer in kernel. if [ -f /proc/fb ]; then # /proc files show as files with size=0, this is a workaround. cat /proc/fb | grep -q "." && nls "Frame buffer present." && exit 0 nls "Frame buffer not present." exit 3 else nls "Frame buffer not present." exit 3 fi ;; restart|force-reload) $0 stop $0 start # exit $? ;; *) msg_usage "$0 {start|stop|restart|force-reload|status}" exit 3 esac exit 0