altboot: Lots and lots of Spitz adjustments, courtesy of JustinP
authorMatthias Hentges <oe@hentges.net>
Tue, 9 Aug 2005 15:30:31 +0000 (15:30 +0000)
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>
Tue, 9 Aug 2005 15:30:31 +0000 (15:30 +0000)
packages/altboot/files/altboot-menu/Advanced/80-copyrootfs
packages/altboot/files/altboot.func
packages/altboot/files/init.altboot
packages/altboot/files/spitz/altboot-menu/00-Default
packages/altboot/files/spitz/altboot-menu/10-noGui
packages/altboot/files/spitz/altboot.cfg

index bac3663..1949f20 100644 (file)
@@ -1,7 +1,6 @@
 # !/bin/sh
 M_TITLE="Copy rootfs to SD/CF"
 
-exit 0
 
 die() {
        echo "ERROR: $1" >/dev/tty0
index 260d0a9..251368a 100644 (file)
@@ -139,22 +139,19 @@ pivot_image() {
 
        mkdir -p /media/image || die "mkdir -p /media/image failed"
 
-
-       if test "$FSCK_IMAGES" = yes
-       then
-               echo "Checking file system on [$IMAGE_NAME]"
-               losetup /dev/loop0 $1/$IMAGE_PATH/$IMAGE_NAME || die "losetup /dev/loop0 $1/$IMAGE_PATH/$IMAGE_NAME failed!"
-               fsck.ext3 -p /dev/loop0 || sleep 2
-               losetup -d /dev/loop0
-       fi                                              
+       echo "Setting up loopback (/dev/loop0) for $IMAGE_NAME"
+       losetup /dev/loop0 $1/$IMAGE_PATH/$IMAGE_NAME || die "losetup /dev/loop0 $1/$IMAGE_PATH/$IMAGE_NAME failed!"
+       check_fs /dev/loop0 $IMAGE_TYPE
 
        echo -e "\n* * * Booting rootfs image * * *\n"
 
 
        # Busybox's "mount" doesn't seem to like "-o loop" for some reason
        # It works on collie and b0rks on poodle.
-       losetup /dev/loop1 $1/$IMAGE_PATH/$IMAGE_NAME || die "losetup /dev/loop1 $1/$IMAGE_PATH/$IMAGE_NAME failed!"
-       mount /dev/loop1 /media/image || die "mount /dev/loop1 /media/image failed!"
+       if [ "$IMAGE_TYPE" = "" ]; then
+               $IMAGE_TYPE = "auto"
+       fi
+       mount -t $IMAGE_TYPE /dev/loop0 /media/image || die "mount /dev/loop0 /media/image failed!"
 
 
        mkdir -p /media/image/media/ROM || die "mkdir -p /media/image/media/ROM failed"
@@ -256,3 +253,41 @@ verify_master_pw() {
                done
        fi
 }
+
+
+check_fs() {
+       if [ "$FSCK_IMAGES" = "yes" ]
+       then
+                FSCK=""
+               if [ "$2" = "" ]; then
+                       FSTYPE="ext2"
+               else
+                       FSTYPE="$2"
+               fi
+               case "$FSTYPE" in
+               ext2 | ext3)
+                       if [ -e /sbin/fsck.ext3 ]; then
+                               FSCK="/sbin/fsck.ext3"
+                       elif [ -e /sbin/e3fsck ]; then
+                               FSCK="/sbin/e3fsck"
+                       elif [ -e /sbin/fsck.ext2 ]; then
+                               FSCK="/sbin/fsck.ext2"
+                       elif [ -e /sbin/e2fsck ]; then
+                               FSCK="/sbin/e2fsck"
+                       fi
+                       FSCK="$FSCK -p"
+               ;;
+               vfat)
+                   if [ -e /sbin/dosfsck ]; then
+                       FSCK="/sbin/dosfsck -a"
+                   fi
+               ;;
+               esac
+               if [ "$FSCK" = "" ]; then
+                       echo "Could not find fsck for $FSTYPE!"
+               else
+                       echo "Checking file system on $1"
+                       $FSCK $1 || sleep 2
+               fi
+       fi
+}
index 57560b8..26b4639 100644 (file)
@@ -252,7 +252,9 @@ else
 
        # Execute scripts in /etc/altboot.rc before doing anything else.
        # Required for special situations, like booting spitz
-       for file in `ls -1 /etc/altboot.rc/*.sh` >/dev/null 2>&1
+       RC_FILES=`ls /etc/altboot.rc | grep \\\\.sh$`
+
+       for file in $RC_FILES
        do
                 . $file >/dev/tty1 2>&1 || echo "/etc/altboot.rc/$file failed!"
        done
index c18633a..06ed038 100644 (file)
@@ -21,9 +21,14 @@ run_module() {
 
        # Note: Redirecting STDIN & STDOUT is required, cardmg will die otherwise
        cardmgr -o < /dev/tty0 > /dev/tty0 2>&1 || echo "cardmgr -o failed!"
+
+       check_fs $SPITZ_HDD_PART $SPITZ_HDD_TYPE
+       if [ "$SPITZ_HDD_TYPE" = "" ]; then
+               SPITZ_HDD_TYPE="auto"
+       fi
        
        # I've seen busybox die a horrible death on "!"...
-       if (mount -t auto $SPITZ_HDD_PART /media/hdd)
+       if (mount -t $SPITZ_HDD_TYPE $SPITZ_HDD_PART /media/hdd)
        then
                a=a
        else
@@ -35,7 +40,7 @@ run_module() {
        # with CF)
        for n in 1 2 3 4 5
        do
-               mknod /dev/loop$n b 7 $n
+               ! test -e /dev/loop$n && mknod /dev/loop$n b 7 $n
        done
        
        # Check for /sbin/init and / or loop-images     
index 3f1ce81..e4e8b0f 100644 (file)
@@ -33,7 +33,7 @@ run_module() {
        # with CF)
        for n in 1 2 3 4 5
        do
-               mknod /dev/loop$n b 7 $n
+               ! test -e /dev/loop$n && mknod /dev/loop$n b 7 $n
        done
        
        # Check for /sbin/init and / or loop-images     
index 7ae0770..2640d92 100644 (file)
@@ -4,9 +4,10 @@
 # the ROM. This is currently broken.
 ENABLE_ALTBOOT="yes"
 TIMEOUT="3"
-REAL_INIT="/sbin/init.sysvinit"
+REAL_INIT="/sbin/init"
 SH_SHELL="/bin/sh"
 IMAGE_PATH="boot-images"
+IMAGE_TYPE="ext3"
 FSCK_IMAGES="yes"
 SD_DEVICE="/dev/mmcda1"
 SD_KERNEL_MODULE="/media/hdd/lib/modules/2.4.20/kernel/drivers/block/sharp_mmcsd_m.o"
@@ -14,8 +15,13 @@ INIT_RUNLEVEL="5"
 NO_GUI_RL="2"
 MASTER_PASSWORD=""
 ASK_PW_ON_BOOT="no"
-SPITZ_HDD_PART="/dev/hda1"
 
 SD_MOUNTPOINT="/media/card"
 CF_MOUNTPOINT="/media/cf"
+HDD3_DEVICE="/dev/hda3"
+HDD3_MOUNTPOINT="/media/hdd3"
+HDD3_TYPE="vfat"
+
+SPITZ_HDD_PART="/dev/hda1"
+SPITZ_HDD_TYPE="ext3"