User:JonathonBlumenthal/Handy Patches: Difference between revisions

From FAIWiki
Jump to navigation Jump to search
mNo edit summary
 
mNo edit summary
Line 1: Line 1:
==More robust hardware detection==
==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.
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.
<pre>
@@ -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)
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
save_dmesg    # save new boot messages (from loading modules)
</pre>

Revision as of 03:17, 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)
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
 save_dmesg     # save new boot messages (from loading modules)