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='[31m'
+gre='[32m'
+yel='[33m'
+blu='[34m'
+end='[0m'
+
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