SVN: geninitrd/trunk/geninitrd

glen glen at pld-linux.org
Thu Oct 19 15:39:03 CEST 2006


Author: glen
Date: Thu Oct 19 15:38:59 2006
New Revision: 7876

Modified:
   geninitrd/trunk/geninitrd
Log:
Make ext2 image size dynamic -- calculated at building time.

Modified: geninitrd/trunk/geninitrd
==============================================================================
--- geninitrd/trunk/geninitrd	(original)
+++ geninitrd/trunk/geninitrd	Thu Oct 19 15:38:59 2006
@@ -1045,25 +1045,7 @@
 	exit 1
 fi
 
-if [ "$INITRDFS" = "ext2" ] ; then
-	case "$(uname -m)" in
-	ia64|amd64|x86_64|sparc64)
-		IMAGESIZE=5000
-		;;
-	*)
-		IMAGESIZE=1500
-		;;
-	esac
-
-	dd if=/dev/zero of="$IMAGE" bs=1k count="$IMAGESIZE" 2> /dev/null
-	mke2fs -q -F -b 1024 -m 0 "$IMAGE" 2>/dev/null 1>&2
-	tune2fs -i 0 "$IMAGE" >/dev/null 2>&1
-
-	mkdir -p "$MNTPOINT"
-	mount -o loop -t ext2 "$IMAGE" "$MNTPOINT"
-else
-	mkdir -p "$MNTPOINT"
-fi
+mkdir -p "$MNTPOINT"
 
 
 mkdir -p "$MNTIMAGE"/{lib,bin,etc,dev,loopfs,var}
@@ -1463,6 +1445,21 @@
 
 case "$INITRDFS" in
 	ext2)
+		IMAGESIZE=$(du -ks $MNTPOINT | awk '{print $1 + 512}')
+		[ "$verbose" ] && echo "ext2 image size: $IMAGESIZE ($MNTPOINT)"
+		if [ "$IMAGESIZE" -gt 4096 ]; then
+			echo >&2 "$0: Your image size is larger than 4096, You should add ramdisk_size=$IMAGESIZE to your kernel commandline!"
+		fi
+
+		dd if=/dev/zero of="$IMAGE" bs=1k count="$IMAGESIZE" 2> /dev/null
+		mke2fs -q -F -b 1024 -m 0 "$IMAGE" 2>/dev/null 1>&2
+		tune2fs -i 0 "$IMAGE" >/dev/null 2>&1
+
+		tmpmnt="`mktemp -d /tmp/initrd.mnte2-XXXXXX`"
+		mount -o loop -t ext2 "$IMAGE" "$tmpmnt"
+
+		(cd "$MNTPOINT"; tar cf - .) | (cd "$tmpmnt"; tar xf -)
+
 		umount "$IMAGE"
 		;;
 	rom)


More information about the pld-cvs-commit mailing list