aboutsummaryrefslogtreecommitdiff
path: root/hwdetect
diff options
context:
space:
mode:
authorTobias Powalowski <tpowa@archlinux.org>2006-12-10 14:34:46 +0000
committerTobias Powalowski <tpowa@archlinux.org>2006-12-10 14:34:46 +0000
commit3fcefcf13b87883216dd5331b2aed84db473de04 (patch)
treef43a70ae306f6fc97f4d87df36b97fadd32ff4d0 /hwdetect
parent6b671f7901477d36fca5f8901731e4c0d5e7948f (diff)
downloadinitscripts-3fcefcf13b87883216dd5331b2aed84db473de04.tar.xz
'upgpkg: added voodoo tag and new hwdetect'
Diffstat (limited to 'hwdetect')
-rwxr-xr-xhwdetect223
1 files changed, 164 insertions, 59 deletions
diff --git a/hwdetect b/hwdetect
index 64b3fa9..1506904 100755
--- a/hwdetect
+++ b/hwdetect
@@ -8,6 +8,7 @@ usage () {
echo ""
echo " Options:"
echo " --kernel_version= use kernel version (no autodetect)"
+ echo " --ide-legacy use old ide modules instead of pata"
echo " --load-modules load all detected modules"
echo " --unload-modules unload all detected modules"
echo " --show-modules show all detected modules"
@@ -19,20 +20,26 @@ usage () {
echo " --show-usb show USB modules"
echo " --show-fw show FIREWIRE modules"
echo " --show-net show NETWORK modules"
+ echo " --show-input show INPUT modules"
+ echo " --show-irda show IRDA modules"
echo " --show-isdn show ISDN modules"
echo " --show-pcmcia show PCMCIA modules"
echo " --show-sound show SOUND modules"
echo " --show-video show VIDEO modules"
echo " --show-other show OTHER modules"
echo ""
- echo " For /etc/mkinitrd.conf use:"
- echo " --ide show detected HOSTCONTROLLER_IDE"
- echo " --scsi show detected HOSTCONTROLLER_SCSI"
- echo " --sata show detected HOSTCONTROLLER_SATA"
- echo " --usb show detected HOSTCONTROLER_USB"
+ echo " For /etc/mkinitcpio.conf use:"
+ echo " --hostcontroller show MODULES= for all hostcontrollers"
+ echo " --vmware add BusLogic to MODULES for vmware"
+ echo ""
+ echo " --hooks show HOOKS="
+ echo " --raid add raid to HOOKS="
+ echo " --encrypt add encrypt to HOOKS="
+ echo " --lvm2 add lvm2 to HOOKS="
echo ""
echo " For /etc/rc.conf use:"
- echo " --modules show detected MODULES"
+ echo " --net show network MODULES"
+ echo " --modules show all detected MODULES"
echo ""
exit 1
}
@@ -52,9 +59,24 @@ if [ "$KERNEL_VERSION" == "" ]; then
KERNEL_VERSION="`uname -r`"
fi
+# IDE/PATA switch
+[ "$(echo $* | grep '\-ide-legacy')" ] && IDE_LEGACY=1
+
+# raid switch
+[ "$(echo $* | grep '\-raid')" ] && RAID=1
+
+# encrypt switch
+[ "$(echo $* | grep '\-encrypt')" ] && ENCRYPT=1
+
+# lvm2 switch
+[ "$(echo $* | grep '\-lvm2')" ] && LVM2=1
+
+# vmware switch
+[ "$(echo $* | grep '\-vmware')" ] && VMWARE=1
+
# checking /sys
-if ! [ -d /sys/devices ]; then
- echo "/sys/devices is not present -- mount /sys first" >&2
+if ! [ -d /sys/ ]; then
+ echo "/sys/ is not present -- mount /sys first" >&2
exit 1
fi
@@ -64,7 +86,7 @@ fi
: >/tmp/moduleslist
# find pci aliases
-aliases=`find /sys/devices/ -noleaf -name modalias -exec cat {} +`
+aliases=`find /sys/ -noleaf -name modalias -exec cat {} +`
# check for empty aliases
if [ "$aliases" == "" ]; then
@@ -76,13 +98,13 @@ fi
modprobe -a --set-version=$KERNEL_VERSION --show-depends $aliases >> /tmp/modules-plain 2>/dev/null
# fix evdev detection
-if [ "`echo $aliases | grep 'serio:ty06pr*[id]*[ex]*'`" ]; then
- modprobe -i --set-version=$KERNEL_VERSION --show-depends evdev >> /tmp/modules-plain 2>/dev/null
-fi
+#if [ "`echo $aliases | grep 'serio:ty06pr*[id]*[ex]*'`" ]; then
+# modprobe -i --set-version=$KERNEL_VERSION --show-depends evdev >> /tmp/modules-plain 2>/dev/null
+#fi
# fix Intel536ep detection
-if [ "`echo $aliases | grep 'pci:v00008086d00001040sv000016BEsd00001040bc07sc80i00'`" ]; then
- modprobe -i --set-version=$KERNEL_VERSION --show-depends Intel536 >> /tmp/modules-plain 2>/dev/null
-fi
+#if [ "`echo $aliases | grep 'pci:v00008086d00001040sv000016BEsd00001040bc07sc80i00'`" ]; then
+# modprobe -i --set-version=$KERNEL_VERSION --show-depends Intel536 >> /tmp/modules-plain 2>/dev/null
+#fi
# find PNP devices like parports, soundcards etc.
# (workaround for rtc, pcspkr, irtty-sir and analog are included)
@@ -105,37 +127,42 @@ if [ "`find /sys/devices -noleaf -name 'id' | grep /pnp`" ]; then
fi
# IDE disks/cdroms/floppy/tape
-if [ "`find /proc/ide -noleaf -name 'media'`" ]; then
- for i in $(cat `find /proc/ide -noleaf -name "media"`); do
- case $i in
- cdrom) modprobe -i --set-version=$KERNEL_VERSION --show-depends ide-cd >> /tmp/modules-plain 2>/dev/null ;;
- floppy) modprobe -i --set-version=$KERNEL_VERSION --show-depends ide-floppy >> /tmp/modules-plain 2>/dev/null ;;
- disk) modprobe -i --set-version=$KERNEL_VERSION --show-depends ide-disk >> /tmp/modules-plain 2>/dev/null ;;
- tape) modprobe -i --set-version=$KERNEL_VERSION --show-depends ide-tape >> /tmp/modules-plain 2>/dev/null ;;
- esac
- done
-fi
+#if [ "`find /proc/ide -noleaf -name 'media'`" ]; then
+# for i in $(cat `find /proc/ide -noleaf -name "media"`); do
+# case $i in
+# cdrom) modprobe -i --set-version=$KERNEL_VERSION --show-depends ide-cd >> /tmp/modules-plain 2>/dev/null ;;
+# floppy) modprobe -i --set-version=$KERNEL_VERSION --show-depends ide-floppy >> /tmp/modules-plain 2>/dev/null ;;
+# disk) modprobe -i --set-version=$KERNEL_VERSION --show-depends ide-disk >> /tmp/modules-plain 2>/dev/null ;;
+# tape) modprobe -i --set-version=$KERNEL_VERSION --show-depends ide-tape >> /tmp/modules-plain 2>/dev/null ;;
+# esac
+# done
+#fi
# SCSI disks/cdroms/tapes/generic devices
if [ "`find /sys/devices -noleaf -name 'type'`" ]; then
for i in $(cat `find /sys/devices -noleaf -name "type"`); do
- case $i in (3|4|5) modprobe -i --set-version=$KERNEL_VERSION --show-depends sr-mod >> /tmp/modules-plain 2>/dev/null ;; esac
- case $i in (2|3|5|6|8|9) modprobe -i --set-version=$KERNEL_VERSION --show-depends sg >> /tmp/modules-plain 2>/dev/null ;; esac
+ case $i in (4|5) modprobe -i --set-version=$KERNEL_VERSION --show-depends sr-mod >> /tmp/modules-plain 2>/dev/null ;; esac
+ case $i in (2|3|6|8|9) modprobe -i --set-version=$KERNEL_VERSION --show-depends sg >> /tmp/modules-plain 2>/dev/null ;; esac
case $i in (0|7|14) modprobe -i --set-version=$KERNEL_VERSION --show-depends sd-mod >> /tmp/modules-plain 2>/dev/null ;; esac
case $i in (1) modprobe -i --set-version=$KERNEL_VERSION --show-depends st >> /tmp/modules-plain 2>/dev/null ;; esac
done
fi
-# Firewire disks/cdroms/network
-if [ "`grep 'ohci1394' /tmp/modules-plain`" ]; then
- modprobe -i --set-version=$KERNEL_VERSION --show-depends sbp2 >> /tmp/modules-plain 2>/dev/null
- modprobe -i --set-version=$KERNEL_VERSION --show-depends eth1394 >> /tmp/modules-plain 2>/dev/null
+# add Buslogic for vmware
+if [ "$VMWARE" = "1" ]; then
+ modprobe -i --set-version=$KERNEL_VERSION --show-depends BusLogic >> /tmp/modules-plain 2>/dev/null
fi
+# Firewire disks/cdroms/network
+#if [ "`grep 'ohci1394' /tmp/modules-plain`" ]; then
+# modprobe -i --set-version=$KERNEL_VERSION --show-depends sbp2 >> /tmp/modules-plain 2>/dev/null
+# modprobe -i --set-version=$KERNEL_VERSION --show-depends eth1394 >> /tmp/modules-plain 2>/dev/null
+#fi
+
# Modem devices
-case $i in (Intel536|Intel537|ltmodem|ltserial|slamr|slusb) \
- grep "$i" /tmp/modules-plain && modprobe -i --set-version=$KERNEL_VERSION --show-depends ppp-generic >> /tmp/modules-plain 2>/dev/null ;; \
- esac
+#case $i in (Intel536|Intel537|ltmodem|ltserial|slamr|slusb) \
+# grep "$i" /tmp/modules-plain && modprobe -i --set-version=$KERNEL_VERSION --show-depends ppp-generic >> /tmp/modules-plain 2>/dev/null ;; \
+# esac
# Parport modules
if [ "`grep 'parport' /tmp/modules-plain`" ]; then
@@ -152,22 +179,29 @@ if [ "`grep 'snd-seq' /tmp/modules-plain`" ]; then
fi
# USB modules
-if [ "`grep 'usb/' /tmp/modules-plain`" ]; then
- modprobe -i --set-version=$KERNEL_VERSION --show-depends usbhid >> /tmp/modules-plain 2>/dev/null
- modprobe -i --set-version=$KERNEL_VERSION --show-depends usb-storage >> /tmp/modules-plain 2>/dev/null
- modprobe -i --set-version=$KERNEL_VERSION --show-depends usblp >> /tmp/modules-plain 2>/dev/null
-fi
+#if [ "`grep 'usb/' /tmp/modules-plain`" ]; then
+# modprobe -i --set-version=$KERNEL_VERSION --show-depends usbhid >> /tmp/modules-plain 2>/dev/null
+# modprobe -i --set-version=$KERNEL_VERSION --show-depends usb-storage >> /tmp/modules-plain 2>/dev/null
+# modprobe -i --set-version=$KERNEL_VERSION --show-depends usblp >> /tmp/modules-plain 2>/dev/null
+#fi
+
sort -u /tmp/modules-plain >> /tmp/modules-stripped
# OTHER modules loading first for speed up!
-grep -v "ide/" /tmp/modules-stripped | grep -v "scsi/" | grep -v "ata" | \
+grep -v "ide/" /tmp/modules-stripped | grep -v "scsi/" | grep -v "ata/" | \
grep -v "net/" | grep -v "pcmcia/" | grep -v "usb/" | \
grep -v "ieee1394/" >> /tmp/modules-sorted
# make a correct order for the modules, internal devices have priority!
-grep "ide/" /tmp/modules-stripped >> /tmp/modules-sorted
-grep "scsi/" /tmp/modules-stripped | grep -v "sata" | grep -v "libata" | grep -v "ata_piix" >> /tmp/modules-sorted
-grep "ata" /tmp/modules-stripped | grep -v "eata" >> /tmp/modules-sorted
+# only use old ide modules if boot parameter 'ide-legacy' is given
+if [ "$IDE_LEGACY" = "1" ]; then
+ grep "ide/" /tmp/modules-stripped >> /tmp/modules-sorted
+else
+ grep "ata/pata" /tmp/modules-stripped >> /tmp/modules-sorted
+ grep "ata/ata_generic" /tmp/modules-stripped >> /tmp/modules-sorted
+fi
+grep "scsi/" /tmp/modules-stripped | grep -v "sd_mod" | grep -v "sr_mod" | grep -v "/sg.ko" | grep -v "/st.ko" >> /tmp/modules-sorted
+grep "ata/" /tmp/modules-stripped| grep -v "pata" | grep -v "ata_generic" | grep -v "libata" >> /tmp/modules-sorted
grep "net/" /tmp/modules-stripped | grep -v "wireless/" | grep -v "usb/" >> /tmp/modules-sorted
grep "wireless/" /tmp/modules-stripped >> /tmp/modules-sorted
grep "pcmcia/" /tmp/modules-stripped >> /tmp/modules-sorted
@@ -179,9 +213,17 @@ grep "usbhid" /tmp/modules-stripped >> /tmp/modules-sorted
grep "usb/" /tmp/modules-stripped | grep -v "usb-storage" | grep -v "usbhid" | grep -v "usblp" >> /tmp/modules-sorted
grep "ieee1394/" /tmp/modules-stripped >> /tmp/modules-sorted
+# add scsi device modules at the end
+grep "sd_mod" /tmp/modules-stripped >> /tmp/modules-sorted
+grep "sr_mod" /tmp/modules-stripped >> /tmp/modules-sorted
+grep "/st.ko" /tmp/modules-stripped >> /tmp/modules-sorted
+grep "/sg.ko" /tmp/modules-stripped >> /tmp/modules-sorted
+
+
sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p" /tmp/modules-sorted >> /tmp/moduleslist
# delete modules that are blacklisted
+BLACKLIST="${BLACKLIST} $(echo ${disablemodules} | sed 's|-|_|g' | sed 's|,| |g')"
for i in $BLACKLIST; do
[ "$i" ] || continue
sed -i -e "/^$i$/d" /tmp/moduleslist
@@ -226,6 +268,13 @@ showlist2() {
echo ""
}
+showlist3() {
+ cat=$1 ; shift
+ [ $# -gt 0 ] || return
+ for i in $*; do echo -n "$i "; done
+ echo ""
+}
+
# starting different actions
while [ $# -gt 0 ]; do
case $1 in
@@ -246,16 +295,19 @@ while [ $# -gt 0 ]; do
--show-modules)
showlist "AGP " `listmods agp/`
showlist "IDE " `listmods ide/`
- showlist "SCSI " `listmods scsi/ sata ata_piix libata` `listmods message/fusion/` `listmods drivers/block/ nbd pktcdvd sx8`
- showlist "SATA " `listmods ata eata` `listmods drivers/block/sx8`
- showlist "USB " `listmods usb/`
+ showlist "PATA " `listmods ata/pata` `listmods ata/ata_generic`
+ showlist "SCSI " `listmods scsi/` `listmods message/fusion/` `listmods drivers/block/ nbd pktcdvd sx8 floppy`
+ showlist "SATA " `listmods ata/ pata ata_generic` `listmods drivers/block/sx8`
+ showlist "USB " `listmods usb/ usb/input`
showlist "FW " `listmods ieee1394/`
- showlist "NET " `listmods net/`
+ showlist "NET " `listmods net/ irda/`
+ showlist "INPUT " `listmods input/`
+ showlist "IRDA " `listmods irda/`
showlist "ISDN " `listmods isdn/`
showlist "PCMCIA " `listmods pcmcia/`
showlist "SOUND " `listmods sound/`
showlist "VIDEO " `listmods video/`
- showlist "OTHER " `listmods modules/ agp/ ide/ scsi/ sata usb/ ieee1394 net/ isdn/ pcmcia/ sound/ video/`
+ showlist "OTHER " `listmods modules/ agp/ ide/ scsi/ ata/ usb/ ieee1394 net/ isdn/ input/ irda/ pcmcia/ sound/ video/ `
;;
--show-modules-order)
@@ -264,22 +316,75 @@ while [ $# -gt 0 ]; do
--show-agp) showlist "AGP " `listmods agp/` ;;
--show-ide) showlist "IDE " `listmods ide/` ;;
- --show-scsi) showlist "SCSI " `listmods scsi/ sata ata_piix libata` `listmods message/fusion/` `listmods drivers/block/ nbd pktcdvd sx8`;;
- --show-sata) showlist "SATA " `listmods ata eata` `listmods drivers/block/sx8` ;;
- --show-usb) showlist "USB " `listmods usb/` ;;
+ --show-pata) showlist "PATA " `listmods ata/pata` `listmods ata/ata_generic`;;
+ --show-scsi) showlist "SCSI " `listmods scsi/` `listmods message/fusion/` `listmods drivers/block/ nbd pktcdvd sx8 floppy`;;
+ --show-sata) showlist "SATA " `listmods ata/ pata ata_generic` `listmods drivers/block/sx8` ;;
+ --show-usb) showlist "USB " `listmods usb/ usb/input` ;;
--show-fw) showlist "FW " `listmods ieee1394/` ;;
- --show-net) showlist "NET " `listmods net/` ;;
+ --show-net) showlist "NET " `listmods net/ irda/` ;;
+ --show-input) showlist "INPUT " `listmods input/` ;;
+ --show-irda) showlist "IRDA " `listmods irda/` ;;
--show-isdn) showlist "ISDN " `listmods isdn/` ;;
--show-pcmcia) showlist "PCMCIA " `listmods pcmcia/` ;;
--show-sound) showlist "SOUND " `listmods sound/` ;;
--show-video) showlist "VIDEO " `listmods video/` ;;
- --show-other) showlist "OTHER " `listmods .ko agp/ ide/ scsi/ sata usb/ ieee1394 net/ isdn/ pcmcia/ sound/ video` ;;
-
- --ide) showlist "HOSTCONTROLLER_IDE" `listmods ide/pci` ;;
- --scsi) showlist "HOSTCONTROLLER_SCSI" `listmods scsi/ sata ata_piix libata` `listmods message/fusion/` `listmods drivers/block/ nbd pktcdvd sx8`;;
- --sata) showlist "HOSTCONTROLLER_SATA" `listmods ata eata libata` `listmods drivers/block/sx8` ;;
- --usb) showlist "HOSTCONTROLLER_USB" `listmods usb/host` "" ;;
- --modules) showlist2 "MODULES" \(`listmods modules/`\)
+ --show-other) showlist "OTHER " `listmods .ko agp/ ide/ scsi/ ata/ usb/ ieee1394 net/ isdn/ input/ irda/ pcmcia/ sound/ video` ;;
+ --hostcontroller) showlist2 "MODULES" \"`listmods ide/pci` `listmods ata/pata` `listmods ata/ata_generic` `listmods scsi/ /sg.ko /st.ko sr_mod sd_mod` `listmods message/fusion/` `listmods drivers/block/ nbd pktcdvd sx8 floppy` `listmods ata/ pata ata_generic` `listmods drivers/block/sx8`\" | sed -e 's/"\ /"/g' -e 's/\ "/"/g' -e 's/\ \ /\ /g'
+ ;;
+ --net) if [ "$(showlist2 "MODULES" \(`listmods drivers/net/ irda ppp_generic slhc` `listmods drivers/usb/net/`\) | sed -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g' | grep '8139cp')" ] ; then
+ if [ "$(dmesg | grep '"8139too"')" ]; then
+ showlist2 "MODULES" \(`listmods drivers/net/ irda ppp_generic slhc` `listmods drivers/usb/net/`\) | sed -e 's/8139cp//g' -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g'
+ else
+ showlist2 "MODULES" \(`listmods drivers/net/ irda ppp_generic slhc` `listmods drivers/usb/net/`\) | sed -e 's/8139too//g' -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g'
+ fi
+ else
+ showlist2 "MODULES" \(`listmods drivers/net/ irda ppp_generic slhc` `listmods drivers/usb/net/`\) | sed -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g'
+ fi
+ ;;
+ --modules) showlist2 "MODULES" \(`listmods modules/`\) | sed -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g'
+ ;;
+ --hooks)
+ START_HOOKS="base udev autodetect ide pata scsi sata raid usbinput keymap encrypt lvm2 filesystems"
+ # remove the ones that don't exist on the system
+ for i in ${START_HOOKS}; do
+ if ! [ -e "/lib/initcpio/install/$i" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/${i}//g")
+ fi
+ done
+ # ide/pata check
+ if [ "${IDE_LEGACY}" = "1" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/pata//g")
+ else
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/ide//g")
+ fi
+ # usbinput, check for usbhid
+ if ! [ "$(cat /proc/modules | grep usbhid)" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/usbinput//g")
+ fi
+ # keymap, check rc.conf for KEYMAP="us"
+ if [ "$(grep '^KEYMAP="us"' /etc/rc.conf)" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/keymap//g")
+ fi
+ ### TODO raid, check for presence of md devices in /dev
+ #if ! [ "$(ls /dev/md* > /dev/null 2>&1 )" ]; then
+ # START_HOOKS=$(echo $START_HOOKS | sed -e "s/raid//g")
+ #fi
+ if ! [ "$RAID" = "1" ] ; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/raid//g")
+ fi
+ ### TODO lvm2, encrypt check
+ # encrypt, check for presence of mapper/root
+ #if ! [ "$(ls /dev/mapper/root > /dev/null 2>&1 )" ]; then
+ # START_HOOKS=$(echo $START_HOOKS | sed -e "s/encrypt//g")
+ #fi
+ if ! [ "$ENCRYPT" = "1" ] ; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/encrypt//g")
+ fi
+ if ! [ "$LVM2" = "1" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/lvm2//g")
+ fi
+ echo "HOOKS=\"$START_HOOKS\"" | sed -e 's/"\ /"/g' -e 's/\ "/"/g' -e 's/\ \ /\ /g'
+ ;;
esac
shift
done