[arch-commits] Commit in hwdetect/repos (3 files)

Tobias Powalowski tpowa at archlinux.org
Sat Jan 14 10:51:14 UTC 2012


    Date: Saturday, January 14, 2012 @ 05:51:13
  Author: tpowa
Revision: 146612

archrelease: copy trunk to testing-any

Added:
  hwdetect/repos/testing-any/
  hwdetect/repos/testing-any/PKGBUILD
    (from rev 146611, hwdetect/trunk/PKGBUILD)
  hwdetect/repos/testing-any/hwdetect
    (from rev 146611, hwdetect/trunk/hwdetect)

----------+
 PKGBUILD |   19 ++
 hwdetect |  575 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 594 insertions(+)

Copied: hwdetect/repos/testing-any/PKGBUILD (from rev 146611, hwdetect/trunk/PKGBUILD)
===================================================================
--- testing-any/PKGBUILD	                        (rev 0)
+++ testing-any/PKGBUILD	2012-01-14 10:51:13 UTC (rev 146612)
@@ -0,0 +1,19 @@
+# $Id$
+# Maintainer: Tobias Powalowski <tpowa at archlinux.org>
+pkgname=hwdetect
+pkgver=2012.01
+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=('cdb979d7642145274bd1e57a8c4b9b83')

Copied: hwdetect/repos/testing-any/hwdetect (from rev 146611, hwdetect/trunk/hwdetect)
===================================================================
--- testing-any/hwdetect	                        (rev 0)
+++ testing-any/hwdetect	2012-01-14 10:51:13 UTC (rev 146612)
@@ -0,0 +1,575 @@
+#! /bin/sh
+# Autodetection script for scanning /sys for hardware
+# for Archlinux by Tobias Powalowski <tpowa at archlinux.org>
+# '--modules-not-loaded' patch by Grzegorz Wierzowiecki <grzegorz.wierzowiecki_4t_pjwstk.edu.pl>
+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 "    --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 "    --shutdown             add shutdown to HOOKS="
+	echo ""
+	echo "  For persistent sound and network files use:"
+	echo "    --net                  generate /tmp/network_persistent.rules"
+	echo "    --sound                generate /tmp/sound_persistent.conf"
+	echo ""
+	echo "    --modules              show all detected MODULES"
+	echo "    --modules-not-loaded   show all detected MODULES but not actually loaded"
+	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
+
+# btrfs switch
+[ "$(echo $* | grep '\-btrfs')" ] && BTRFS=1
+
+# shutdown switch
+[ "$(echo $* | grep '\-shutdown')" ] && SHUTDOWN=1
+
+# hooks 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" = "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
+
+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 ""
+}
+
+showlist4() {
+	cat=$1 ; shift
+	[ $# -gt 0 ] || return
+	echo -n "$cat=(\${MODULES[*]} "
+	lsmod > /tmp/modules-showlist4-$$
+	for i in $*; do
+		if ! grep -sq $(echo $i|tr - _) /tmp/modules-showlist4-$$ ; then
+			echo -n "$i ";
+		fi
+	done
+	echo ")"
+	rm /tmp/modules-showlist4-$$
+}
+
+# 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 xhci-hcd) $(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)  : >/tmp/network_persistent.rules
+			for i in $(ls /sys/class/net/ | grep -v ^lo); do
+			      echo "SUBSYSTEM==\"net\", ATTR{address}==\"$(cat /sys/class/net/${i}/address)\", NAME=\"${i}\"" >>/tmp/network_persistent.rules
+			done
+
+			;;
+		--sound) : >/tmp/sound_persistent.conf
+			 SOUND_EXPORTED=""
+			 if [ -e /proc/asound/modules ]; then
+				for i in $(cat /proc/asound/modules | cut -d ' ' -f 3); do
+					SOUND_EXPORTED="$SOUND_EXPORTED $i"
+				done
+				! [[ "$SOUND_EXPORTED" = "" ]] && echo "options snd slots=$(echo $SOUND_EXPORTED | sed -e 's# #,#g' -e 's#^,##g')" >> /tmp/sound_persistent.conf
+			 fi
+			 ;;
+		--modules) showlist2 "MODULES" \($(listmods modules/)\) | sed -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g'
+			 ;;
+		--modules-not-loaded) showlist4 "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 fsck autodetect ide pata scsi sata usb fw pcmcia net dmraid usbinput $ADVANCED btrfs filesystems shutdown"
+			# 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
+			if ! [ "$SHUTDOWN" = "1" ]; then
+				START_HOOKS=$(echo $START_HOOKS | sed -e "s/shutdown//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:




More information about the arch-commits mailing list