summaryrefslogtreecommitdiffstats
path: root/abs/not_built/core/hwdetect
diff options
context:
space:
mode:
authorJames Meyer <james.meyer@operamail.com>2013-02-19 21:10:18 (GMT)
committerJames Meyer <james.meyer@operamail.com>2013-02-19 21:10:18 (GMT)
commit2648e999d277eac5c3d331a3609bcc73fafbea71 (patch)
tree40951fb8e7fdbe28a0baa324ae615055203f1e2e /abs/not_built/core/hwdetect
parentc759b5e0c4aa6fc37412b4dee2cf9ad993fd376d (diff)
parent7e6f7ca174e1af67178dc5293a312a4a733eb095 (diff)
downloadlinhes_pkgbuild-2648e999d277eac5c3d331a3609bcc73fafbea71.zip
linhes_pkgbuild-2648e999d277eac5c3d331a3609bcc73fafbea71.tar.gz
linhes_pkgbuild-2648e999d277eac5c3d331a3609bcc73fafbea71.tar.bz2
Merge branch 'testing'
# By James Meyer (1091) and others # Via James Meyer (5) and others * testing: (1148 commits) LinHES-config: during install don't kill off lirc. This keeps the remote active all the way to the finish Change version numbers to 8.0 to match the release number. LinHES-conifg LinHES-system mythdb-initial runit-scripts supplemental-web LinHES-conifig: mv_install.py for the last partition don't go all the way to the end. Gotta leave room for gpt tables. xf86-video-ati: xorg ati driver. LinHES-config: timezip.py add syncing up of parental lvl passwords and starting level with MBE. LinHES-system: correct the logic for breaking out of the wmctrl loop. As written it would break out of the inner loop..but not the 60 iteration loop. e16_theme_settings: remove slide-in prop for new windows. For whatever reason this was preventing mplayer from being positioned correctly for appletrailers. LinHES-config, mythinstall: change case of hd_pvr and serial to all lower refs #902 zilog-firmware: firmware for TX support of the hdpvr and pvr-150 In general I can't recommend anybody using these transmitters but including the firmware just in case someone really wants to linhes-udev-rules: added hdprv_lirc rule. All of these lirc rules are limited to exactly one device. If more then one device is present then only the last device in init will get the symlink runit-scripts: fix logging for igdeamon, add support to remote init script so that the blaster is always the first device in the chain. added support specificly for hd_pvr LinHES-system: add lh_system_restore and lh_system_backup. These scripts are called from the mythmenu. refs #900 iguanair: rebuild with python 2.7 LinHES-system: msg_daemon.py fix init and nasty bug related to timeout. In a nutshell timeout wouldn't work unless a msg without a timeout was called first. linhes-udev-rules: add rules for mce,streamzap,serial lirc devices. mythinstall: recompile for matching libs mythtv: latest .25-fixes and change mythbackup/restore call lh_system_$op to replace mythbackup/mythrestore. mythbackup no longer works correctly with the new windowmanager linhes-scripts: myth2mp3, myth2x264, myth2xvid: use mythutil to get cutlist LinHES-config, supplimental-web: Fix proxy numbering for Ceton infiniTV linhes-system: add additional stuff to the system backup and also introduced an exclude file. The exclude/include files are locate in /home/mythtv/backup_config/ ...
Diffstat (limited to 'abs/not_built/core/hwdetect')
-rw-r--r--abs/not_built/core/hwdetect/PKGBUILD19
-rwxr-xr-xabs/not_built/core/hwdetect/hwdetect592
2 files changed, 611 insertions, 0 deletions
diff --git a/abs/not_built/core/hwdetect/PKGBUILD b/abs/not_built/core/hwdetect/PKGBUILD
new file mode 100644
index 0000000..e386628
--- /dev/null
+++ b/abs/not_built/core/hwdetect/PKGBUILD
@@ -0,0 +1,19 @@
+# $Id: PKGBUILD 86895 2010-08-06 20:29:04Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+pkgname=hwdetect
+pkgver=2010.08
+pkgrel=1
+pkgdesc="Hardware detection script with loading modules and mkinitcpio.conf / rc.conf support"
+arch=(any)
+license=('GPL')
+depends=('sh' 'awk' 'grep' 'coreutils' 'sed' 'e2fsprogs')
+optdepends=('cryptsetup: for encrypt mkinitcpio config support'
+ 'dmraid: for dmraid mkinitcpio config support'
+ 'lvm2: for lvm2 mkinitcpio config support'
+ 'mdadm: for raid mkinitcpio config support')
+source=(hwdetect)
+
+build() {
+ install -D -m 755 ${srcdir}/hwdetect ${pkgdir}/sbin/hwdetect
+}
+md5sums=('cece9e167bb240c82855ffc3f632a5bb')
diff --git a/abs/not_built/core/hwdetect/hwdetect b/abs/not_built/core/hwdetect/hwdetect
new file mode 100755
index 0000000..280cafa
--- /dev/null
+++ b/abs/not_built/core/hwdetect/hwdetect
@@ -0,0 +1,592 @@
+#! /bin/sh
+# Autodetection script for scanning /sys for hardware
+# for Archlinux by Tobias Powalowski <tpowa@archlinux.org>
+usage () {
+ echo "$0 [options]"
+ echo ""
+ echo " This is a tool that detects/lists modules that are exported by /sys"
+ 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"
+ echo " --show-modules-order shows load order of detected modules"
+ echo " --show-agp show AGP modules"
+ echo " --show-acpi show ACPI modules"
+ echo " --show-ide show IDE modules"
+ echo " --show-pata show PATA modules"
+ echo " --show-scsi show SCSI modules"
+ echo " --show-sata show SATA modules"
+ 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-staging show STAGING modules"
+ echo " --show-video show VIDEO modules"
+ echo " --show-other show OTHER modules"
+ echo ""
+ echo " For /etc/mkinitcpio.conf use:"
+ echo " --filesystem add filesystems to MODULES="
+ echo " --hostcontroller show MODULES= for all hostcontrollers"
+ echo " --vmware add BusLogic to MODULES for vmware"
+ echo " --ati-kms add ati kernel mode setting"
+ echo " --intel-kms add intel kernel mode setting"
+ echo " --nvidia-kms add nvidia kernel mode setting"
+ echo ""
+ echo " --rootdevice= autodetected advanced features of rootdevice"
+ echo " --hooks-dir= use this directory for HOOKS check"
+ echo " --advanced show autodetected advanced HOOKS"
+ echo " --hooks show HOOKS="
+ echo " --dmraid add dmraid to HOOKS="
+ echo " --keymap add keymap to HOOKS="
+ echo " --usb add usb to HOOKS="
+ echo " --usbinput add usbinput to HOOKS="
+ echo " --fw add fw to HOOKS="
+ echo " --pcmcia add pcmcia to HOOKS="
+ echo " --nfs add net to HOOKS="
+ echo " --btrfs add btrfs to HOOKS="
+ echo ""
+ echo " For /etc/rc.conf use:"
+ echo " --net show network MODULES"
+ echo " --sound show sound MODULES"
+ echo " --usbhost show usb hostcontroller MODULES"
+ echo " --modules show all detected MODULES"
+ echo ""
+ exit 1
+}
+
+[ "$1" = "" ] && usage
+[ "$1" = "--help" ] && usage
+[ "$1" = "-h" ] && usage
+
+# setting kernel version
+case $1 in
+ --kernel_version=*)
+ KERNEL_VERSION="$(echo $1 | awk -F= '{print $2;}')"
+ ;;
+ --rootdevice=*)
+ ROOTDEVICE="$(echo $1 | awk -F= '{print $2;}')"
+ ;;
+esac
+
+if [ "$KERNEL_VERSION" = "" ]; then
+ KERNEL_VERSION="$(uname -r)"
+fi
+
+# IDE/PATA switch
+[ "$(echo $* | grep '\-ide-legacy')" ] && IDE_LEGACY=1
+
+# uvesafb switch
+[ "$(echo $* | grep '\-uvesafb')" ] && UVESAFB=1
+
+# dmraid switch
+[ "$(echo $* | grep '\-dmraid')" ] && DMRAID=1
+
+# keymap switch
+[ "$(echo $* | grep '\-keymap')" ] && KEYMAP=1
+
+# usb switch
+[ "$(echo $* | grep '\-usb ')" ] && USB=1
+
+# usbinput switch
+[ "$(echo $* | grep '\-usbinput')" ] && USBINPUT=1
+
+# fw switch
+[ "$(echo $* | grep '\-fw')" ] && FW=1
+
+# pcmcia switch
+[ "$(echo $* | grep '\-pcmcia')" ] && PCMCIA=1
+
+# nfs switch
+[ "$(echo $* | grep '\-nfs')" ] && NFS=1
+
+# nfs switch
+[ "$(echo $* | grep '\-btrfs')" ] && BTRFS=1
+
+# vmware switch
+[ "$(echo $* | grep '\-vmware')" ] && VMWARE=1
+
+# vmware switch
+[ "$(echo $* | grep '\-hooks')" ] && HOOKS=1
+
+ADVANCED=""
+# root device check
+if ! [ "$ROOTDEVICE" = "" ]; then
+ # check device mapper devices
+ if [ "$(echo "$ROOTDEVICE" | grep "/dev/mapper")" ]; then
+ # check if encryption is used
+ if [ "$(cryptsetup status $ROOTDEVICE 2>/dev/null)" ]; then
+ ADVANCED="encrypt"
+ # check on lvm
+ realdevice="$(cryptsetup status $ROOTDEVICE 2>/dev/null | grep "device:.*/dev/mapper/" | sed -e 's#.*\ ##g')"
+ if [ "$(lvs $realdevice 2>/dev/null)" ]; then
+ ADVANCED="lvm2 encrypt"
+ vg="$(echo $(lvs -o vg_name --noheading $realdevice))"
+ # check on raid
+ [ "$(pvs -o pv_name,vg_name --noheading | grep "$vg$" | grep "/dev/md")" ] && ADVANCED="mdadm lvm2 encrypt"
+ fi
+ # check on raid
+ if [ "$(cryptsetup status $ROOTDEVICE 2>/dev/null | grep "device:.*/dev/md" | sed -e 's#.*\ ##g')" ]; then
+ ADVANCED="mdadm encrypt"
+ realdevice="$(cryptsetup status $ROOTDEVICE 2>/dev/null | grep "device:.*/dev/md" | sed -e 's#.*\ ##g')"
+ # check on lvm
+ [ "$(mdadm --detail $realdevice | grep "/dev/dm-")" ] && ADVANCED="lvm2 mdadm encrypt"
+ fi
+ fi
+ # check if lvm is used
+ if [ "$(lvs $ROOTDEVICE 2>/dev/null)" ]; then
+ ADVANCED="lvm2"
+ vg="$(echo $(lvs -o vg_name --noheading $ROOTDEVICE))"
+ # check on encrypt
+ if [ "$(pvs -o pv_name,vg_name --noheading | grep "$vg$" | grep "/dev/dm-")" ]; then
+ ADVANCED="encrypt lvm2"
+ # check on raid
+ [ "$(pvs -o pv_name,vg_name --noheading | grep "$vg$" | grep "/dev/md")" ] && ADVANCED="mdadm encrypt lvm2"
+ for i in "$(pvs -o pv_name,vg_name --noheading | grep "$vg$" | grep "/dev/dm-")"; do
+ realdevice="$(echo $i | cut -d ' ' -f1)"
+ #getsymlink="$(readlink $realdevice)"
+ #correctdevice="$(echo $getsymlink | sed -e 's#\.\.#/dev#g')"
+ [ "$(cryptsetup status $realdevice 2>/dev/null | grep "device:.*/dev/md")" ] && ADVANCED="mdadm encrypt lvm2"
+ done
+ fi
+ # check on raid
+ if [ "$(pvs -o pv_name,vg_name --noheading | grep "$vg$" | grep "/dev/md")" ]; then
+ ADVANCED="mdadm lvm2"
+ #check on encrypt
+ [ "$(pvs -o pv_name,vg_name --noheading | grep "$vg$" | grep "/dev/dm-")" ] && ADVANCED="encrypt mdadm lvm2"
+ for i in "$(pvs -o pv_name,vg_name --noheading | grep "$vg$" | grep "/dev/md")"; do
+ realdevice="$(echo $i | cut -d ' ' -f1)"
+ [ "$(mdadm --detail $realdevice | grep "/dev/dm-")" ] && ADVANCED="encrypt mdadm lvm2"
+ done
+ fi
+ fi
+ fi
+ # check md device
+ if [ "$(echo "$ROOTDEVICE" | grep "/dev/md")" ]; then
+ ADVANCED="mdadm"
+ # raid partitions or raid?
+ if [ "$(echo "$ROOTDEVICE" | grep "/dev/md*p")" ]; then
+ realdevice="$(echo $ROOTDEVICE | sed -e 's#p.*##g' -e 's#/dev/##g')"
+ if ! [ "$(find /sys/block/$realdevice/slaves/ -name 'dm*' 2>/dev/null)" = "" ]; then
+ SET_LVM=""
+ SET_ENCRYPT=""
+ for k in $(find /sys/block/$realdevice/slaves/ -name 'dm*' 2>/dev/null); do
+ [ "$(lvs /dev/mapper/$(cat $k/dm/name) 2>/dev/null)" ] && SET_LVM="1"
+ [ "$(cryptsetup status $(cat $k/dm/name) 2>/dev/null)" ] && SET_ENCRYPT="1"
+ # check on lvm
+ [ "$(lvs /dev/mapper/$(cat $k/dm/name) 2>/dev/null)" ] && ADVANCED="lvm2 mdadm"
+ # check on encrypt
+ [ "$(cryptsetup status $(cat $k/dm/name) 2>/dev/null)" ] && ADVANCED="encrypt mdadm"
+ # check encrypted volume device
+ realdevice="$(cryptsetup status $(cat $k/dm/name) 2>/dev/null | grep "device:.*/dev/mapper/" | sed -e 's#.*\ ##g')"
+ [ "$(lvs $realdevice 2>/dev/null)" ] && ADVANCED="lvm2 encrypt mdadm"
+ vg="$(echo $(lvs -o vg_name --noheading /dev/mapper/$(cat $k/dm/name) 2>/dev/null))"
+ [ "$(pvs -o pv_name,vg_name --noheading | grep "$vg$" | grep "/dev/dm-")" ] && ADVANCED="encrypt lvm2 mdadm"
+ done
+ [ "$SET_LVM" = "1" -a "$SET_ENCRYPT" = "1" ] && ADVANCED="lvm2 encrypt mdadm"
+ fi
+ else
+ realdevice="$(echo $ROOTDEVICE | sed -e 's#/dev/##g')"
+ if ! [ "$(find /sys/block/$realdevice/slaves/ -name 'dm*' 2>/dev/null)" = "" ]; then
+ SET_LVM=""
+ SET_ENCRYPT=""
+ for k in $(find /sys/block/$realdevice/slaves/ -name 'dm*' 2>/dev/null); do
+ [ "$(lvs /dev/mapper/$(cat $k/dm/name) 2>/dev/null)" ] && SET_LVM="1"
+ [ "$(cryptsetup status $(cat $k/dm/name) 2>/dev/null)" ] && SET_ENCRYPT="1"
+ # check on lvm
+ [ "$(lvs /dev/mapper/$(cat $k/dm/name) 2>/dev/null)" ] && ADVANCED="lvm2 mdadm"
+ # check on encrypt
+ [ "$(cryptsetup status $(cat $k/dm/name) 2>/dev/null)" ] && ADVANCED="encrypt mdadm"
+ # check encrypted volume device
+ realdevice="$(cryptsetup status $(cat $k/dm/name) 2>/dev/null | grep "device:.*/dev/mapper/" | sed -e 's#.*\ ##g')"
+ [ "$(lvs $realdevice 2>/dev/null)" ] && ADVANCED="lvm2 encrypt mdadm"
+ vg="$(echo $(lvs -o vg_name --noheading /dev/mapper/$(cat $k/dm/name) 2>/dev/null))"
+ [ "$(pvs -o pv_name,vg_name --noheading | grep "$vg$" | grep "/dev/dm-")" ] && ADVANCED="encrypt lvm2 mdadm"
+ done
+ [ "$SET_LVM" = "1" -a "$SET_ENCRYPT" = "1" ] && ADVANCED="lvm2 encrypt mdadm"
+ fi
+ fi
+ fi
+fi
+
+# checking /sys
+if ! [ -d /sys/ ]; then
+ echo "/sys/ is not present -- mount /sys first" >&2
+ exit 1
+fi
+
+: >/tmp/modules-plain
+: >/tmp/modules-stripped
+: >/tmp/modules-sorted
+: >/tmp/moduleslist
+: >/tmp/.blkid
+
+# generate blkid
+/sbin/blkid -c /dev/null -s TYPE > /tmp/.blkid
+
+# find pci aliases
+aliases=$(find /sys/ -noleaf -name modalias -exec cat {} +)
+
+# check for empty aliases
+if [ "$aliases" = "" ]; then
+ echo "hwdetect aborted -- you need a kernel >= 2.6.12" >&2
+ exit 1
+fi
+
+# generate files for the different actions
+modprobe -i -a --set-version=$KERNEL_VERSION --show-depends $aliases >> /tmp/modules-plain 2>/dev/null
+
+# fix ide cdrom detection on proliant 1600
+if [ "$(echo $aliases | grep 'pci:v00000E11d00000001sv00000000sd00000000bc06sc02i00')" ]; then
+ modprobe -i --set-version=$KERNEL_VERSION --show-depends ide-generic >> /tmp/modules-plain 2>/dev/null
+fi
+
+# find PNP devices like parports, soundcards etc.
+# (workaround for rtc, pcspkr, irtty-sir and analog are included)
+if [ "$(find /sys/devices -noleaf -name 'id' | grep /pnp)" ]; then
+ for i in $(find /sys/devices -noleaf -name "id" | grep /pnp); do
+ devid=$(cat $i | grep PNP)
+ [ "$devid" ] || continue
+
+ modprobe -i --set-version=$KERNEL_VERSION --show-depends pnp:d${devid} >> /tmp/modules-plain 2>/dev/null
+
+ [ "$devid" = "PNP0800" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends pcspkr >> /tmp/modules-plain 2>/dev/null
+ [ "$devid" = "PNP0b00" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends rtc_proc >> /tmp/modules-plain 2>/dev/null
+ [ "$devid" = "PNP0b00" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends rtc_sysfs >> /tmp/modules-plain 2>/dev/null
+ [ "$devid" = "PNP0b00" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends rtc_dev >> /tmp/modules-plain 2>/dev/null
+ [ "$devid" = "PNP0510" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends irtty-sir >> /tmp/modules-plain 2>/dev/null
+ [ "$devid" = "PNP0511" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends irtty-sir >> /tmp/modules-plain 2>/dev/null
+ [ "$devid" = "PNPb02f" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends analog >> /tmp/modules-plain 2>/dev/null
+
+ # load ppp-generic if serial ports are detected for modems
+ [ "$devid" = "PNP0501" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends ppp-generic >> /tmp/modules-plain 2>/dev/null
+ 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 (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
+
+# add Buslogic for vmware
+if [ "$VMWARE" = "1" ]; then
+ modprobe -i --set-version=$KERNEL_VERSION --show-depends BusLogic >> /tmp/modules-plain 2>/dev/null
+fi
+
+# Parport modules
+if [ "$(grep 'parport' /tmp/modules-plain)" ]; then
+ modprobe -i --set-version=$KERNEL_VERSION --show-depends lp >> /tmp/modules-plain 2>/dev/null
+ modprobe -i --set-version=$KERNEL_VERSION --show-depends ppdev >> /tmp/modules-plain 2>/dev/null
+fi
+
+# Sound OSS compat modules
+if [ "$(grep 'snd-pcm' /tmp/modules-plain)" ]; then
+ modprobe -i --set-version=$KERNEL_VERSION --show-depends snd-pcm-oss >> /tmp/modules-plain 2>/dev/null
+fi
+if [ "$(grep 'snd-seq' /tmp/modules-plain)" ]; then
+ modprobe -i --set-version=$KERNEL_VERSION --show-depends snd-seq-oss >> /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 "fusion/" | grep -v "block/sx8" | grep -v "message/fusion" | \
+ grep -v "block/cciss" | grep -v "block/cpqarray" | grep -v "block/DAC960" | grep -v "block/virtio" | grep -v "ata/" | \
+ grep -v "net/" | grep -v "pcmcia/" | grep -v "usb/" | \
+ grep -v "firewire" | grep -v "ieee1394/" | grep -v "usbhid/" | grep -v "staging/" | grep -v "wireless/" | grep -v "virtio_pci" >> /tmp/modules-sorted
+# load virtio first!
+grep "virtio_pci" /tmp/modules-stripped >> /tmp/modules-sorted
+# make a correct order for the modules, internal devices have priority!
+# only use old ide modules if boot parameter 'ide-legacy' is given
+if [ "$IDE_LEGACY" = "1" ]; then
+ grep "ide/" /tmp/modules-stripped | grep -v "ide-pci-generic" >> /tmp/modules-sorted
+else
+ grep "ata/pata" /tmp/modules-stripped | grep -v "pata_acpi" >> /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 "block/" /tmp/modules-stripped | grep -v "virtio_blk" | grep -v "sx8" | grep -v "nbd" | grep -v "pktcdvd" | grep -v "floppy" >> /tmp/modules-sorted
+grep "fusion/" /tmp/modules-stripped >> /tmp/modules-sorted
+grep "ata/" /tmp/modules-stripped| grep -v "pata" | grep -v "ata_generic" | grep -v "libata" >> /tmp/modules-sorted
+grep "block/" /tmp/modules-stripped | grep "sx8" >> /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 "staging/" /tmp/modules-stripped >> /tmp/modules-sorted
+grep "pcmcia/" /tmp/modules-stripped >> /tmp/modules-sorted
+
+# speed up usb module loading
+grep "usb-storage" /tmp/modules-stripped >> /tmp/modules-sorted
+grep "usblp" /tmp/modules-stripped >> /tmp/modules-sorted
+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 "firewire/" /tmp/modules-stripped >> /tmp/modules-sorted
+grep "ieee1394/" /tmp/modules-stripped >> /tmp/modules-sorted
+
+# add scsi and virtio device modules at the end
+grep "virtio_blk" /tmp/modules-stripped >> /tmp/modules-sorted
+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
+
+listmods() {
+ key=$1 ; shift
+ ex=
+ while [ "$1" ]; do
+ [ "$ex" ] && ex="$ex|$1" || ex="$1"
+ shift
+ done
+ for ln in $(grep "$key" /tmp/modules-sorted | sed 's|^insmod ||g'); do
+ if [ "$ex" ]; then
+ echo $ln | egrep -v "$ex" | sed -ne "s#^/.*/\(.*\)\.ko.*#\1#p"
+ else
+ echo $ln | sed -ne "s#^/.*/\(.*\)\.ko.*#\1#p"
+ fi
+ done
+}
+showlist() {
+ cat=$1 ; shift
+ [ $# -gt 0 ] || return
+ echo -n "$cat: "
+ for i in $*; do echo -n "$i "; done
+ echo ""
+}
+
+showlist2() {
+ cat=$1 ; shift
+ [ $# -gt 0 ] || return
+ echo -n "$cat="
+ for i in $*; do echo -n "$i "; done
+ 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
+ -hooks-dir=*|--hooks-dir=*)
+ HOOKS_DIR="$(echo $1 | awk -F= '{print $2;}')"
+ ;;
+ --load-modules)
+ # load all detected pci modules
+ for i in $(cat /tmp/moduleslist); do
+ if [ -e /lib/udev/load-modules.sh ]; then
+ /lib/udev/load-modules.sh $i > /dev/null 2>&1
+ else
+ modprobe $i > /dev/null 2>&1
+ fi
+ done
+ ;;
+
+ --unload-modules)
+ # load all detected pci modules
+ for i in $(cat /tmp/moduleslist); do
+ modprobe -r $i > /dev/null 2>&1
+ done
+ ;;
+
+ --show-modules)
+ showlist "AGP " $(listmods agp/)
+ showlist "ACPI " $(listmods acpi/)
+ showlist "IDE " $(listmods ide/ ide-)
+ showlist "PATA " $(listmods ata/pata pata_acpi) $(listmods ata/ata_piix)
+ showlist "SCSI " $(listmods virtio/virtio_pci) $(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 firewire/) $(listmods ieee1394/)
+ showlist "NET " $(listmods net/ irda/)
+ showlist "INPUT " $(listmods input/ pcspkr) $(listmods hid/)
+ showlist "IRDA " $(listmods irda/)
+ showlist "ISDN " $(listmods isdn/)
+ showlist "PCMCIA " $(listmods pcmcia/)
+ showlist "SOUND " $(listmods pcspkr) $(listmods sound/)
+ showlist "STAGING" $(listmods staging/)
+ showlist "VIDEO " $(listmods video/)
+ showlist "OTHER " $(listmods modules/ agp/ acpi/ ide/ scsi/ message/fusion block/sx8 block/cciss block/cpqarray block/DAC960 block/virtio virtio/virtio_pci ata/ usb/ ieee1394 net/ isdn/ input/ irda/ pcmcia/ sound/ video/ firewire/ hid/ staging/)
+ ;;
+
+ --show-modules-order)
+ showlist "MODULES ORDER" $(listmods modules/)
+ ;;
+
+ --show-agp) showlist "AGP " $(listmods agp/) ;;
+ --show-acpi) showlist "ACPI " $(listmods acpi/) ;;
+ --show-ide) showlist "IDE " $(listmods ide/ ide-) ;;
+ --show-pata) showlist "PATA " $(listmods ata/pata pata_acpi) $(listmods ata/ata_piix) ;;
+ --show-scsi) showlist "SCSI " $(listmods virtio/virtio_pci) $(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 firewire/) $(listmods ieee1394/) ;;
+ --show-net) showlist "NET " $(listmods net/ irda/) ;;
+ --show-input) showlist "INPUT " $(listmods input/ pcspkr) $(listmods hid/) ;;
+ --show-irda) showlist "IRDA " $(listmods irda/) ;;
+ --show-isdn) showlist "ISDN " $(listmods isdn/) ;;
+ --show-pcmcia) showlist "PCMCIA " $(listmods pcmcia/) ;;
+ --show-sound) showlist "SOUND " $(listmods pcspkr) $(listmods sound/) ;;
+ --show-staging) showlist "STAGING" $(listmods staging/) ;;
+ --show-video) showlist "VIDEO " $(listmods video/) ;;
+ --show-other) showlist "OTHER " $(listmods .ko agp/ acpi/ ide/ scsi/ message/fusion block/sx8 block/cciss block/cpqarray block/DAC960 block/virtio virtio/virtio_pci ata/ usb/ ieee1394 net/ isdn/ input/ irda/ pcmcia/ sound/ video/ firewire/ hid/ staging/) ;;
+ --filesystem) FILESYSTEM="ext2 ext3 ext4 nilfs2 btrfs reiserfs xfs jfs vfat"
+ for i in $FILESYSTEM; do
+ [ "$(grep $i /tmp/.blkid)" ] && FS="$FS $i"
+ done
+ [ "$(echo $FS | grep btrfs)" ] && FS="$FS crc32c"
+ MODULES_INITRAMFS="$MODULES_INITRAMFS $FS"
+ showlist2 "MODULES" \"$MODULES_INITRAMFS\" | sed -e 's/(\ /(/g' -e 's/"\ /"/g' -e 's/\ "/"/g' -e 's/\ \ /\ /g'
+ ;;
+ --hostcontroller)HOSTCONTROLLER="$(listmods virtio/virtio_pci) $(listmods ide/ ide-) $(listmods ata/pata pata_acpi) $(listmods scsi/ /sg.ko /st.ko scsi_mod sr_mod sd_mod) $(listmods message/fusion/) $(listmods drivers/block/ virtio_blk nbd pktcdvd sx8 floppy) $(listmods ata/ pata ata_generic) $(listmods drivers/block/sx8) $(listmods ehci-hcd) $(listmods uhci-hcd) $(listmods ohci-hcd) $(listmods virtio_blk)"
+ MODULES_INITRAMFS="$MODULES_INITRAMFS $HOSTCONTROLLER"
+ showlist2 "MODULES" \"$MODULES_INITRAMFS\" | sed -e 's/(\ /(/g' -e 's/"\ /"/g' -e 's/\ "/"/g' -e 's/\ \ /\ /g'
+ ;;
+ --ati-kms) KMS="radeon"
+ MODULES_INITRAMFS="$KMS $MODULES_INITRAMFS"
+ showlist2 "MODULES" \"$MODULES_INITRAMFS\" | sed -e 's/(\ /(/g' -e 's/"\ /"/g' -e 's/\ "/"/g' -e 's/\ \ /\ /g'
+ ;;
+ --intel-kms) KMS="i915"
+ MODULES_INITRAMFS="$KMS $MODULES_INITRAMFS"
+ showlist2 "MODULES" \"$MODULES_INITRAMFS\" | sed -e 's/(\ /(/g' -e 's/"\ /"/g' -e 's/\ "/"/g' -e 's/\ \ /\ /g'
+ ;;
+ --nvidia-kms) KMS="nouveau"
+ MODULES_INITRAMFS="$KMS $MODULES_INITRAMFS"
+ showlist2 "MODULES" \"$MODULES_INITRAMFS\" | sed -e 's/(\ /(/g' -e 's/"\ /"/g' -e 's/\ "/"/g' -e 's/\ \ /\ /g'
+ ;;
+ --uvesafb) FB="uvesafb"
+ MODULES_INITRAMFS="$FB $MODULES_INITRAMFS"
+ ! [ "$HOOKS" = "1" ] && showlist2 "MODULES" \"$MODULES_INITRAMFS\" | sed -e 's/(\ /(/g' -e 's/"\ /"/g' -e 's/\ "/"/g' -e 's/\ \ /\ /g'
+ ;;
+ --fbmodule) FB=""
+ for i in $(cat /etc/modprobe.d/framebuffer_blacklist.conf); do
+ i=$(echo $i | sed -e 's/blacklist //g')
+ # check if already in FB array, to avoid double entries
+ if [ "$(cat /proc/modules | grep ^$i)" ]; then
+ ! [ "$(grep -w $FB)" ] && FB="$i"
+ fi
+ done
+ MODULES_INITRAMFS="$FB $MODULES_INITRAMFS "
+ ! [ "$HOOKS" = "1" ] && showlist2 "MODULES" \"$MODULES_INITRAMFS\" | sed -e 's/(\ /(/g' -e 's/"\ /"/g' -e 's/\ "/"/g' -e 's/\ \ /\ /g'
+ ;;
+ --net) if [ "$(showlist2 "MODULES" \($(listmods drivers/net/ irda ppp_generic slhc) $(listmods drivers/usb/net/) $(listmods drivers/staging/) \) | sed -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g' | grep '8139cp')" ] ; then
+ if [ "$(dmesg | grep 'use 8139too')" ]; then
+ MODULES_EXPORTED="$MODULES_EXPORTED $(listmods drivers/net/ irda ppp_generic slhc) $(listmods drivers/usb/net/) $(listmods drivers/staging/)"
+ MODULES_EXPORTED="$(echo $MODULES_EXPORTED | sed -e 's/8139cp//g')"
+ BLACKLIST_UDEV="!8139cp"
+ for i in $MODULES_EXPORTED; do
+ BLACKLIST_UDEV="$BLACKLIST_UDEV !$i"
+ done
+ showlist2 "MODULES" \($BLACKLIST_UDEV $MODULES_EXPORTED\) | sed -e 's/(\ /(/g' -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g'
+ else
+ MODULES_EXPORTED="$MODULES_EXPORTED $(listmods drivers/net/ irda ppp_generic slhc) $(listmods drivers/usb/net/) $(listmods drivers/staging/)"
+ MODULES_EXPORTED="$(echo $MODULES_EXPORTED | sed -e 's/8139too//g')"
+ BLACKLIST_UDEV="!8139too"
+ for i in $MODULES_EXPORTED; do
+ BLACKLIST_UDEV="$BLACKLIST_UDEV !$i"
+ done
+ showlist2 "MODULES" \($BLACKLIST_UDEV $MODULES_EXPORTED\) | sed -e 's/(\ /(/g' -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g'
+ fi
+ else
+ MODULES_EXPORTED="$MODULES_EXPORTED $(listmods drivers/net/ irda ppp_generic slhc) $(listmods drivers/usb/net/) $(listmods drivers/staging/)"
+ BLACKLIST_UDEV=""
+ for i in $MODULES_EXPORTED; do
+ BLACKLIST_UDEV="$BLACKLIST_UDEV !$i"
+ done
+ showlist2 "MODULES" \($BLACKLIST_UDEV $MODULES_EXPORTED\) | sed -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g'
+ fi
+ ;;
+ --sound) MODULES_EXPORTED="$MODULES_EXPORTED $(listmods pcspkr) $(listmods sound/)"
+ BLACKLIST_UDEV=""
+ for i in $MODULES_EXPORTED; do
+ BLACKLIST_UDEV="$BLACKLIST_UDEV !$i"
+ done
+ showlist2 "MODULES" \($BLACKLIST_UDEV $MODULES_EXPORTED\) | sed -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g'
+ ;;
+ --usbhost) MODULES_EXPORTED="$MODULES_EXPORTED $(listmods ehci-hcd) $(listmods uhci-hcd) $(listmods ohci-hcd)"
+ BLACKLIST_UDEV=""
+ for i in $MODULES_EXPORTED; do
+ BLACKLIST_UDEV="$BLACKLIST_UDEV !$i"
+ done
+ showlist2 "MODULES" \($BLACKLIST_UDEV $MODULES_EXPORTED\) | sed -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g'
+ ;;
+ --modules) showlist2 "MODULES" \($(listmods modules/)\) | sed -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g'
+ ;;
+ --hooks)
+ if [ "$HOOKS_DIR" = "" ]; then
+ HOOKS_DIR="/lib/initcpio/install"
+ fi
+ START_HOOKS="base v86d udev keymap autodetect ide pata scsi sata usb fw pcmcia net dmraid usbinput $ADVANCED btrfs filesystems"
+ # remove the ones that don't exist on the system
+ for i in ${START_HOOKS}; do
+ if ! [ -e "${HOOKS_DIR}/$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
+ if ! [ "$USBINPUT" = "1" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/usbinput//g")
+ fi
+ if ! [ "$KEYMAP" = "1" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/keymap//g")
+ fi
+ if ! [ "$UVESAFB" = "1" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/v86d//g")
+ fi
+ if ! [ "$DMRAID" = "1" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/dmraid//g")
+ fi
+ if ! [ "$USB" = "1" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/usb\ //g")
+ fi
+ if ! [ "$FW" = "1" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/fw//g")
+ fi
+ if ! [ "$PCMCIA" = "1" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/pcmcia//g")
+ fi
+ if ! [ "$NFS" = "1" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/net//g")
+ fi
+ if ! [ "$BTRFS" = "1" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/btrfs//g")
+ fi
+ echo "HOOKS=\"$START_HOOKS\"" | sed -e 's/"\ /"/g' -e 's/\ "/"/g' -e 's/\ \ /\ /g'
+ ;;
+ --advanced) ADVANCED_ARCHBOOT=""
+ for i in $ADVANCED; do
+ ADVANCED_ARCHBOOT="$ADVANCED_ARCHBOOT $(echo arch_$i)"
+ done
+ echo "$ADVANCED_ARCHBOOT"
+ ;;
+ esac
+ shift
+done
+
+# cleanup
+rm /tmp/modules-plain
+rm /tmp/modules-sorted
+rm /tmp/modules-stripped
+rm /tmp/moduleslist
+
+# vim: set ts=2 sw=2 noet: