Author: sparky
Date: Tue Jan 17 23:08:26 2006
New Revision: 6837

Modified:
   ppcrcd/trunk/initrd.dir/linuxrc
Log:
- rewritten to be able to find more medias, only ide-cd tested


Modified: ppcrcd/trunk/initrd.dir/linuxrc
==============================================================================
--- ppcrcd/trunk/initrd.dir/linuxrc     (original)
+++ ppcrcd/trunk/initrd.dir/linuxrc     Tue Jan 17 23:08:26 2006
@@ -8,44 +8,95 @@
 $B/mount -n -t proc proc /proc
 $B/awk '/debug/ { exit 0 }; { exit 1 }' /proc/cmdline && set -x
 
+red=''
+gre=''
+yel=''
+blu=''
+end=''
+
 
 error() {
-       $B/echo "ERROR: $*"
+       $B/echo "${red}ERROR: $*${end}"
        $B/sh <$P/dev/console >$P/dev/console 2>&1
 }
 
 modload() {
+       $B/echo -n " ${blu}$1${end}"
        $B/insmod $P/lib/modules/$1.ko
+       $B/echo -n ".."
+}
+
+checkcd() {
+       FS=$1
+       $B/echo "${gre}*** Searching PPCRCD cdrom${end}"
+       for CD in $DRIVES; do
+               $B/echo -n "$CD.."
+               $B/mount -n -t $FS $P/dev/$CD /media/ppcrcd -r
+               if $B/test -f /media/ppcrcd/ppcrcd.sqf; then
+                       $B/echo "    Found: /dev/$CD"
+                       FOUND=$CD
+                       break   # it's it !
+               fi
+               $B/umount /media/ppcrcd 2>/dev/null
+       done
 }
 
 findcd() {
-       $B/echo "*** Loading modules"
-       for MOD in scsi_mod sd_mod via82cxxx ide-generic cdrom ide-cd sr_mod 
nls_base isofs; do
+       $B/echo "${gre}*** Checking for IDE cdrom${end}"
+       $B/echo "Loading modules:"
+       for MOD in via82cxxx ide-generic cdrom ide-cd nls_base isofs; do
                modload $MOD
        done
+       $B/echo
        
        # check do we have cdrom info file
        $B/test -e /proc/sys/dev/cdrom/info  || error "Can't find CDROM"
        
-       $B/echo "*** Searching PPCRCD cdrom"
        # for each cd drive try to mount
        DRIVES=`$B/awk '/drive name:/ { gsub(/drive name:/,""); print }' 
/proc/sys/dev/cdrom/info`
-       for CD in $DRIVES; do
-               $B/mount -n -t iso9660 $P/dev/$CD /media/ppcrcd -r
-               if $B/test -f /media/ppcrcd/ppcrcd.sqf; then
-                       $B/echo "    Found: /dev/$CD"
-                       break   # it's it !
-               fi
-               $B/umount /media/ppcrcd 2>/dev/null
-       done
+       FOUND=""
+       checkcd iso9660
+       if $B/test -z "$FOUND"; then
+               $B/echo "Not found"
+               $B/echo "${gre}*** Checking for SCSI cdrom${end}"
+               $B/echo "Loading modules:"
+               for MOD in scsi_mod sr_mod mesh mac53c94; do
+                       modload $MOD
+               done
+               $B/echo
+               DRIVES=`$B/awk '/drive name:/ { gsub(/drive name:/,""); 
gsub(/hd[a-h]/,""); print }' /proc/sys/dev/cdrom/info`
+               FOUND=""
+               checkcd iso9660
+       fi
+
+       if $B/test -z "$FOUND"; then
+               $B/echo "Not found"
+               $B/echo "${gre}*** Checking USB storage and hard drives${end}"
+               $B/echo "Loading modules:"
+               for MOD in sd_mod usbcore ohci-hcd ehci-hcd usb-storage \
+                               hfs fat vfat; do
+                       modload $MOD
+               done
+               $B/echo
+               DRIVES=`$B/awk '/[hs]d[a-z][1-9]/ {gsub(/[0-9]+ +/,""); print}' 
/proc/partitions`
+               FOUND=""
+               checkcd hfs
+               $B/test -n "$FOUND" || checkcd vfat
+               $B/test -n "$FOUND" || checkcd fat
+               
+       fi
+       
+       if $B/test -z "$FOUND"; then
+               error "Can't find PPCRCD device"
+       fi
 
-       $B/echo "*** Preparing root filesystem"
-       $B/test -f /media/ppcrcd/ppcrcd.sqf || error "Can't find CDROM"
+       $B/echo "${gre}*** Preparing root filesystem${end}"
+       $B/test -f /media/ppcrcd/ppcrcd.sqf || error "Can't find PPCRCD image"
 }
 
 ### MEMTEST #####################################
 if $B/awk '/memtest/ { exit 0 }; { exit 1 }' /proc/cmdline; then
-       $B/echo "***** Preparing memtest *****"
+       $B/echo "${yel}***** Preparing memtest *****${end}"
        
        findcd
        
@@ -55,13 +106,14 @@
        $B/umount /proc
        cd /rootfs
        $B/pivot_root . initrd
-       $B/echo "*** Executing script"
+       $B/echo "${yel}*** Executing memtest script${end}"
        exec /usr/sbin/chroot . /usr/lib/ppcrcd/memtest <dev/console 
>dev/console 2>&1
 fi
 
 $B/umount /proc
 
 ### NORMAL ######################################
+$B/echo "${yel}***** Preparing root *****${end}"
 
 # Prepare our new root
 mount -n -t tmpfs none /rootfs
@@ -82,39 +134,39 @@
 
 # prepare loop and mount
 if $B/awk "/tomempost/ { exit 0 }; { exit 1 }" /proc/cmdline; then
-       $B/echo "*** Copying ppcrcd.sqf image"
+       $B/echo "${gre}*** Copying ppcrcd.sqf image${end}"
        $B/cat /media/ppcrcd/ppcrcd.sqf > /ppcrcd.sqf
        $B/losetup $P/dev/loop7 /ppcrcd.sqf || error "Can't setup loop device"
        TOMEM="yes"
 else
-       $M/losetup $P/dev/loop7 /media/ppcrcd/ppcrcd.sqf || error "Can't setup 
loop device"
+       $B/losetup $P/dev/loop7 /media/ppcrcd/ppcrcd.sqf || error "Can't setup 
loop device"
 fi
-$B/ mount -n -t squashfs $P/dev/loop7 /live -r || error "Can't mount loop 
device"
+$B/mount -n -t squashfs $P/dev/loop7 /live -r || error "Can't mount loop 
device"
 
 # link ro dirs
 for f in boot lib bin usr sbin; do
        $B/mount -n -t none -o bind live/$f $f
 done
 
-$B/echo "*** Preparing RW directories"
+$B/echo "${gre}*** Preparing RW directories${end}"
 # cp rw files
-cp -a /live/etc/skel /root
-chmod -R +w /root
-chmod +x /root/.bash*
-ln -s /usr/share/doc/ppcrcd /root/ppcrcd.doc
-cp -a /live/etc /etc
-chmod -R +w /etc
-cp -a /live/var /var
-chmod -R +w /var
-cp -a /live/dev /dev
-chmod -R +w /dev
-touch /fastboot
+/bin/cp -a /live/etc/skel /root
+/bin/chmod -R +w /root
+/bin/chmod +x /root/.bash*
+/bin/ln -s /usr/share/doc/ppcrcd /root/ppcrcd.doc
+/bin/cp -a /live/etc /etc
+/bin/chmod -R +w /etc
+/bin/cp -a /live/var /var
+/bin/chmod -R +w /var
+/bin/cp -a /live/dev /dev
+/bin/chmod -R +w /dev
+/bin/touch /fastboot
 
 if $B/test -n "$TOMEM"; then
        /bin/umount /media/ppcrcd
        /bin/rmdir /media/ppcrcd
 else
-       /bin/echo "/dev/$CD /media/ppcrcd iso9600 owner,noauto,ro 0 0" >> 
/etc/fstab
+       /bin/echo "/dev/$CD /media/ppcrcd $FS owner,noauto,ro 0 0" >> /etc/fstab
        /bin/mount -f /media/ppcrcd
 fi
 /bin/mount -f /
@@ -125,6 +177,7 @@
 #/bin/umount /initrd
 #/sbin/blockdev --flushbufs /dev/ram0 >/dev/null 2>&1
 
-/bin/echo "*** Starting"
+/bin/echo "${yel}*** Starting${end}"
 
 exec /usr/sbin/chroot . /sbin/init <dev/console >dev/console 2>&1
+
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to