diff options
-rw-r--r-- | abs/core/hwdetect/PKGBUILD | 23 | ||||
-rwxr-xr-x | abs/core/hwdetect/hwdetect | 492 |
2 files changed, 313 insertions, 202 deletions
diff --git a/abs/core/hwdetect/PKGBUILD b/abs/core/hwdetect/PKGBUILD index 14fd6a9..e386628 100644 --- a/abs/core/hwdetect/PKGBUILD +++ b/abs/core/hwdetect/PKGBUILD @@ -1,18 +1,19 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 86895 2010-08-06 20:29:04Z tpowa $ # Maintainer: Tobias Powalowski <tpowa@archlinux.org> pkgname=hwdetect -pkgver=0.9 -pkgrel=10 +pkgver=2010.08 +pkgrel=1 pkgdesc="Hardware detection script with loading modules and mkinitcpio.conf / rc.conf support" -arch=(i686 x86_64) -license=('custom:none') -groups=('base') -backup=() -depends=('sh' 'awk' 'grep' 'coreutils' 'sed') +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) -md5sums=('bae2a26062c1ae8036b3a2173c8e3b51') build() { - install -D -m 755 $startdir/src/hwdetect $startdir/pkg/sbin/hwdetect + install -D -m 755 ${srcdir}/hwdetect ${pkgdir}/sbin/hwdetect } - +md5sums=('cece9e167bb240c82855ffc3f632a5bb') diff --git a/abs/core/hwdetect/hwdetect b/abs/core/hwdetect/hwdetect index 4991210..280cafa 100755 --- a/abs/core/hwdetect/hwdetect +++ b/abs/core/hwdetect/hwdetect @@ -16,6 +16,7 @@ usage () { 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" @@ -26,29 +27,35 @@ usage () { 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 " --hooks-dir use this directory for HOOKS check" - echo " --dsdt add dsdt to HOOKS=" - echo " --raid add raid to HOOKS=" - echo " --raid-partitions add raid-partitions to HOOKS=" - echo " --encrypt add encrypt to HOOKS=" - echo " --lvm2 add lvm2 to 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 @@ -61,37 +68,34 @@ usage () { # setting kernel version case $1 in --kernel_version=*) - KERNEL_VERSION="`echo $1 | awk -F= '{print $2;}'`" + 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`" + KERNEL_VERSION="$(uname -r)" fi # IDE/PATA switch [ "$(echo $* | grep '\-ide-legacy')" ] && IDE_LEGACY=1 -# dsdt switch -[ "$(echo $* | grep '\-dsdt')" ] && DSDT=1 - -# raid switch -[ "$(echo $* | grep '\-raid-partition')" ] && RAID_PARTITIONS=1 -if ! [ "$RAID_PARTITIONS" = "1" ]; then - [ "$(echo $* | grep '\-raid')" ] && RAID=1 -fi - -# encrypt switch -[ "$(echo $* | grep '\-encrypt')" ] && ENCRYPT=1 +# uvesafb switch +[ "$(echo $* | grep '\-uvesafb')" ] && UVESAFB=1 -# lvm2 switch -[ "$(echo $* | grep '\-lvm2')" ] && LVM2=1 +# dmraid switch +[ "$(echo $* | grep '\-dmraid')" ] && DMRAID=1 # keymap switch [ "$(echo $* | grep '\-keymap')" ] && KEYMAP=1 # usb switch -[ "$(echo $* | grep '\-usb')" ] && USB=1 +[ "$(echo $* | grep '\-usb ')" ] && USB=1 + +# usbinput switch +[ "$(echo $* | grep '\-usbinput')" ] && USBINPUT=1 # fw switch [ "$(echo $* | grep '\-fw')" ] && FW=1 @@ -102,9 +106,115 @@ fi # 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 @@ -115,9 +225,13 @@ fi : >/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 {} +` +aliases=$(find /sys/ -noleaf -name modalias -exec cat {} +) # check for empty aliases if [ "$aliases" = "" ]; then @@ -126,64 +240,42 @@ if [ "$aliases" = "" ]; then fi # generate files for the different actions -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 -# 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 +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 +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` +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 2>/dev/null >> /tmp/modules-plain 2>/dev/null - #[ "$devid" = "PNP0b00" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends rtc >> /tmp/modules-plain 2>/dev/null - [ "$devid" = "PNP0b00" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends rtc_proc 2>/dev/null >> /tmp/modules-plain 2>/dev/null - [ "$devid" = "PNP0b00" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends rtc_sysfs 2>/dev/null >> /tmp/modules-plain - [ "$devid" = "PNP0b00" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends rtc_dev 2>/dev/null >> /tmp/modules-plain - [ "$devid" = "PNP0510" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends irtty-sir 2>/dev/null >> /tmp/modules-plain 2>/dev/null - [ "$devid" = "PNP0511" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends irtty-sir 2>/dev/null >> /tmp/modules-plain 2>/dev/null - [ "$devid" = "PNPb02f" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends analog 2>/dev/null >> /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 2>/dev/null >> /tmp/modules-plain 2>/dev/null + [ "$devid" = "PNP0501" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends ppp-generic >> /tmp/modules-plain 2>/dev/null done 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 - # 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 +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 + 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 @@ -192,60 +284,44 @@ 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 - # Parport modules -if [ "`grep 'parport' /tmp/modules-plain`" ]; then +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 +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 +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 -# 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 - 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 "ata/" | \ + 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 "ieee1394/" >> /tmp/modules-sorted + 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 >> /tmp/modules-sorted + grep "ide/" /tmp/modules-stripped | grep -v "ide-pci-generic" >> /tmp/modules-sorted else - grep "ata/pata" /tmp/modules-stripped >> /tmp/modules-sorted - grep "ata/ata_generic" /tmp/modules-stripped >> /tmp/modules-sorted + 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 "sx8" | grep -v "nbd" | grep -v "pktcdvd" | grep -v "floppy" >> /tmp/modules-sorted +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 @@ -256,7 +332,8 @@ grep "usb/" /tmp/modules-stripped | grep -v "usb-storage" | grep -v "usbhid" | g grep "firewire/" /tmp/modules-stripped >> /tmp/modules-sorted grep "ieee1394/" /tmp/modules-stripped >> /tmp/modules-sorted -# add scsi device modules at the end +# 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 @@ -265,28 +342,6 @@ grep "/sg.ko" /tmp/modules-stripped >> /tmp/modules-sorted sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p" /tmp/modules-sorted >> /tmp/moduleslist -# blacklist framebuffer modules -for x in $(echo /lib/modules/$(uname -r)/kernel/drivers/video/*/*fb*); do - BLACKLIST="$BLACKLIST $(/usr/bin/basename $x .ko)" -done -for x in $(echo /lib/modules/$(uname -r)/kernel/drivers/video/*fb*); do - BLACKLIST="$BLACKLIST $(/usr/bin/basename $x .ko)" -done -# 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 - # since '-' and '_' are interchangeable, we have to cover both - if [ "`echo $i | grep '-'`" ]; then - i="`echo $i | sed 's|-|_|g'`" - sed -i -e "/^$i$/d" /tmp/moduleslist - elif [ "`echo $i | grep '_'`" ]; then - i="`echo $i | sed 's|_|-|g'`" - sed -i -e "/^$i$/d" /tmp/moduleslist - fi -done - listmods() { key=$1 ; shift ex= @@ -294,7 +349,7 @@ listmods() { [ "$ex" ] && ex="$ex|$1" || ex="$1" shift done - for ln in `grep "$key" /tmp/modules-sorted | sed 's|^insmod ||g'`; do + 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 @@ -333,82 +388,150 @@ while [ $# -gt 0 ]; do ;; --load-modules) # load all detected pci modules - for i in `cat /tmp/moduleslist`; do - modprobe $i > /dev/null 2>&1 + 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 + 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/` - 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 firewire/` `listmods ieee1394/` - showlist "NET " `listmods net/ irda/` - showlist "INPUT " `listmods input/` `listmods hid/` - 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/ acpi/ ide/ scsi/ message/fusion block/sx8 block/cciss block/cpqarray block/DAC960 ata/ usb/ ieee1394 net/ isdn/ input/ irda/ pcmcia/ sound/ video/ firewire/ hid/` + 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/` + showlist "MODULES ORDER" $(listmods modules/) ;; - --show-agp) showlist "AGP " `listmods agp/` ;; - --show-acpi) showlist "ACPI " `listmods acpi/` ;; - --show-ide) showlist "IDE " `listmods ide/` ;; - --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 firewire/` `listmods ieee1394/` ;; - --show-net) showlist "NET " `listmods net/ irda/` ;; - --show-input) showlist "INPUT " `listmods input/` `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 sound/` ;; - --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 ata/ usb/ ieee1394 net/ isdn/ input/ irda/ pcmcia/ sound/ video/ firewire/ hid/` ;; - --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' + --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' ;; - --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 - MODULES_EXPORTED="$MODULES_EXPORTED $(listmods drivers/net/ irda ppp_generic slhc` `listmods drivers/usb/net/)" - showlist2 "MODULES" \($MODULES_EXPORTED\) | sed -e 's/8139cp//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/)" - showlist2 "MODULES" \($MODULES_EXPORTED\) | sed -e 's/8139too//g' -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g' + 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/)" - showlist2 "MODULES" \($MODULES_EXPORTED\) | sed -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g' + 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 sound/)" - showlist2 "MODULES" \($MODULES_EXPORTED\) | sed -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g' + --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' + --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 udev dsdt autodetect ide pata scsi sata usb fw pcmcia net raid raid-partitions usbinput keymap encrypt lvm2 filesystems" + 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 @@ -421,36 +544,17 @@ while [ $# -gt 0 ]; do else START_HOOKS=$(echo $START_HOOKS | sed -e "s/ide//g") fi - # usbinput, check for usbhid - if ! [ "$(cat /proc/modules | grep usbhid)" ]; then + if ! [ "$USBINPUT" = "1" ]; 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 - if ! [ "${KEYMAP}" = "1" ]; then + if ! [ "$KEYMAP" = "1" ]; then START_HOOKS=$(echo $START_HOOKS | sed -e "s/keymap//g") - fi - 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 - if ! [ "$RAID_PARTITIONS" = "1" ] ; then - START_HOOKS=$(echo $START_HOOKS | sed -e "s/raid-partitions\ //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") + if ! [ "$UVESAFB" = "1" ]; then + START_HOOKS=$(echo $START_HOOKS | sed -e "s/v86d//g") fi - if ! [ "$LVM2" = "1" ]; then - START_HOOKS=$(echo $START_HOOKS | sed -e "s/lvm2//g") + 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") @@ -464,11 +568,17 @@ while [ $# -gt 0 ]; do if ! [ "$NFS" = "1" ]; then START_HOOKS=$(echo $START_HOOKS | sed -e "s/net//g") fi - if ! [ "$DSDT" = "1" ]; then - START_HOOKS=$(echo $START_HOOKS | sed -e "s/dsdt//g") + 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 |