Contents of /trunk/hwinfo/emulate-hwsetup.sh
Parent Directory | Revision Log
Revision 1213 -
(show annotations)
(download)
(as text)
Thu Dec 2 15:07:24 2010 UTC (13 years, 9 months ago) by niro
File MIME type: application/x-sh
File size: 4957 byte(s)
Thu Dec 2 15:07:24 2010 UTC (13 years, 9 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 |