Contents of /trunk/installer/hwdetection.sh
Parent Directory | Revision Log
Revision 573 -
(show annotations)
(download)
(as text)
Wed Sep 12 18:36:50 2007 UTC (16 years, 9 months ago) by niro
File MIME type: application/x-sh
File size: 3691 byte(s)
Wed Sep 12 18:36:50 2007 UTC (16 years, 9 months ago) by niro
File MIME type: application/x-sh
File size: 3691 byte(s)
-fixed remove_duplicates to get rid of "double-spaces"
1 | #!/bin/bash |
2 | |
3 | ## hwdetection, needs >= sys-apps/hwinfo |
4 | |
5 | # get_hwinfo $hw_item |
6 | get_hwinfo() |
7 | { |
8 | local item="$1" |
9 | local all |
10 | local i |
11 | all=$(hwinfo --short --"${item}") |
12 | |
13 | declare -i i=0 |
14 | while read device description |
15 | do |
16 | # skip the first line |
17 | (( i++ )) |
18 | [ ${i} -eq 1 ] && continue |
19 | |
20 | echo "${device};${description}" |
21 | done <<< "${all}" |
22 | } |
23 | |
24 | # get_driver_modules $hw_item |
25 | get_driver_modules() |
26 | { |
27 | local item="$1" |
28 | local modules |
29 | |
30 | # being little tricky here :) |
31 | # does following: |
32 | # grep: |
33 | # -> 'Driver Modules: "via82cxxx", "ide_cd"' |
34 | # cut: |
35 | # -> ' "via82cxxx", "ide_cd"' |
36 | # sed1: |
37 | # -> ' modules="via82cxxx", "ide_cd"' |
38 | # sed2: |
39 | # -> ' modules="via82cxxx ide_cd"' |
40 | # then evaluate -> eval modules="via82cxxx ide_cd" |
41 | # and we get a variable $modules with all mods |
42 | #eval $(hwinfo --"${item}" | grep "Driver Modules:" | cut -d: -f2 | sed -e "s:\":modules=\":" -e "s:\",\ \":\ :") |
43 | |
44 | local i |
45 | for i in $(hwinfo --"${item}" | grep "Driver Modules:" | cut -d: -f2 ) |
46 | do |
47 | eval $(echo "${i}" | sed -e "s:\":modules=\"\${modules}\ :" -e "s:\",\ \":\ :") |
48 | done |
49 | echo "${modules}" |
50 | } |
51 | |
52 | # remove_duplicates $list |
53 | remove_duplicates() |
54 | { |
55 | local list="$@" |
56 | local fixed_list=":" |
57 | local i |
58 | |
59 | for i in ${list} |
60 | do |
61 | if [[ -z $(echo "${fixed_list}" | fgrep ":${i}:") ]] |
62 | then |
63 | fixed_list="${fixed_list}${i}:" |
64 | fi |
65 | done |
66 | |
67 | # remove all ':' and show the cleaned list |
68 | # this way fixes double spaces also |
69 | for i in $(echo ${fixed_list} | sed "s|:| |g") |
70 | do |
71 | echo "${i}" |
72 | done |
73 | } |
74 | |
75 | get_x11_driver_modules() |
76 | { |
77 | local modules |
78 | modules="$(hwinfo --gfxcard | grep "XFree86 v4 Server Module:" | cut -d: -f2)" |
79 | |
80 | # remove duplicates from list and show it |
81 | remove_duplicates "${modules}" |
82 | } |
83 | |
84 | # create_initrd {/path/to/initrd kernelversion </path/to/config>} |
85 | # when nothing given then /boot/initrd-$(uname -r).img $(uname -r) will be used |
86 | # default config path is /etc/conf.d/mkinitrd |
87 | create_initrd() |
88 | { |
89 | local initrd="$1" |
90 | local kernel="$2" |
91 | local config="$3" |
92 | local modules |
93 | |
94 | [[ -z ${initrd} ]] && initrd="/boot/initrd-$(uname -r).img" |
95 | [[ -z ${kernel} ]] && kernel="$(uname -r)" |
96 | [[ -z ${config} ]] && config="/etc/conf.d/mkinitrd" |
97 | |
98 | # get various modules needed to boot |
99 | modules="${modules} $(get_driver_modules disk)" |
100 | modules="${modules} $(get_driver_modules scsi)" |
101 | modules="${modules} $(get_driver_modules cdrom)" |
102 | |
103 | # remove all duplicate modules |
104 | modules="$(remove_duplicates ${modules})" |
105 | |
106 | # create the config and an initrd |
107 | echo "# autogenerated config file" > ${config} |
108 | echo "MODULES=\"${modules}\"" >> ${config} |
109 | echo "IMAGE_TYPE=\"initramfs\"" >> ${config} |
110 | |
111 | mkinitrd -f ${initrd} ${kernel} |
112 | } |
113 | |
114 | # special: memory (size), floppy (modprobe floppy), smp (support y/n) |
115 | # sound (which module? -> eval $(hwinfo --sound | grep "Driver Modules:" | cut -d: -f2 | sed s:\":a=\":) ) |
116 | # |
117 | |
118 | # for i in cdrom cpu disk floppy gfxcard keyboard memory monitor mouse |
119 | # netcard pppoe scsi smp \ |
120 | # sound wlan |
121 | # do |
122 | # echo -------- ${i} |
123 | # get_hwinfo ${i} |
124 | # echo ------------------------------------------------- |
125 | # echo |
126 | # done |
127 | |
128 | # get_driver_modules sound |
129 | # get_driver_modules wlan |
130 | # get_driver_modules cdrom |
131 | # get_driver_modules disk |
132 | # get_driver_modules gfxcard |
133 | # get_x11_driver_modules |
134 | |
135 | # # get a modules list |
136 | # for i in sound wlan cdrom disk gfxcard |
137 | # do |
138 | # ALL_MODULES="${ALL_MODULES} $(get_driver_modules ${i})" |
139 | # done |
140 | # ALL_MODULES="${ALL_MODULES} $(get_x11_driver_modules)" |
141 | # # show a clean list |
142 | # for i in $(remove_duplicates ${ALL_MODULES}) |
143 | # do |
144 | # echo ${i} |
145 | # done |
146 | |
147 | #create_initrd /root/TEST/initrd |
148 | #get_driver_modules cdrom |
149 | #get_driver_modules disk |
150 | #get_driver_modules scsi |
151 | #get_driver_modules all |
152 | |
153 | # network |
154 | #get_hwinfo netcard |
155 | #get_driver_modules netcard |
156 | |
157 | #get_hwinfo disk |
158 | #get_hwinfo partition | grep /dev/hda |