How to optimize the cloning of a disk with a big empty ext3 partition?

Gregoire Gentil gregoire at gentil.com
Sun Jun 21 00:43:36 UTC 2009


I though about something like that. It's a trade-off between duplication
hassle (bear by me) vs. hassle for the user during the first boot. I'm
already some squashfs so it's a little bit the same point.

Thanks for the suggestion,

Grégoire


On Sat, 2009-06-20 at 09:00 +0100, Alex Bligh wrote:
> 
> --On 19 June 2009 16:42:54 -0700 Gregoire Gentil <gregoire at gentil.com> 
> wrote:
> 
> > I need to duplicate a huge number of identical 8GB SD cards on which I
> > have 1GB of data at the beginning of the disk on various partitions and
> > then a 7GB ext3 partition which is rather empty (just a few MB of data).
> >
> > The duplicator device enables me to select which sectors I can
> > binary-duplicate. I would love to divide by 8 my duplication time, by
> > duplicating only the first GB and then the beginning of the 7GB ext3
> > partition.
> 
> I am guessing here about your application, but how about:
> 
> 1. Leave the 7GB partition unformatted in the SD card image, set the
>    partition type in the partition table to a magic value
> 2. Make a gzip'd version of a disk image of that partition. Do this by
>    using a loopback file system on a file the size of the partition
>    which is initially full of a single magic byte/word. The resultant
>    file should be tiny as the image will be mostly blocks full of the
>    magic byte/word. Put this on another partition.
> 3. In the boot code for the device (I am assuming you can change that
>    or better still it is on the CF device), put a little bit of code
>    that
>    a) checks the partition table for the magic number, and if set,
>       do this:
>    b) mounts the partition with the gzip image, extracts it,
>       writes it (only writing blocks that are not full of the magic
>       byte/word, so the process will be quick) to the new partition,
>       then unmounts the partition with the gzip image so the boot
>       process can continue
>    c) change the partition table entry to ext3
>    d) continue the boot process
>    Of course this only happens on the first boot, and is only writing
>    a few Mb of data.
> 4. Only duplicate the first 1GB of the disk
> 
> The program described is a few tens of lines of C linked with zlib.
> It also gives you a relatively easy way to restore the partition
> if you should ever need to (change partition table magic number back,
> reboot). If this is the only r/w partition, that might be useful.
> 




More information about the Ext3-users mailing list