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"
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
+}
# 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
# 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
# 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
# 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"
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"