@ Wonko: It will be partitioned, like an HDD, and will have at least one partition (Linux EXT4), maybe also a swap partition. My plan is to use something like rsync to restore the root filesystem from a backup into an empty EXT4 inside the new IMG, thereby making a near-"clone" (at a filesystem level) of a current IMG which is already bootable. The reason for all this is that I haven't had any real luck syncing up an IMG to either my Dropbox or MEGA accounts, since every time a tiny bit of the file changes, the entire file is resynced (over 8GB!), rather than just the changed bytes. This must be due to the nature of the file, its' structure, etc. So I decided that backing up/restoring (online) at FS level might be more efficient. I also figured that syncing/backing up/restoring from IMG to IMG would also be an effective strategy.
My app, Linux Deploy, appears to use the dd command to create the IMG (on Android, not PC). From the logs when creating an example 2048MB/2GB IMG:
+ echo done
+ [ file = file ]
+ local file_size=0
+ [ -f /storage/sdcard0/linux.img ]
+ [ 2048 -eq 0 ]
+ let file_size=0/1048576
+ [ 2048 != 0 ]
+ msg -n Making new disk image (2048 MB) ...
+ echo -n Making new disk image (2048 MB) ...
+ expr 2048 - 1
Making new disk image (2048 MB) ... + dd if=/dev/zero of=/storage/sdcard0/linux.img bs=1048576 seek=2047 count=1
1+0 records in
1+0 records out
1048576 bytes (1.0MB) copied, 0.017460 seconds, 57.3MB/s
However, it doesn't allow me to just create an empty IMG then stop, instead it continues with the installation. I'm not sure how it determines the bs (blocksize), count, and seek values. So I figure it's best for now to just find a program that semi-automates the process, with me inputting just the desired size.