As the title says, this script will repartition your sdcard so that you will have a FAT and an EXT2 partition. This is particularly useful for running apps off of the sdcard.
The app is called sdsplit, it has a strong focus on error prevention and recovery. Use at your own risk and please do let me know if you have any problems. As partitioning your card is inherently risky (especially if you are trying to preserve data from it), this script may help backup your data and any system config scripts which it modifies.
Instead of describing all of the features of the script, I will simply post the help message here since I spent a lot of time trying to make it comprehensive. The design of the script tries to make it easy for you to understand where a failure occurs if one does, and to pick up where you may have left off due to the failure after you work around it.
See the HowTo for Dummies for exact steps, but here is the general idea:
* Download sdsplit to your phone and give it execute permissions.
* Run script as root
* Do not run it from a subdirectory of /sdcard
* Run it with as few applications running as possible (to avoid having files open on the sdcard.)
The script logs its output to /data/sdsplit.log, please post the relevant bits from here if you encounter a problem and want help. But first, check out the FAQ for answers to most questions!!!
# sdsplit --help Usage(v1.7): sdsplit [options] 'sdsplit' will by default perform all of its default actions in sequence. Specifying a specific action will tell sdsplit to only perform that action and skip the others. You may instead prefix an action with 'no' to prevent that specific action from being performed while all the others are run. For debugging purposes, all output of sdsplit will be logged (appended) to /data/sdsplit.log PREREQUISITES: * This is desgined to work with the Jesus Freke updates (tested on JF1.43ADP/JF1.5). Here is why you need a JF update: for busybox, DNS, so the /init.rc invokes /system/init.rc, and so the ext2.ko module is under /system/modules/2.6.27-00392-g8312baf/kernel/fs/ext2. * If you are making a FAT partition greater than 2GB and have a pre1.5 android environment, you will likely need a new 'mkdosfs' executable or internet access from your phone so that sdsplit can download and install it for you. If a capable mkdosfs is not found somewhere in your path (or where specified by --pmkdosfs), sdsplit will attempt to download and install it for you from my repo. This executable came from a Haykuro 1.5 build. * Additionally, you will need a 'mke2fs' executable for arm-eabi or internet access from your phone so that sdsplit can download and install it for you. If mke2fs is not found somewhere in your path (or where specified by --pmke2fs), sdsplit will attempt to download and install it for you from my repo. I got this executable from here: http://sites.google.com/site/juanjosec/android ACTIONS: --backup|-b Perform a backup of the /sdcard directory to /data/sdcard --nobackup|-nb (See --pbackup) --config|-c Configure the system to handle a new ext2 partition on the --noconfig|-nc sdcard. This involves adding mount options to /system/init.rc and to /system/etc/mountd.conf along with creating the /system/sd mount point for the ext2 partition on (see --pext2). Backups of the original files will be made (.orig). You should use this for a JF1.5 build. --partition|-p Wipe the partition table of the sdcard and create two new --nopartition|-np partitions, first a 500M FAT32 one (see --fatsize) and then a Liunx one (for EXT2) on the remainder of the sdcard (see --ext2size). --mkfs|-mk Make the FAT32 (see --fat[16|32]) and EXT2 filesystems. (partitioning --nomkfs|-nm only allocates the space for them). This requires the mke2fs exectuable on the G1/ADP (see --pmke2fs). --restore|-r Restore the original sdcard backup from /data/sdcard back to /sdcard --norestore|-nr Along with the above actions there is one additional action if you do not care to save your original sdcard data: --nodata|-nd Equivalent to: --nobackup --norestore OPTIONS: -h|--help Usage (short) | Help (this) --forces|-f Force exectution without prompting up front --forcemkfs|-fm Force even if the mke2fs executable cannot be found and/or if the mkdosfs executable is not suitable for large partitions. --forceumount|-fu Force even if partition already mounted at /system/sd. Use with care, if you have an already existing EXT2 partition this will delete everything on it!! --fatsize|-fs SIZE[KM] Set the size of the FAT partition in bytes, K or M. (defaults to 500M) --ext2size|-es SIZE[KM] Set the size of the EXT2 partition in bytes, K or M. (default to the remainder) If you set this, it will not set the FAT parition to the remainder, it will remain 500M unless you explicitly set it to something else. The only reason to use this is if you want to leave space for another partition. --fat[16|32] Make the FAT partition of type 16 or 32. The default is 32 since 16 does not seem to work with my ADP. --pbackup|-pb PATH Set the location of the sdcard backup dir. --pmke2fs|-pme PATH Set the path to the mke2fs executable (if not already in your PATH.) --pmkdosfs|-pmd PATH Set the path to the mkdosfs executable (if not already in your PATH.) --pext2|-pe PATH Set the mount point for the new ext2 partition (defaults to /system/sd) COPYRIGHT: Martin Fick <firstname.lastname@example.org> GNU GPL2 or above
v1.7 2009-05-10 (usability improvements)
* Prompt on startup (confirm requested actions), use -f to override.
* Log invocation string to sdsplit.log
* Removed error when sdcard is empty
* If no ext2.ko is found output a message instead of an error.