]>
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 |
1624c7d1 | 58 | # check if devfs |
3864f278 | 59 | if [ -d /dev/vc ]; then |
61e2d117 | 60 | if [ -z "$FBTERMINALS" ]; then |
0d5ebf02 | 61 | FBTERMINALS=$(ls /dev/vc/) |
61e2d117 | 62 | fi |
1624c7d1 ER |
63 | FBDEV=/dev/fb/$FBDEV_NUM |
64 | devpath=/dev/vc/ | |
3864f278 | 65 | else |
18762b3e | 66 | if [ -z "$FBTERMINALS" -a -d /dev/.udev ]; then |
1624c7d1 ER |
67 | FBTERMINALS=$(ls /dev/vcsa* | awk '{print substr($0, length("/dev/vcsa") + 1)}') |
68 | fi | |
18762b3e ER |
69 | if [ -z "$FBTERMINALS" -a -d /sys/class/vc ]; then |
70 | FBTERMINALS=$(ls -d /sys/class/vc/vcsa* | awk '{print substr($0, length("/sys/class/vc/vcsa") + 1)}') | |
71 | fi | |
61e2d117 | 72 | if [ -z "$FBTERMINALS" ]; then |
0d5ebf02 | 73 | FBTERMINALS=$(awk -F: '/^[0-9]*:/{print $1}' /etc/inittab) |
61e2d117 | 74 | fi |
1624c7d1 ER |
75 | FBDEV=/dev/fb$FBDEV_NUM |
76 | devpath=/dev/tty | |
3864f278 | 77 | fi |
109b85b6 | 78 | |
e0c2904e | 79 | # save old tty number |
0d5ebf02 ER |
80 | tty=$(/usr/bin/tty) |
81 | tty=${tty#$devpath} | |
e0c2904e | 82 | |
61e2d117 | 83 | for cons in $FBTERMINALS; do |
a85ed31e | 84 | /usr/bin/con2fb $FBDEV $cons |
64d64bd0 JK |
85 | /usr/bin/switchto $cons |
86 | /usr/bin/fbset -fb \ | |
6ca62a08 | 87 | $FBDEV $DEPTH_options $FBMODE_default \ |
64d64bd0 | 88 | 0<>/dev/tty$cons >&0 2>&0 |
109b85b6 | 89 | done |
e0c2904e JB |
90 | [ $tty = "/dev/console" ] && tty=1 |
91 | /usr/bin/switchto $tty | |
aff35f5c | 92 | ok |
93 | fi | |
3864f278 | 94 | touch /var/lock/subsys/fbset |
95 | else | |
6292f718 | 96 | msg_already_running fbset |
3864f278 | 97 | fi |
4d31033b ER |
98 | } |
99 | ||
100 | stop() { | |
6292f718 | 101 | if [ -f /var/lock/subsys/fbset ]; then |
4a590e27 PG |
102 | rm -f /var/lock/subsys/fbset |
103 | else | |
104 | msg_not_running fbset | |
105 | fi | |
4d31033b ER |
106 | } |
107 | ||
108 | # See how we were called. | |
109 | case "$1" in | |
110 | start) | |
111 | start | |
112 | ;; | |
113 | stop) | |
114 | stop | |
aff35f5c | 115 | ;; |
116 | status) | |
117 | # Check if we have framebuffer in kernel. | |
6ca62a08 ER |
118 | if [ -f /proc/fb ] && grep -q . /proc/fb; then |
119 | nls "Frame buffer present." | |
120 | exit 0 | |
aff35f5c | 121 | fi |
187f4d9d ER |
122 | |
123 | nls "Frame buffer not present." | |
124 | exit 3 | |
aff35f5c | 125 | ;; |
f1e8c394 | 126 | restart|force-reload) |
4d31033b ER |
127 | stop |
128 | start | |
aff35f5c | 129 | ;; |
130 | *) | |
f1e8c394 | 131 | msg_usage "$0 {start|stop|restart|force-reload|status}" |
132 | exit 3 | |
aff35f5c | 133 | esac |
134 | ||
135 | exit 0 |