User:JonathonBlumenthal/Handy Patches: Difference between revisions

From FAIWiki
Jump to navigation Jump to search
mNo edit summary
 
Line 4: Line 4:
@@ -1,10 +1,33 @@
@@ -1,10 +1,33 @@
  #! /bin/bash
  #! /bin/bash
 
  # (c) Thomas Lange, 2002-2005, lange@informatik.uni-koeln.de
  # (c) Thomas Lange, 2002-2005, lange@informatik.uni-koeln.de
+# 2006/12/19 15:53:08 - Modified by Jonathon Blumenthal
+# 2006/12/19 15:53:08 - Modified by Jonathon Blumenthal
+#    * Added more rubust probing of modules to load all nessicary modules.
+#    * Added more rubust probing of modules to load all nessicary modules.  
 
  # NOTE: Files named *.source will be evaluated, but their output ignored and instead
  # NOTE: Files named *.source will be evaluated, but their output ignored and instead  
  # the contents of $newclasses will be added to the list of defined classes.
  # the contents of $newclasses will be added to the list of defined classes.
 
+is_not_loaded() {
+is_not_loaded() {
+        ! ((cut -d" " -f1 /proc/modules | grep -q "^$1\$") || \
+        ! ((cut -d" " -f1 /proc/modules | grep -q "^$1\$") || \
Line 34: Line 34:
+
+
  echo 0 > /proc/sys/kernel/printk
  echo 0 > /proc/sys/kernel/printk
 
  # load all IDE drivers
  # load all IDE drivers
@@ -21,11 +44,10 @@
@@ -21,11 +44,10 @@
 
  # load additional kernel modules (from old 11modules.source)
  # load additional kernel modules (from old 11modules.source)
  # this order should also enable DMA for all IDE drives
  # this order should also enable DMA for all IDE drives
Line 48: Line 48:
+    2.6*) kernelmodules="$kernelmodules usbhid usbmouse ide-generic" ;;
+    2.6*) kernelmodules="$kernelmodules usbhid usbmouse ide-generic" ;;
  esac
  esac
 
  for mod in $kernelmodules; do
  for mod in $kernelmodules; do
@@ -34,26 +56,28 @@
@@ -34,26 +56,28 @@
  done
  done
 
  # let discover do most of the job
  # let discover do most of the job
-[ -x /etc/init.d/discover ] && /etc/init.d/discover start
-[ -x /etc/init.d/discover ] && /etc/init.d/discover start
+/etc/init.d/discover start
+/etc/init.d/discover start
 
  # now we can mount the usb file system
  # now we can mount the usb file system
  mount -t usbfs  usbfs /proc/bus/usb
  mount -t usbfs  usbfs /proc/bus/usb
 
  modprobe -a sd_mod sr_mod
  modprobe -a sd_mod sr_mod
 
+for mod in $(list_disk_modules | sort); do
+for mod in $(list_disk_modules | sort); do
+        modprobe -a $mod
+        modprobe -a $mod
Line 67: Line 67:
+
+
  echo 6 > /proc/sys/kernel/printk
  echo 6 > /proc/sys/kernel/printk
 
  # try to detect graphics card
  # try to detect graphics card
  # the variable videodrv may be used to generate the XF86config file
  # the variable videodrv may be used to generate the XF86config file
-[ -x "$(which discover)" ] && {
-[ -x "$(which discover)" ] && {
-    if discover --version | grep "discover \(version \)*1\." ; then
-    if discover --version | grep "discover \(version \)*1\." ; then
-       videodrv=$(discover --xdriver video 2> /dev/null)
- videodrv=$(discover --xdriver video 2> /dev/null)
-    else
-    else
-       videodrv=$(discover --data-path=xfree86/server/device/driver display)
- videodrv=$(discover --data-path=xfree86/server/device/driver display)
-    fi
-    fi
-    [ -n "$videodrv" ] && echo "videodrv=$videodrv" >> $LOGDIR/additional.var
-    [ -n "$videodrv" ] && echo "videodrv=$videodrv" >> $LOGDIR/additional.var
Line 86: Line 86:
+[ -n "$videodrv" ] && echo "videodrv=$videodrv" >> $LOGDIR/additional.var
+[ -n "$videodrv" ] && echo "videodrv=$videodrv" >> $LOGDIR/additional.var
+echo "Video card detected: $videodrv"
+echo "Video card detected: $videodrv"
 
   
  set_disk_info  # calculate number of available disks
save_dmesg    # save new boot messages (from loading modules)
hwdetect.source  > ~/Desktop/rubust_probing_modules.diff
~/workspace/bedrock/common/bedrock-fai/bedrock-fai-conf/src/main/debian/data/usr/local/share/fai/class$ ls
10-base-classes  20-hwdetect.source  50-host-classes  60-localhost.source  FAIBASE.var
~/workspace/bedrock/common/bedrock-fai/bedrock-fai-conf/src/main/debian/data/usr/local/share/fai/class$ less 20-hwdetect.source
~/workspace/bedrock/common/bedrock-fai/bedrock-fai-conf/src/main/debian/data/usr/local/share/fai/class$ mv ~/Desktop/r
release                      rubust_probing_modules.diff
~/workspace/bedrock/common/bedrock-fai/bedrock-fai-conf/src/main/debian/data/usr/local/share/fai/class$ mv ~/Desktop/rubust_probing_modules.diff ~/Desktop/rubust_probing_modules.diff.jpg
~/workspace/bedrock/common/bedrock-fai/bedrock-fai-conf/src/main/debian/data/usr/local/share/fai/class$ mv ~/Desktop/rubust_probing_modules.diff.jpg ~/Desktop/robust_probing_modules.diff.jpg
~/workspace/bedrock/common/bedrock-fai/bedrock-fai-conf/src/main/debian/data/usr/local/share/fai/class$ clear
 
~/workspace/bedrock/common/bedrock-fai/bedrock-fai-conf/src/main/debian/data/usr/local/share/fai/class$
~/workspace/bedrock/common/bedrock-fai/bedrock-fai-conf/src/main/debian/data/usr/local/share/fai/class$
~/workspace/bedrock/common/bedrock-fai/bedrock-fai-conf/src/main/debian/data/usr/local/share/fai/class$
hwdetect.source  > ~/Desktop/rubust_probing_modules.diffsrc/main/debian/data/usr/local/share/fai/class$ diff -u /home/jblumenthal/Desktop/fai-2.10.5/examples/simple/class/20-hwdetect.source 20-h
hwdetect.source
--- /home/jblumenthal/Desktop/fai-2.10.5/examples/simple/class/20-hwdetect.source      2006-07-05 15:54:05.000000000 -0400
+++ 20-hwdetect.source  2006-12-28 22:07:40.893481750 -0500
@@ -1,10 +1,33 @@
#! /bin/bash
 
# (c) Thomas Lange, 2002-2005, lange@informatik.uni-koeln.de
+# 2006/12/19 15:53:08 - Modified by Jonathon Blumenthal
+#    * Added more rubust probing of modules to load all nessicary modules.
 
# NOTE: Files named *.source will be evaluated, but their output ignored and instead
# the contents of $newclasses will be added to the list of defined classes.
 
+is_not_loaded() {
+        ! ((cut -d" " -f1 /proc/modules | grep -q "^$1\$") || \
+          (cut -d" " -f1 /proc/modules | sed -e 's/_/-/g' | grep -q "^$1\$"))
+}
+
+list_modules_dir() {
+        if [ -d "$1" ]; then
+                find $1 -type f | sed -e 's/\.k\?o$//' -e 's/.*\///'
+        fi
+}
+
+list_disk_modules() {
+        # FIXME: not all of this stuff is disk driver modules, find a way
+        # to separate out only the disk stuff.
+        list_modules_dir /lib/modules/*/kernel/drivers/ide
+        list_modules_dir /lib/modules/*/kernel/drivers/scsi
+        list_modules_dir /lib/modules/*/kernel/drivers/block
+        list_modules_dir /lib/modules/*/kernel/drivers/message/fusion
+        list_modules_dir /lib/modules/*/kernel/drivers/message/i2o
+}
+
echo 0 > /proc/sys/kernel/printk
 
# load all IDE drivers
@@ -21,11 +44,10 @@
 
# load additional kernel modules (from old 11modules.source)
# this order should also enable DMA for all IDE drives
-kernelmodules="rtc floppy usbkbd ide-disk ide-cd"
+kernelmodules="rtc floppy usbkbd ide-disk ide-cd 3w_9xxx aic97xx sata_sil sata_nv"
case $(uname -r) in
    2.4*) kernelmodules="$kernelmodules keybdev mousedev hid ide-detect isa-pnp" ;;
-    2.6*) kernelmodules="$kernelmodules ehci-hcd ohci-hcd uhci-hcd usbhid usbmouse ide-generic mptspi ata_piix" ;;
-
+    2.6*) kernelmodules="$kernelmodules usbhid usbmouse ide-generic" ;;
esac
 
for mod in $kernelmodules; do
@@ -34,26 +56,28 @@
done
 
# let discover do most of the job
-[ -x /etc/init.d/discover ] && /etc/init.d/discover start
+/etc/init.d/discover start
 
# now we can mount the usb file system
mount -t usbfs  usbfs /proc/bus/usb
 
modprobe -a sd_mod sr_mod
 
+for mod in $(list_disk_modules | sort); do
+        modprobe -a $mod
+done
+
echo 6 > /proc/sys/kernel/printk
 
# try to detect graphics card
# the variable videodrv may be used to generate the XF86config file
-[ -x "$(which discover)" ] && {
-    if discover --version | grep "discover \(version \)*1\." ; then
-      videodrv=$(discover --xdriver video 2> /dev/null)
-    else
-      videodrv=$(discover --data-path=xfree86/server/device/driver display)
-    fi
-    [ -n "$videodrv" ] && echo "videodrv=$videodrv" >> $LOGDIR/additional.var
-    echo "Video card detected: $videodrv"
-}
+if discover --version | grep "discover \(version \)*1\." ; then
+    videodrv=$(discover --xdriver video 2> /dev/null)
+else
+    videodrv=$(discover --data-path=xfree86/server/device/driver display)
+fi
+[ -n "$videodrv" ] && echo "videodrv=$videodrv" >> $LOGDIR/additional.var
+echo "Video card detected: $videodrv"
 
  set_disk_info  # calculate number of available disks
  set_disk_info  # calculate number of available disks
  save_dmesg    # save new boot messages (from loading modules)
  save_dmesg    # save new boot messages (from loading modules)


</pre>
</pre>

Latest revision as of 03:19, 29 December 2006

More robust hardware detection

On install add support for all known hard drives. This is useful if installing on new hard drive controllers such as HPs SAS controllers. This is taken from the Debian hardware detections system that is run when doing a netinstall.

@@ -1,10 +1,33 @@
 #! /bin/bash
 
 # (c) Thomas Lange, 2002-2005, lange@informatik.uni-koeln.de
+# 2006/12/19 15:53:08 - Modified by Jonathon Blumenthal
+#    * Added more rubust probing of modules to load all nessicary modules. 
 
 # NOTE: Files named *.source will be evaluated, but their output ignored and instead 
 # the contents of $newclasses will be added to the list of defined classes.
 
+is_not_loaded() {
+        ! ((cut -d" " -f1 /proc/modules | grep -q "^$1\$") || \
+           (cut -d" " -f1 /proc/modules | sed -e 's/_/-/g' | grep -q "^$1\$"))
+}
+
+list_modules_dir() {
+        if [ -d "$1" ]; then
+                find $1 -type f | sed -e 's/\.k\?o$//' -e 's/.*\///'
+        fi
+}
+
+list_disk_modules() {
+        # FIXME: not all of this stuff is disk driver modules, find a way
+        # to separate out only the disk stuff.
+        list_modules_dir /lib/modules/*/kernel/drivers/ide
+        list_modules_dir /lib/modules/*/kernel/drivers/scsi
+        list_modules_dir /lib/modules/*/kernel/drivers/block
+        list_modules_dir /lib/modules/*/kernel/drivers/message/fusion
+        list_modules_dir /lib/modules/*/kernel/drivers/message/i2o
+}
+
 echo 0 > /proc/sys/kernel/printk
 
 # load all IDE drivers
@@ -21,11 +44,10 @@
 
 # load additional kernel modules (from old 11modules.source)
 # this order should also enable DMA for all IDE drives
-kernelmodules="rtc floppy usbkbd ide-disk ide-cd"
+kernelmodules="rtc floppy usbkbd ide-disk ide-cd 3w_9xxx aic97xx sata_sil sata_nv"
 case $(uname -r) in
     2.4*) kernelmodules="$kernelmodules keybdev mousedev hid ide-detect isa-pnp" ;;
-    2.6*) kernelmodules="$kernelmodules ehci-hcd ohci-hcd uhci-hcd usbhid usbmouse ide-generic mptspi ata_piix" ;;
-
+    2.6*) kernelmodules="$kernelmodules usbhid usbmouse ide-generic" ;;
 esac
 
 for mod in $kernelmodules; do
@@ -34,26 +56,28 @@
 done
 
 # let discover do most of the job
-[ -x /etc/init.d/discover ] && /etc/init.d/discover start
+/etc/init.d/discover start
 
 # now we can mount the usb file system
 mount -t usbfs  usbfs /proc/bus/usb
 
 modprobe -a sd_mod sr_mod
 
+for mod in $(list_disk_modules | sort); do
+        modprobe -a $mod
+done
+
 echo 6 > /proc/sys/kernel/printk
 
 # try to detect graphics card
 # the variable videodrv may be used to generate the XF86config file
-[ -x "$(which discover)" ] && {
-    if discover --version | grep "discover \(version \)*1\." ; then
-	videodrv=$(discover --xdriver video 2> /dev/null)
-    else
-	videodrv=$(discover --data-path=xfree86/server/device/driver display)
-    fi
-    [ -n "$videodrv" ] && echo "videodrv=$videodrv" >> $LOGDIR/additional.var
-    echo "Video card detected: $videodrv"
-}
+if discover --version | grep "discover \(version \)*1\." ; then
+    videodrv=$(discover --xdriver video 2> /dev/null)
+else
+    videodrv=$(discover --data-path=xfree86/server/device/driver display)
+fi
+[ -n "$videodrv" ] && echo "videodrv=$videodrv" >> $LOGDIR/additional.var
+echo "Video card detected: $videodrv"
 
 set_disk_info  # calculate number of available disks
 save_dmesg     # save new boot messages (from loading modules)