ppcrcd/trunk/initrd.dir/linuxrc

sparky cvs at pld-linux.org
Tue Jan 17 23:08:38 CET 2006


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
+


More information about the pld-cvs-commit mailing list