livecd-iso-to-xo for XO-1.5

Daniel Drake dsd at laptop.org
Thu Jun 4 12:27:20 UTC 2009


Hi,

Here's my initial attempt at an equivalent livecd-iso-to-xo.sh for the
XO-1.5. This involves a filesystem change to ext2 as we no longer have
raw flash access (right?).

Completely untested.

Open questions:
 1. What should the root= kernel parameter be?
 2. How would we distribute this to testers and developers?
    The resultant file is 4gb, albeit sparse. Maybe rsync can handle
    sparse files efficiently.
 3. How do we use OFW to flash this, including a partition table etc?

Daniel

-------------- next part --------------
#!/bin/bash

cleanup() {
    [ -d "$DISKMOUNT" ] && { umount $DISKMOUNT; rmdir $DISKMOUNT; }
    [ -d "$SQUASHMNT" ] && { umount $SQUASHMNT; rmdir $SQUASHMNT; }
    [ -d "$ISOMNT" ] && { umount $ISOMNT; rmdir $ISOMNT; }
    [ -d "$ROOT" ] && { umount $ROOT; rmdir $ROOT; }
}

exitclean() {
    echo "Cleaning up to exit..."
    cleanup
    exit 1
}

trap exitclean SIGINT SIGTERM

ISO=$(readlink -f "$1")
IMG=$(readlink -f "$2")

ISOMNT=$(mktemp -d /media/isotmp.XXXXXX)
mount -o loop,ro "$ISO" $ISOMNT || exitclean
SQUASHMNT=$(mktemp -d /media/squashtmp.XXXXXX)
mount -o loop,ro $ISOMNT/LiveOS/squashfs.img $SQUASHMNT || exitclean
DISKMOUNT=$(mktemp -d /media/disktmp.XXXXXX)
mount -o loop,ro $SQUASHMNT/LiveOS/ext3fs.img $DISKMOUNT || exitclean

echo "Create root filesystem..."
ROOT=$(mktemp -d /tmp/root.XXXXXX)

dd if=/dev/zero of=$IMG bs=1 count=1 seek=4G || exitclean
mke2fs -O dir_index -F $IMG || exitclean
mount -o loop $IMG $ROOT || exitclean

cp -a $DISKMOUNT/* $ROOT
cp $ISOMNT/isolinux/initrd0.img $ROOT/boot
cp $ISOMNT/isolinux/vmlinuz0 $ROOT/boot

if [ ! -e $ROOT/boot/olpc.fth ] ; then
    echo "no $ROOT/boot/olpc.fth - should have been added by whatever installed $ROOT/boot/vmlinuz*"
    exit 1;
fi

sed -i -e 's/rootfstype=jffs2/rootfstype=ext4/' $ROOT/boot/olpc.fth

echo "Done."
cleanup


More information about the Fedora-olpc-list mailing list