From 7932f599f2e825c26e85a3ed5b713bc7c35b2ede Mon Sep 17 00:00:00 2001 From: Matthias Hentges Date: Tue, 9 Aug 2005 15:30:31 +0000 Subject: altboot: Lots and lots of Spitz adjustments, courtesy of JustinP --- packages/altboot/files/altboot.func | 55 ++++++++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 10 deletions(-) (limited to 'packages/altboot/files/altboot.func') 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 +} -- cgit v1.2.3