--- mkinitrd.cramfs	2003-11-17 07:05:23.601281682 +0100
+++ mkinitrd	2003-11-17 07:06:25.846787458 +0100
@@ -35,6 +35,7 @@
 MODULES=""
 img_vers=""
 builtins=""
+initrdfs="ext2"
 pivot=1
 modulefile=/etc/modules.conf
 tmpdir=
@@ -51,7 +52,7 @@
 IMAGESIZE=100
 POSTSCSIMODS="sd_mod"
 fstab="/etc/fstab"
-IGNOREMODS="$IGNOREMODS ppa imm ide-scsi ext2 usb-storage"
+IGNOREMODS="$IGNOREMODS ppa imm ide-scsi $initrdfs usb-storage"
 
 [[ -f /etc/sysconfig/bootsplash ]] && source /etc/sysconfig/bootsplash
 [[ -n $SPLASH ]] && splash=$SPLASH
@@ -62,7 +63,7 @@
     echo "usage: `basename $0` [--version] [-v] [-f] [--preload <module>]" >&2
     echo "       [--omit-scsi-modules] [--omit-raid-modules] [--omit-lvm-modules]" >&2
     echo "       [--with=<module>] [--image-version] [--fstab=<fstab>] [--nocompress]" >&2
-    echo "       [--builtin=<module>] [--nopivot] [--tmpdir=<tmpdir>]" >&2
+    echo "       [--builtin=<module>] [--initrdfs=<fs>][--nopivot] [--tmpdir=<tmpdir>]" >&2
     echo "       [--splash={auto,resolution}] [--dsdt[=<dsdt.aml>]]" >&2
     echo "       <initrd-image> <kernel-version>" >&2
     echo "" >&2
@@ -245,6 +246,15 @@
 	    builtins="$builtins $modname"
 	    ;;
 
+	--initrdfs*)
+	    if echo $1 | grep -q '=' ; then
+	    	initrdfs=`echo $1 | sed 's/^--initrdfs=//'`
+	    else
+		initrdfs=$2
+		shift
+	    fi		    
+	    ;;
+	    
 	--version)
 	    echo "mkinitrd: version $VERSION"
 	    exit 0
@@ -700,34 +710,45 @@
 
 chmod +x $RCFILE
 
-for i in `/bin/ls -sk $MNTIMAGE/*/* | sed 's/ [^ ]*$//'`; do
-    IMAGESIZE=$[IMAGESIZE + $i]
-done
-NB_INODES=20
-for i in `find $MNTIMAGE`; do NB_INODES=$[NB_INODES + 1]; done
-IMAGESIZE=$[IMAGESIZE + NBFILES / 10]  # 10 inodes needs 1k
+case $initrdfs in
+    ext2|ext3)
+	for i in `/bin/ls -sk $MNTIMAGE/*/* | sed 's/ [^ ]*$//'`; do
+	    IMAGESIZE=$[IMAGESIZE + $i]
+	done
+	NB_INODES=20
+	for i in `find $MNTIMAGE`; do NB_INODES=$[NB_INODES + 1]; done
+	IMAGESIZE=$[IMAGESIZE + NBFILES / 10]  # 10 inodes needs 1k
+
+	dd if=/dev/zero of=$IMAGE bs=1k count=$IMAGESIZE 2> /dev/null
+
+	if [ -n "$verbose" ]; then
+	    echo "Contents of RCFILE:"
+	    cat $RCFILE 2> /dev/null
+	    echo "Creating filesystem with size ${IMAGESIZE}KB and $NB_INODES inodes"
+	fi
+	
+	mke2fs -q -m 0 -F -N $NB_INODES -s 1 $IMAGE
 
-dd if=/dev/zero of=$IMAGE bs=1k count=$IMAGESIZE 2> /dev/null
+	mkdir -p $MNTPOINT
+	mount -t $initrdfs $IMAGE $MNTPOINT -o loop || {
+	    echo "Can't get a loopback device" >&2
+	    exit 1
+	}
 
-if [ -n "$verbose" ]; then
-    echo "Contents of RCFILE:"
-    cat $RCFILE 2> /dev/null
-    echo "Creating filesystem with size ${IMAGESIZE}KB and $NB_INODES inodes"
-fi
-mke2fs -q -m 0 -F -N $NB_INODES -s 1 $IMAGE
-
-mkdir -p $MNTPOINT
-mount -t ext2 $IMAGE $MNTPOINT -o loop || {
-    echo "Can't get a loopback device" >&2
-    exit 1
-}
+        # We don't need this directory, so let's save space
+	rm -rf $MNTPOINT/lost+found
 
-# We don't need this directory, so let's save space
-rm -rf $MNTPOINT/lost+found
+	(cd $MNTIMAGE; tar cf - .) | (cd $MNTPOINT; tar xf -)
+
+	umount $MNTPOINT;;
 
-(cd $MNTIMAGE; tar cf - .) | (cd $MNTPOINT; tar xf -)
+    cramfs)
+	mkfs.cramfs "$MNTIMAGE" "$IMAGE";;
 
-umount $MNTPOINT
+    *)
+	echo "Unsupported initrd fs ($initrdfs)."
+	exit 1;;
+esac
 
 if [ -n "$compress" ]; then
     gzip -9 < $IMAGE > $target || rc=1
