Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1200 by niro, Mon Nov 22 22:59:53 2010 UTC revision 2677 by niro, Fri Jul 24 10:47:30 2015 UTC
# Line 2  Line 2 
2    
3  export LC_ALL=C  export LC_ALL=C
4    
5  HWSETUP_DIR=/etc/sysconfig/hwsetup  HWSETUP_DIR=/etc/conf.d/hwsetup
6  HWINFO="/usr/sbin/hwinfo"  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()  clearconfig()
20  {  {
21   local file="$1"   local file="$1"
# Line 19  addconfig() Line 30  addconfig()
30   echo "${data}" >> ${HWSETUP_DIR}/${file}   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    get_gfxcard_sysfsid_from_specific_hwid()
49    {
50     local SEARCH_ID="$1"
51     local hwid
52     local sysfsid
53     local counter
54    
55     declare -i counter=0
56    
57     echo "${GFXCARD_INFO}" | while read line
58     do
59     # get hwinfo device id, its always the first line
60     if [[ ${counter} = 0 ]]
61     then
62     # hwids begins all with ^ID:, sub informations have an empty space
63     hwid=$(echo "${line}" | grep '^[0-9].*' | sed 's:\(^[0-9]*\)\:\ .*:\1:')
64     fi
65    
66     # search for device id
67     if [[ ${SEARCH_ID} = ${hwid} ]]
68     then
69     case "${line}" in
70     *'SysFS ID:'*)
71     # subst the id
72     sysfsid="${line#*:}"
73     # trim spaces
74     sysfsid="${sysfsid// }"
75     echo "${sysfsid}"
76     ;;
77     esac
78     fi
79    
80     # next hardware item
81     if [[ -z ${line} ]]
82     then
83     counter=0
84     else
85     ((counter++))
86     fi
87     done
88    }
89    
90    get_primary_display_hwid()
91    {
92     local hwid
93     hwid="$(echo "${GFXCARD_INFO}" | grep 'Primary display adapter:' | sed 's:.*\:\ \#\([0-9]*\):\1:')"
94     echo "${hwid}"
95    }
96    
97    
98    # disable probeonly, load all modules by default
99    probeonly=0
100    
101    # check getops
102    for i in $*
103    do
104     case $1 in
105     # ignoring -p,-v,-a,-s
106     -p|-v|-a|-s) shift;;
107     # only support dry-run
108     -n) shift; probeonly=1 ;;
109     esac
110     shift
111    done
112    
113  echo -n "Autoconfiguring devices...  " 1>&2  echo -n "Autoconfiguring devices...  " 1>&2
114    
115  GFXCARD_INFO="$(${HWINFO} --gfxcard)"  GFXCARD_INFO="$(${HWINFO} --gfxcard)"
116    # check for a primary device and rerun hwinfo for this device only
117    primary_display_hwid="$(get_primary_display_hwid)"
118    if [[ -n ${primary_display_hwid} ]]
119    then
120     GFXCARD_INFO="$(${HWINFO} --gfxcard --only $(get_gfxcard_sysfsid_from_specific_hwid ${primary_display_hwid}))"
121    fi
122  NETCARD_INFO="$(${HWINFO} --netcard)"  NETCARD_INFO="$(${HWINFO} --netcard)"
123  MOUSE_INFO="$(${HWINFO} --mouse)"  MOUSE_INFO="$(${HWINFO} --mouse)"
124    
# Line 65  do Line 162  do
162   then   then
163   GFXCARD_MODULE[${i}]="vesa"   GFXCARD_MODULE[${i}]="vesa"
164   fi   fi
165    
166     # exclude unsupported drivers
167     check_unsupported_drivers "${UNSUPPORTED_GFXCARD_DRIVERS}" "${NETCARD_MODULE[${i}]}" || continue
168    
169   addconfig xserver "XSERVER=\"${GFXCARD_XSERVER}\""   addconfig xserver "XSERVER=\"${GFXCARD_XSERVER}\""
170   addconfig xserver "XMODULE=\"${GFXCARD_MODULE[${i}]}\""   addconfig xserver "XMODULE=\"${GFXCARD_MODULE[${i}]}\""
171   addconfig xserver "XDESC=\"${GFXCARD_DESC[${i}]}\""   addconfig xserver "XDESC=\"${GFXCARD_DESC[${i}]}\""
# Line 73  do Line 174  do
174   addconfig knoppix "XSERVER=\"${GFXCARD_XSERVER}\""   addconfig knoppix "XSERVER=\"${GFXCARD_XSERVER}\""
175   addconfig knoppix "XMODULE=\"${GFXCARD_MODULE[${i}]}\""   addconfig knoppix "XMODULE=\"${GFXCARD_MODULE[${i}]}\""
176   addconfig knoppix "XDESC=\"${GFXCARD_DESC[${i}]}\""   addconfig knoppix "XDESC=\"${GFXCARD_DESC[${i}]}\""
177    
178     # load some needed modules for xorg-servers without udev or hal support, which the driver would normally autoload
179     case "${GFXCARD_MODULE[${i}]}" in
180     intel|i810) modprobe -q intel-agp ;;
181     nv) modprobe -q nvidia-agp ;;
182     sis) modprobe -q sis-agp ;;
183     ati|radeon|r128|mach64) modprobe -q ati-agp ;;
184     via|openchrome|unichrome) modprobe -q via-agp ;;
185     esac
186  done  done
187    
188  for ((i=0; i<NETCARD_COUNT; i++))  for ((i=0; i<NETCARD_COUNT; i++))
# Line 82  do Line 192  do
192   then   then
193   NETCARD_MODULE[${i}]="${NETCARD_MODULE_FB[${i}]}"   NETCARD_MODULE[${i}]="${NETCARD_MODULE_FB[${i}]}"
194   fi   fi
195    
196     # exclude this driver if its still empty, the provided kernel does not support this hardware
197     if [[ -z ${NETCARD_MODULE[${i}]} ]]
198     then
199     continue
200     fi
201    
202     # exclude unsupported drivers
203     check_unsupported_drivers "${UNSUPPORTED_NETCARD_DRIVERS}" "${NETCARD_MODULE[${i}]}" || continue
204    
205   addconfig netcard "FULLNAME=\"${NETCARD_DESC[${i}]}\""   addconfig netcard "FULLNAME=\"${NETCARD_DESC[${i}]}\""
206   addconfig netcard "DRIVER=\"${NETCARD_MODULE[${i}]}\""   addconfig netcard "DRIVER=\"${NETCARD_MODULE[${i}]}\""
207    
208   # add them to knoppix too   # add them to knoppix too
209   addconfig knoppix "NETCARD_FULLNAME=\"${NETCARD_DESC[${i}]}\""   addconfig knoppix "NETCARD_FULLNAME=\"${NETCARD_DESC[${i}]}\""
210   addconfig knoppix "NETCARD_DRIVER=\"${NETCARD_MODULE[${i}]}\""   addconfig knoppix "NETCARD_DRIVER=\"${NETCARD_MODULE[${i}]}\""
211    
212     # load the netcard modules
213     if [[ ${probeonly} = 0 ]]
214     then
215     modprobe -q "${NETCARD_MODULE[${i}]}"
216     fi
217  done  done
218    
219  for ((i=0; i<MOUSE_COUNT; i++))  for ((i=0; i<MOUSE_COUNT; i++))

Legend:
Removed from v.1200  
changed lines
  Added in v.2677