]>
Commit | Line | Data |
---|---|---|
aff35f5c | 1 | #!/bin/sh |
3864f278 | 2 | # $Id$ |
aff35f5c | 3 | # |
3864f278 | 4 | # fbset: Sets up fbcon video modes. |
aff35f5c | 5 | # |
6 | # | |
efa5a496 | 7 | # chkconfig: 2345 69 31 |
aa141c72 | 8 | # description: fbset is a utility with which fbcons video modes can be read \ |
aff35f5c | 9 | # and changed |
3864f278 | 10 | # |
11 | # config: /etc/sysconfig/fbset | |
aff35f5c | 12 | |
aff35f5c | 13 | # Get service config |
3864f278 | 14 | if [ -f /etc/sysconfig/fbset ]; then |
15 | . /etc/sysconfig/fbset | |
16 | fi | |
aff35f5c | 17 | |
014fd80c | 18 | if [ -z "${FBMODULE}" ]; then |
9bc1b40a ER |
19 | case "$1" in |
20 | start|stop|restart|force-reload) | |
21 | exit 0 | |
22 | ;; | |
23 | esac | |
014fd80c ER |
24 | fi |
25 | ||
26 | # Source function library | |
27 | . /etc/rc.d/init.d/functions | |
109b85b6 | 28 | |
4a590e27 PG |
29 | # Setting default depth |
30 | if [ -n "${DEPTH}" ]; then | |
31 | DEPTH_options="-depth ${DEPTH}" | |
32 | fi | |
b3c5d50d | 33 | |
109b85b6 | 34 | if [ -z "${FBDEV_NUM}" ]; then |
35 | FBDEV_NUM=0 | |
36 | fi | |
37 | ||
4d31033b | 38 | start() { |
3864f278 | 39 | # Check if service is already running? |
40 | if [ ! -f /var/lock/subsys/fbset ]; then | |
6292f718 | 41 | |
3864f278 | 42 | # Check if we have framebuffer in kernel. |
6ca62a08 | 43 | local load_fbmodule=1 |
3864f278 | 44 | if [ -f /proc/fb ]; then |
45 | # /proc files show as files with size=0, this is a workaround. | |
6ca62a08 ER |
46 | grep -q '.' /proc/fb && load_fbmodule=0 |
47 | fi | |
48 | ||
49 | if [ "$load_fbmodule" = "1" ]; then | |
50 | modprobe $FBMODULE | |
3864f278 | 51 | fi |
aff35f5c | 52 | |
3864f278 | 53 | if [ -n "${FBMODE_default}" ]; then |
54 | show "Setting default video mode" | |
aff35f5c | 55 | busy |
6292f718 | 56 | |
6ca62a08 | 57 | local cons tty devpath |
3864f278 | 58 | # check if devfs (workaround: -a option don't work at all) |
59 | if [ -d /dev/vc ]; then | |
61e2d117 | 60 | if [ -z "$FBTERMINALS" ]; then |
0d5ebf02 | 61 | FBTERMINALS=$(ls /dev/vc/) |
61e2d117 | 62 | fi |
0d5ebf02 ER |
63 | FBDEV=/dev/fb/${FBDEV_NUM} |
64 | devpath="/dev/vc/" | |
3864f278 | 65 | else |
61e2d117 | 66 | if [ -z "$FBTERMINALS" ]; then |
0d5ebf02 | 67 | FBTERMINALS=$(awk -F: '/^[0-9]*:/{print $1}' /etc/inittab) |
61e2d117 | 68 | fi |
0d5ebf02 ER |
69 | FBDEV=/dev/fb${FBDEV_NUM} |
70 | devpath="/dev/tty" | |
3864f278 | 71 | fi |
109b85b6 | 72 | |
e0c2904e | 73 | # save old tty number |
0d5ebf02 ER |
74 | tty=$(/usr/bin/tty) |
75 | tty=${tty#$devpath} | |
e0c2904e | 76 | |
61e2d117 | 77 | for cons in $FBTERMINALS; do |
a85ed31e | 78 | /usr/bin/con2fb $FBDEV $cons |
64d64bd0 JK |
79 | /usr/bin/switchto $cons |
80 | /usr/bin/fbset -fb \ | |
6ca62a08 | 81 | $FBDEV $DEPTH_options $FBMODE_default \ |
64d64bd0 | 82 | 0<>/dev/tty$cons >&0 2>&0 |
109b85b6 | 83 | done |
e0c2904e JB |
84 | [ $tty = "/dev/console" ] && tty=1 |
85 | /usr/bin/switchto $tty | |
aff35f5c | 86 | ok |
87 | fi | |
3864f278 | 88 | touch /var/lock/subsys/fbset |
89 | else | |
6292f718 | 90 | msg_already_running fbset |
3864f278 | 91 | fi |
4d31033b ER |
92 | } |
93 | ||
94 | stop() { | |
6292f718 | 95 | if [ -f /var/lock/subsys/fbset ]; then |
4a590e27 PG |
96 | rm -f /var/lock/subsys/fbset |
97 | else | |
98 | msg_not_running fbset | |
99 | fi | |
4d31033b ER |
100 | } |
101 | ||
102 | # See how we were called. | |
103 | case "$1" in | |
104 | start) | |
105 | start | |
106 | ;; | |
107 | stop) | |
108 | stop | |
aff35f5c | 109 | ;; |
110 | status) | |
111 | # Check if we have framebuffer in kernel. | |
6ca62a08 ER |
112 | if [ -f /proc/fb ] && grep -q . /proc/fb; then |
113 | nls "Frame buffer present." | |
114 | exit 0 | |
aff35f5c | 115 | fi |
187f4d9d ER |
116 | |
117 | nls "Frame buffer not present." | |
118 | exit 3 | |
aff35f5c | 119 | ;; |
f1e8c394 | 120 | restart|force-reload) |
4d31033b ER |
121 | stop |
122 | start | |
aff35f5c | 123 | ;; |
124 | *) | |
f1e8c394 | 125 | msg_usage "$0 {start|stop|restart|force-reload|status}" |
126 | exit 3 | |
aff35f5c | 127 | esac |
128 | ||
129 | exit 0 |