Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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