Magellan Linux

Diff of /trunk/installer/hwdetection.sh

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

revision 574 by niro, Wed Sep 12 18:44:05 2007 UTC revision 769 by niro, Wed Sep 24 10:15:46 2008 UTC
# Line 1  Line 1 
1  #!/bin/bash  #!/bin/bash
2    # $Header: /home/cvsd/magellan-cvs/magellan-src/installer/hwdetection.sh,v 1.9 2008-09-24 10:15:46 niro Exp $
3    
4  ## hwdetection, needs >= sys-apps/hwinfo  ## hwdetection, needs >= sys-apps/hwinfo
5    
6    # hwinfo wrapper to use hwinfo with sudo if requested
7    hwinfo()
8    {
9     local use_sudo=""
10     case ${SUDO} in
11     yes|y|true|1) use_sudo=sudo ;;
12     esac
13    
14     ${use_sudo} /usr/sbin/hwinfo $@
15    }
16    
17  # get_hwinfo $hw_item  # get_hwinfo $hw_item
18  get_hwinfo()  get_hwinfo()
19  {  {
20     local enable_desc="0"
21    
22     if [[ $1 = --with-description ]] || [[ $1 = -d ]]
23     then
24     enable_desc=1
25     shift
26     fi
27    
28   local item="$1"   local item="$1"
29   local all   local all
30   local i   local i
31    
32     # handle special items
33     case ${item} in
34     memory) get_hwinfo_memory; return ;;
35     smp) get_hwinfo_smp; return ;;
36     esac
37    
38   all=$(hwinfo --short --"${item}")   all=$(hwinfo --short --"${item}")
39    
40   declare -i i=0   declare -i i=0
# Line 17  get_hwinfo() Line 44  get_hwinfo()
44   (( i++ ))   (( i++ ))
45   [ ${i} -eq 1 ] && continue   [ ${i} -eq 1 ] && continue
46    
47   echo "${device};${description}"   if [[ ${enable_desc} = 1 ]]
48     then
49     echo "${device};${description}"
50     else
51     echo "${device}"
52     fi
53   done <<< "${all}"   done <<< "${all}"
54  }  }
55    
56    
57    # special memory case
58    get_hwinfo_memory()
59    {
60     local memory=$(hwinfo --memory  | grep "Memory Size" | cut -d: -f2 | sed "s:\ ::")
61     echo "${memory}"
62    }
63    
64    
65    # special smp case
66    get_hwinfo_smp()
67    {
68     local smp=$(hwinfo --smp  | grep "SMP support:" | cut -d: -f2 | sed "s:\ ::")
69     echo "${smp}"
70    }
71    
72    
73  # get_driver_modules $hw_item  # get_driver_modules $hw_item
74  get_driver_modules()  get_driver_modules()
75  {  {
# Line 64  remove_duplicates() Line 113  remove_duplicates()
113   fi   fi
114   done   done
115    
116     unset list
117    
118   # remove all ':' and show the cleaned list   # remove all ':' and show the cleaned list
119   # this way fixes double spaces also   # this way fixes double spaces also
120   for i in $(echo ${fixed_list} | sed "s|:| |g")   for i in $(echo ${fixed_list} | sed "s|:| |g")
121   do   do
122   echo "${i}"   list+=" ${i}"
123   done   done
124    
125     echo "${list}"
126  }  }
127    
128  get_x11_driver_modules()  get_x11_driver_modules()
# Line 86  get_x11_driver_modules() Line 139  get_x11_driver_modules()
139  # default config path is /etc/conf.d/mkinitrd  # default config path is /etc/conf.d/mkinitrd
140  create_initrd()  create_initrd()
141  {  {
142   local initrd="$1"   local initrd
143   local kernel="$2"   local kernel
144   local config="$3"   local config
145     local chroot
146     #local root
147   local modules   local modules
148    
149     # very basic getops
150     for i in $*
151     do
152     case $1 in
153     #--root|-r) shift; root="$1" ;;
154     --initrd|-i) shift; initrd="$1" ;;
155     --config|-c) shift; config="$1" ;;
156     --kernelversion|-v) shift; kernel="$1" ;;
157     esac
158     shift
159     done
160    
161   [[ -z ${initrd} ]] && initrd="/boot/initrd-$(uname -r).img"   [[ -z ${initrd} ]] && initrd="/boot/initrd-$(uname -r).img"
162   [[ -z ${kernel} ]] && kernel="$(uname -r)"   [[ -z ${kernel} ]] && kernel="$(uname -r)"
163   [[ -z ${config} ]] && config="/etc/conf.d/mkinitrd"   [[ -z ${config} ]] && config="/etc/conf.d/mkinitrd"
164    
165     if [[ ! -z ${INSTALL_ROOT} ]]
166     then
167     config="${INSTALL_ROOT}/${config}"
168     chroot="chrooted"
169     fi
170    
171   # get various modules needed to boot   # get various modules needed to boot
172   modules="${modules} $(get_driver_modules disk)"   modules="$(get_driver_modules disk)"
173   modules="${modules} $(get_driver_modules scsi)"   modules+=" $(get_driver_modules scsi)"
174   modules="${modules} $(get_driver_modules cdrom)"   modules+=" $(get_driver_modules cdrom)"
175    
176     # check for special ide_disk drivers (ata support)
177     if [[ ! -z $(echo ${modules} | grep ide_disk) ]]
178     then
179     modules+=" $(grep ide_disk /proc/modules | cut -d' ' -f4 | sed '/-/d;s:,:\ :g')"
180     fi
181    
182   # remove all duplicate modules   # remove all duplicate modules
183   modules="$(remove_duplicates ${modules})"   modules="$(remove_duplicates ${modules})"
# Line 108  create_initrd() Line 187  create_initrd()
187   echo "MODULES=\"${modules}\"" >> ${config}   echo "MODULES=\"${modules}\"" >> ${config}
188   echo "IMAGE_TYPE=\"initramfs\"" >> ${config}   echo "IMAGE_TYPE=\"initramfs\"" >> ${config}
189    
190   mkinitrd -f ${initrd} ${kernel}   ${chroot} mkinitrd -f ${initrd} ${kernel}
191    }
192    
193    chrooted()
194    {
195     local cmd="$@"
196    
197     mount -t sysfs sysfs ${INSTALL_ROOT}/sys
198     mount -t proc proc ${INSTALL_ROOT}/proc
199     mount -o bind /dev ${INSTALL_ROOT}/dev
200    
201     chroot ${INSTALL_ROOT} ${cmd}
202    
203     umount ${INSTALL_ROOT}/dev
204     umount ${INSTALL_ROOT}/proc
205     umount ${INSTALL_ROOT}/sys
206  }  }
207    
208  # special: memory (size), floppy (modprobe floppy), smp (support y/n)  # special: memory (size), floppy (modprobe floppy), smp (support y/n)
# Line 145  create_initrd() Line 239  create_initrd()
239  # done  # done
240    
241  #create_initrd /root/TEST/initrd  #create_initrd /root/TEST/initrd
242  get_driver_modules cdrom  #get_driver_modules cdrom
243  #get_driver_modules disk  #get_driver_modules disk
244  #get_driver_modules scsi  #get_driver_modules scsi
245  #get_driver_modules all  #get_driver_modules all
246    
247  # network  # network
248  #get_hwinfo netcard  #get_hwinfo --with-description netcard
249  #get_driver_modules netcard  #get_driver_modules netcard
250    
251  #get_hwinfo disk  #get_hwinfo disk

Legend:
Removed from v.574  
changed lines
  Added in v.769