[Tutorial/HOWTO] Convert Your External SD Card from FAT/exFAT to EXT4! (3 ways!)
I was looking for a similar guide to link to my friend but didn't find anything, so I decided to write my own.
Personally I didn't find any good guide regarding partitioning from android itself, so I think it's also more unique guide because you can easily make your own partition layout without using PC at all.
Why I should use EXT4 instead of FAT/exFAT?
1. We're running Android, Android is based on Linux. EXT4 is native linux-proposed filesystem, while FAT/exFAT is not.
2. All our internal partitions (/efs /data /system /cache /preload) use ext4, natively.
3. CM has poor exfat support, while fat32 is not recommended for big file systems (over 2 GB) because it doesn't work well with them, thus microsoft implemented exfat.
4. EXT4 has better stability and performance, especially on Android devices, compared to exfat and fat.
When you should not use ext4 over fat/exfat?
- When you for whatever reason use your external sd card in windows environment physically. Android works in MTP mode, you'll use your ext4 external sd card the same way as you use internal one under windows. But if you for whatever reason puts your external sd card f.e. in usb adapter connected with windows then it won't work. So yeah, if you keep your external sd card in your phone then you're fine.
Expert Way (Requires fdisk/mke2fs utilities (busybox), works always):
1. Launch any terminal from Android environment (f.e. Android Terminal Emulator or adb shell through PC)
2. Make sure you have root (su command)
3. Make sure you have all required utilities. Type fdisk --help and mke2fs --help, both commands should print usage. If you get "command not found" then you don't have required utilities. Either install Busybox or CM-Based ROM with native busybox support (tested on ArchiDroid 2.X)
4. Unmount your external sd card (umount /storage/sdcard1)
5. Launch fdisk partitioning program on your external sd card (fdisk /dev/block/mmcblk1)
6. Destroy partition table (o), create new partition (n), make sure it's primary (p) and first one (1).
7. You can check if you're satisfied with your partition layout (p). When you're done exit and save changes (w)
8. Create ext4 filesystem on your partition (mke2fs -t ext4 /dev/block/mmcblk1p1)
Android should automatically detect and mount external sd card in ext4 after reboot.
Here you can find a short movie which shows going through expert way recorded by me
Intermediate Way (Requires USB Adapter and some patience, should work like a charm):
1. You'd need USB Adapter or any device which can read micro sd cards on PC
2. Open any linux-supported partitioning program (f.e. partition magic, gparted, parted), it needs to support ext4.
3. Delete all partitions from your external SD Card (typically, one fat/exfat) and create one ext4 partition.
4. In case you'd also want hardswap create 2 partitions, one primary ext4 one and second primary swap one.
Newbie Way (Requires PhilZ Touch Recovery, may not work):
1. Launch PhilZ Touch Recovery
2. Select "Mounts & Storage" => "format /external_sd"
3. Select "ext4" as a filesystem
4. Please note that it can take some time. This way you should get running ext4 filesystem, but personally I didn't test this method, as I prefer more advanced ones .
This guide is more or less universal but I'm using sgs3 external sd card paths so I want to make sure nobody bricks other phones . Personally I suggest using expert way, as it's probably the easiest one.
Hi, thanks for te help, but now a have a 1 gb lost by system data or 0.8gb if i disable the journaling, that is right??? Thanks
It depends on your rom and also if you created ext4 properly. I've formatted my 2 GB SD Card to EXT4 and I got 1,80 GB free (yes with journaling). This is because 5%-10% is reserved for "super blocks". Read more -> http://en.wikipedia.org/wiki/Ext4
XDA Developers was founded by developers, for developers. It is now a valuable resource for people who want to make the most of their mobile devices, from customizing the look and feel to adding new functionality. Are you a developer?