summaryrefslogtreecommitdiff
path: root/packages/altboot/files/altboot.func
diff options
context:
space:
mode:
authorMatthias Hentges <oe@hentges.net>2005-08-09 15:30:31 +0000
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>2005-08-09 15:30:31 +0000
commit7932f599f2e825c26e85a3ed5b713bc7c35b2ede (patch)
treef6a360059d75d70490c3a94278be4de32d94c709 /packages/altboot/files/altboot.func
parentf603ad225becb7149cfde643c3f868dd4db275db (diff)
altboot: Lots and lots of Spitz adjustments, courtesy of JustinP
Diffstat (limited to 'packages/altboot/files/altboot.func')
-rw-r--r--packages/altboot/files/altboot.func55
1 files changed, 45 insertions, 10 deletions
diff --git a/packages/altboot/files/altboot.func b/packages/altboot/files/altboot.func
index 260d0a977b..251368a577 100644
--- a/packages/altboot/files/altboot.func
+++ b/packages/altboot/files/altboot.func
@@ -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
+}