Magellan Linux

Contents of /trunk/hwinfo/emulate-hwsetup.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1213 - (show annotations) (download) (as text)
Thu Dec 2 15:07:24 2010 UTC (13 years, 5 months ago) by niro
File MIME type: application/x-sh
File size: 4957 byte(s)
-check for unsupported drivers and ignore them
1 #!/bin/bash
2
3 export LC_ALL=C
4
5 HWSETUP_DIR=/etc/sysconfig/hwsetup
6 HWINFO="/usr/sbin/hwinfo"
7
8 UNSUPPORTED_GFXCARD_DRIVERS=""
9 UNSUPPORTED_NETCARD_DRIVERS=""
10 if [ -f ${HWSETUP_DIR}/unsupported-gfxcard-drivers ]
11 then
12 UNSUPPORTED_GFXCARD_DRIVERS="$(< ${HWSETUP_DIR}/unsupported-gfxcard-drivers)"
13 fi
14 if [ -f ${HWSETUP_DIR}/unsupported-netcard-drivers ]
15 then
16 UNSUPPORTED_NETCARD_DRIVERS="$(< ${HWSETUP_DIR}/unsupported-netcard-drivers)"
17 fi
18
19 clearconfig()
20 {
21 local file="$1"
22 : > ${HWSETUP_DIR}/${file}
23 }
24
25 addconfig()
26 {
27 local file="$1"
28 local data="$2"
29
30 echo "${data}" >> ${HWSETUP_DIR}/${file}
31 }
32
33 # check_unsupported_netcard_drivers UNSUPPORTED_ARRAY DRIVER
34 check_unsupported_drivers()
35 {
36 local unsupported="$1"
37 local driver="$2"
38 local i
39
40 # filter unsupported devices
41 for i in ${unsupported}
42 do
43 [[ ${i} = ${driver} ]] && return 1
44 done
45 return 0
46 }
47
48 echo -n "Autoconfiguring devices... " 1>&2
49
50 GFXCARD_INFO="$(${HWINFO} --gfxcard)"
51 NETCARD_INFO="$(${HWINFO} --netcard)"
52 MOUSE_INFO="$(${HWINFO} --mouse)"
53
54 # eval arrays with all modules and descriptions
55 #
56 # graphic
57 eval $(echo GFXCARD_MODULE=\($(echo "${GFXCARD_INFO}" | grep 'XFree86.*Module:' | sed 's:.*\:\ \(.*\)$:\"\1\":')\))
58 eval $(echo GFXCARD_DESC=\($(echo "${GFXCARD_INFO}" | grep 'Model:' | sed 's:.*\:\ \"\(.*\)\"$:\"\1\":')\))
59 # the xserver is always xorg, no array needed
60 GFXCARD_XSERVER="Xorg"
61 #
62 # network
63 eval $(echo NETCARD_MODULE=\($(echo "${NETCARD_INFO}" | grep 'Driver Modules:' | sed 's:.*\:\ \"\(.*\)\"$:\"\1\":')\))
64 eval $(echo NETCARD_DESC=\($(echo "${NETCARD_INFO}" | grep 'Model:' | sed 's:.*\:\ \"\(.*\)\"$:\"\1\":')\))
65 # fallback (only needed for systems without netlink)
66 eval $(echo NETCARD_MODULE_FB=\($(echo "${NETCARD_INFO}" | grep 'Driver Activation Cmd:' | sed 's:.*\:\ \"modprobe\ \(.*\)\"$:\"\1\":')\))
67 #
68 # mouse
69 eval $(echo MOUSE_MODULE=\($(echo "${MOUSE_INFO}" | grep 'Driver Modules:' | sed 's:.*\:\ \"\(.*\)\"$:\"\1\":')\))
70 eval $(echo MOUSE_DESC=\($(echo "${MOUSE_INFO}" | grep 'Model:' | sed 's:.*\:\ \"\(.*\)\"$:\"\1\":')\))
71 eval $(echo MOUSE_DEVICE=\($(echo "${MOUSE_INFO}" | grep 'Device File:' | sed 's:.*\:\ \(.*\)[$\ ].*:\"\1\":')\))
72 eval $(echo MOUSE_GPM_PROTO=\($(echo "${MOUSE_INFO}" | grep 'GPM.*Protocol:' | sed 's:.*\:\ \(.*\)$:\"\1\":')\))
73 eval $(echo MOUSE_X11_PROTO=\($(echo "${MOUSE_INFO}" | grep 'XFree86.*Protocol:' | sed 's:.*\:\ \(.*\)$:\"\1\":')\))
74
75 # get the number of devices for each class
76 GFXCARD_COUNT=$(echo "${GFXCARD_INFO}" | grep -c "[0-9a-zA-Z]\: .*\:\ .*")
77 NETCARD_COUNT=$(echo "${NETCARD_INFO}" | grep -c "[0-9a-zA-Z]\: .*\:\ .*")
78 MOUSE_COUNT=$(echo "${MOUSE_INFO}" | grep -c "[0-9a-zA-Z]\: .*\:\ .*")
79
80
81 # clear all config files
82 clearconfig xserver
83 clearconfig netcard
84 clearconfig knoppix
85 clearconfig mouse
86
87 for ((i=0; i<GFXCARD_COUNT; i++))
88 do
89 # fallback to vesa
90 if [[ -z ${GFXCARD_MODULE[${i}]} ]]
91 then
92 GFXCARD_MODULE[${i}]="vesa"
93 fi
94
95 # exclude unsupported drivers
96 check_unsupported_drivers "${UNSUPPORTED_GFXCARD_DRIVERS}" "${NETCARD_MODULE[${i}]}" || continue
97
98 addconfig xserver "XSERVER=\"${GFXCARD_XSERVER}\""
99 addconfig xserver "XMODULE=\"${GFXCARD_MODULE[${i}]}\""
100 addconfig xserver "XDESC=\"${GFXCARD_DESC[${i}]}\""
101
102 # add them to knoppix too
103 addconfig knoppix "XSERVER=\"${GFXCARD_XSERVER}\""
104 addconfig knoppix "XMODULE=\"${GFXCARD_MODULE[${i}]}\""
105 addconfig knoppix "XDESC=\"${GFXCARD_DESC[${i}]}\""
106 done
107
108 for ((i=0; i<NETCARD_COUNT; i++))
109 do
110 # use fallback
111 if [[ -z ${NETCARD_MODULE[${i}]} ]]
112 then
113 NETCARD_MODULE[${i}]="${NETCARD_MODULE_FB[${i}]}"
114 fi
115
116 # exclude unsupported drivers
117 check_unsupported_drivers "${UNSUPPORTED_NETCARD_DRIVERS}" "${NETCARD_MODULE[${i}]}" || continue
118
119 addconfig netcard "FULLNAME=\"${NETCARD_DESC[${i}]}\""
120 addconfig netcard "DRIVER=\"${NETCARD_MODULE[${i}]}\""
121
122 # add them to knoppix too
123 addconfig knoppix "NETCARD_FULLNAME=\"${NETCARD_DESC[${i}]}\""
124 addconfig knoppix "NETCARD_DRIVER=\"${NETCARD_MODULE[${i}]}\""
125 done
126
127 for ((i=0; i<MOUSE_COUNT; i++))
128 do
129 # fix mouseproto to be hwsetup compatible (it just guesses the proto :/ )
130 case "${MOUSE_GPM_PROTO[${i}]}" in
131 exps2) MOUSE_GPM_PROTO[${i}]="ps2" ;;
132 "") MOUSE_GPM_PROTO[${i}]="ps2" ;;
133 esac
134 case "${MOUSE_X11_PROTO[${i}]}" in
135 explorerps/2) MOUSE_X11_PROTO[${i}]="IMPS/2" ;;
136 ps/2) MOUSE_X11_PROTO[${i}]="PS/2" ;;
137 "") MOUSE_X11_PROTO[${i}]="PS/2" ;;
138 esac
139
140 addconfig mouse "MOUSETYPE=\"${MOUSE_GPM_PROTO[${i}]}\""
141 addconfig mouse "XMOUSETYPE=\"${MOUSE_X11_PROTO[${i}]}\""
142 addconfig mouse "FULLNAME=\"${MOUSE_DESC[${i}]}\""
143 addconfig mouse "DEVICE=\"${MOUSE_DEVICE[${i}]}\""
144 addconfig mouse "DRIVER=\"${MOUSE_MODULE[${i}]}\""
145
146 # add them to knoppix too
147 addconfig knoppix "MOUSE_MOUSETYPE=\"${MOUSE_GPM_PROTO[${i}]}\""
148 addconfig knoppix "MOUSE_XMOUSETYPE=\"${MOUSE_X11_PROTO[${i}]}\""
149 addconfig knoppix "MOUSE_FULLNAME=\"${MOUSE_DESC[${i}]}\""
150 addconfig knoppix "MOUSE_DEVICE=\"${MOUSE_DEVICE[${i}]}\""
151 addconfig knoppix "MOUSE_DRIVER=\"${MOUSE_MODULE[${i}]}\""
152 done
153
154 echo "Done." 1>&2