# fbset: Sets up fbcon video modes.
#
#
-# chkconfig: 2345 5 95
-# description: fbset is a utility with which fbcons video modes can be read
+# 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
. /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 "." || exit 0
+ cat /proc/fb | grep -q "." || try_load
else
# if not, then try to load specified kernel module
- if [ -n "${FBMODULE}" ]; then
- _modprobe single $FBMODULE
- else
- exit 0
- fi
+ 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
- for a in `ls /dev/vc/*`; do
- b=`ls $a | sed 's/\/dev\/vc\///g'`
- /usr/bin/open -c $b -- /usr/sbin/fbset -fb /dev/fb/0 $FBMODE_default
- done
+ if [ -z "$FBTERMINALS" ]; then
+ FBTERMINALS=\
+ "`ls /dev/vc/* | sed 's|/dev/vc/||g'`"
+ fi
+ FBDEV=`echo /dev/fb/${FBDEV_NUM}`
else
- for a in `ls /dev/tty[0-9] && ls /dev/tty[0-9][0-9]`; do
- b=`ls $a | sed 's/\/dev\/tty//g'`
- /usr/bin/open -c $b -- /usr/sbin/fbset $FBMODE_default
- done
+ if [ -z "$FBTERMINALS" ]; then
+ FBTERMINALS=\
+ "`cat /etc/inittab | grep '^[0-9]*:' | cut -f1 -d:`"
+ fi
+ FBDEV=`echo /dev/fb${FBDEV_NUM}`
fi
- deltext
+
+ for cons in $FBTERMINALS; do
+ /usr/bin/open -c $cons -- /usr/sbin/fbset -fb \
+ $FBDEV ${DEPTH_options} $FBMODE_default
+ done
ok
fi
touch /var/lock/subsys/fbset
else
- msg_Already_Running "fbset"
- exit 1
+ msg_already_running fbset
fi
;;
- stop)
- rm -f /var/lock/subsys/fbset
+ 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 "." || exit 0
- echo "Frame buffer present."
+ 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|reload)
+ restart|force-reload)
$0 stop
$0 start
+# exit $?
;;
*)
- msg_Usage "$0 {start|stop|status|restart|reload}"
- exit 1
+ msg_usage "$0 {start|stop|restart|force-reload|status}"
+ exit 3
esac
exit 0