From 567edd5aa95d5728b50f9fff6d71c368a7f3966a Mon Sep 17 00:00:00 2001 From: Tobias Powalowski Date: Sat, 16 Dec 2006 13:31:00 +0000 Subject: 'upgpkg: readded rc.sysinit and hwdetect for 0.8 package' --- hwdetect | 223 ++++++++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 164 insertions(+), 59 deletions(-) (limited to 'hwdetect') 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 -- cgit v1.2.3