Date: Fri, 5 Sep 2003 23:53:04 +0100 From: Colm MacCarthaigh To: ilug@linux.ie User-Agent: Mutt/1.3.28i Subject: [ILUG] cramfs + initrd + Linux = headache The Linux Kernel Developers are special people, they've broken cramfs as an initrd 3 times now since 2.4.18, and we decided to abandon it and now use ext2 initrd's for our Software RAID setups :) Unfortunately since Debian's nice mkinitrd command just makes cramfs by default you need to provide a program to take a directory and build an image. Just such a script for ext2 is attached, a new initrd can be made as; mkinitd -m `mkext2initrd %s %s` -r /dev/[thing is root] -o /your/initrd Or if you just replace mkcramfs with the script, or modify /etc/mkinitrd/mkinitrd.conf to match it's all good too. Posted in the hope it saves someone else a whole heap of headache. *waves hello if you're reading the archive and just got here from google* -- Colm MacC=E1rthaigh Public Key: colm+pgp@stdlib.net colm@stdlib.net http://www.stdlib.net/ #!/bin/bash # mkext2initrd directory imagename # # - Make an ext2 initrd, colm.maccarthaigh heanet.ie # Contains bashisms if [ ! -d "$1" -o -z "$2" ] ; then echo "usage: mkinitdrd directory imagename" exit 1 fi # get an idea of the current usage USAGE=`du -sb $1/ | awk '{print $1}'` IMAGE=`mktemp` # Create an empty file of the corresponding size + 20% if ! dd if=/dev/zero of=$IMAGE bs=1 count=$(( $USAGE + $(($USAGE / 5)) )) \ > /dev/null 2> /dev/null ; then echo "error creating $IMAGE" rm $IMAGE exit 1 fi # Create the filesystem if ! yes | mkfs.ext2 $IMAGE > /dev/null 2> /dev/null ; then echo "error creating filesystem on $IMAGE" rm $IMAGE exit 1 fi # Mount it over loopback if ! mount -oloop $IMAGE /mnt ; then echo "error mounting filesystem, $IMAGE" rm $IMAGE exit 1 fi # Tar stuff if ! tar -C $1 -cpf - ./ | tar -C /mnt -xpf - ; then echo "error untarring" rm $IMAGE exit 1 fi # umount if ! umount /mnt ; then echo "error unmounting" rm $IMAGE exit 1 fi # gzip if ! gzip -n -9 $IMAGE -c > $2 ; then echo "error compressing $IMAGE to $2" rm $IMAGE exit 1 fi # Remove the image rm $IMAGE Date: Sat, 6 Sep 2003 00:13:36 +0100 From: Colm MacCarthaigh To: Ronan Cunniffe Subject: Re: [ILUG] cramfs + initrd + Linux = headache Cc: ilug@linux.ie On Sat, Sep 06, 2003 at 12:02:25AM +0100, Ronan Cunniffe wrote: > Quoting Colm MacCarthaigh : > > > > The Linux Kernel Developers are special people, they've broken cramfs > > as an initrd 3 times now since 2.4.18, and we decided to abandon it and > > now use ext2 initrd's for our Software RAID setups :) > > > mkinitd -m `mkext2initrd %s %s` -r /dev/[thing is root] -o /your/initrd > > What's wrong with the usual loopback/ext2 scheme? What do you mean usual? The usual Debian way is to create a cramfs initrd, this script basically provides an ext2 over loopback scheme. So in that sense, there's nothing wrong with a lookback/ext2 scheme, this is one! All this script does is allow you to use one with Debian's mkinitrd, which handles all the nasty details of building a useful / directory, putting in the raidtools, creating a modules heirarchy and all that kind of messing about for you. -- Colm MacCarthaigh Public Key: colm+pgp@stdlib.net colm@stdlib.net http://www.stdlib.net/