From 78365fe57d61645c1b8282784d863a0cd8537eb5 Mon Sep 17 00:00:00 2001 From: Judd Vinet Date: Tue, 29 Nov 2005 01:26:11 +0000 Subject: finished crypttab work, fixed a bug in hwdetect related to custom kernels --- hwdetect | 19 ++++++++++++------- rc.sysinit | 18 +++++++++++++++--- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/hwdetect b/hwdetect index 5109a0a..d99813a 100755 --- a/hwdetect +++ b/hwdetect @@ -76,9 +76,10 @@ fi # find PNP devices like parports, soundcards etc. # (workaround for rtc, pcspkr, irtty-sir and analog are included) -if [ "`find /sys -name 'id' | grep pnp`" ]; then - for i in `find /sys -name "id" | grep pnp`; do +if [ "`find /sys/devices -name 'id' | grep /pnp`" ]; then + for i in `find /sys/devices -name "id" | grep /pnp`; do devid=`cat $i | grep PNP` + [ "$devid" ] || continue modprobe -i --show-depends pnp:d${devid} >> /tmp/modules-plain 2>/dev/null @@ -123,7 +124,8 @@ fi # Modem devices case $i in (Intel536|Intel537|ltmodem|ltserial|slarm|slusb) \ -grep "$i" /tmp/modules-plain && modprobe -i --show-depends ppp-generic >> /tmp/modules-plain 2>/dev/null ;; esac + grep "$i" /tmp/modules-plain && modprobe -i --show-depends ppp-generic >> /tmp/modules-plain 2>/dev/null ;; \ + esac # Parport modules if [ "`grep 'parport' /tmp/modules-plain`" ]; then @@ -147,9 +149,11 @@ if [ "`grep 'usb/' /tmp/modules-plain`" ]; then fi sort -u /tmp/modules-plain >> /tmp/modules-stripped -# OTHER modules loading first for speedup! -grep -v "ide/" /tmp/modules-stripped | grep -v "scsi/" | grep -v "ata" | grep -v "net/" | grep -v "pcmcia/" \ -| grep -v "usb/" | grep -v "ieee1394/" >> /tmp/modules-sorted +# OTHER modules loading first for speed up! +grep -v "ide/" /tmp/modules-stripped | grep -v "scsi/" | grep -v "ata" | \ + grep -v "net/" | grep -v "pcmcia/" | grep -v "usb/" | \ + grep -v "ieee1394/" >> /tmp/modules-sorted + # make a correct order for the modules, internal devices have priority! grep "ide/" /tmp/modules-stripped >> /tmp/modules-sorted grep "scsi/" /tmp/modules-stripped | grep -v "sata" | grep -v "libata" | grep -v "ata_piix" >> /tmp/modules-sorted @@ -157,7 +161,8 @@ grep "ata" /tmp/modules-stripped | grep -v "eata" >> /tmp/modules-sorted grep "net/" /tmp/modules-stripped | grep -v "wireless/" | grep -v "usb/" >> /tmp/modules-sorted grep "wireless/" /tmp/modules-stripped >> /tmp/modules-sorted grep "pcmcia/" /tmp/modules-stripped >> /tmp/modules-sorted -# speedup usb module loading + +# 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 diff --git a/rc.sysinit b/rc.sysinit index 80fb625..09a1e2a 100755 --- a/rc.sysinit +++ b/rc.sysinit @@ -65,7 +65,7 @@ if [ -f /etc/crypttab ]; then while read line; do [ "$line" = "" ] && continue [ "`echo $line | grep ^#`" ] && continue - # remove redundant whitespace + # remove redundant whitespace and split up tokens line=`echo $line | awk '{print $0}'` cname=`echo $line | cut -d' ' -f1` csrc=`echo $line | cut -d' ' -f2` @@ -76,9 +76,21 @@ if [ -f /etc/crypttab ]; then $CS isLuks $csrc 2>/dev/null && action=luksOpen if [ "`echo $cpass | grep \\\"`" ]; then - echo "echo $cpass | $CS $action $cname $csrc" + # Trim off the quotes around the password string + cpass2=`echo $cpass | sed -e 's|^"||' -e 's|"$||'` + # For some fun reason, the parameter ordering varies for + # LUKS and non-LUKS devices. Joy. + if `$CS isLuks $csrc 2>/dev/null`; then + echo "$cpass2" | $CS luksOpen $csrc $cname >/dev/null + else + echo "$cpass2" | $CS create $cname $csrc >/dev/null + fi else - echo "$CS -d $cpass $action $cname $csrc" + if `$CS isLuks $csrc 2>/dev/null`; then + $CS -d $cpass luksOpen $csrc $cname >/dev/null + else + $CS -d $cpass create $cname $csrc >/dev/null + fi fi done